ورود

View Full Version : بعد refresh چگونه به رکوردی که قبلا بودم بروم



ali_abbasi22145
شنبه 25 آذر 1385, 21:47 عصر
سلام
1-من با adotable1.requery بانک خود refresh می کنم حال بعد refresh چگونه به رکوردی که قبلا بودم بروم ظاهرا bookmark یا چیزی شبیه این وجود دارد.
2-در شبکه روی رکوردی که من بودم شخص دیگر آن را پاک کند حال می خواهم به نزدیکترین رکورد قبلی بخواه بروم چه کدی باید نوشت؟

مهم برایم مشکل اول است اگر دومی را حل نکردید زیاد مهم نیست!

soroush_vs
شنبه 25 آذر 1385, 22:28 عصر
با استفاده از ADOTABLE1.RecNo شماره رکورد را بگیرید سپس اقدام به بازیابی اطلاعات نمایید.
سپس به رکورد اولیه بازگردید
در این صورت اگر رکورد اولیه هم پاک شود با رفتن به شماره رکوردی که از قبل در حافظه دارید اتوماتیک به رکورد نزدیک رکورد حذف شده خواهید رفت

MNosouhi
شنبه 25 آذر 1385, 22:41 عصر
1-من با adotable1.requery بانک خود refresh می کنم حال بعد refresh چگونه به رکوردی که قبلا بودم بروم ظاهرا bookmark یا چیزی شبیه این وجود دارد.

.......
Bok : TBookmarkStr;
//........Bookmark.......
Bok:=Table1.Bookmark;
//.................setbookmark.......
Table1.Bookmark := Bok;


2-در شبکه روی رکوردی که من بودم شخص دیگر آن را پاک کند حال می خواهم به نزدیکترین رکورد قبلی بخواه بروم چه کدی باید نوشت؟
فکر نکنم راه حل مستقیمی باشه ، باید خودت یه کلکی بزنی ، مثلا به جای اینکه فقط یک رکورد رو علامت بزنی ، 2 تا رکورد را علامت بزنی ، بعد اگر بعد از بازیابی رکورد اول حذف شده بود از علامت دوم استفده کنی.

ali_abbasi22145
دوشنبه 27 آذر 1385, 08:46 صبح
سلام
متشکر از جوابتان اما ظاهرا bookmark یا چیزی شبیه به این را دلفی دارد کسی کدش را می داند؟

حرفه ای
دوشنبه 27 آذر 1385, 08:59 صبح
تابع RecNo تابع خوبیه
می تونی داخل tag یا یک متغیر بریزی بعد با دستور RecNo=tag به رکورد مورد نظر بری

MNosouhi
دوشنبه 27 آذر 1385, 09:52 صبح
متشکر از جوابتان اما ظاهرا bookmark یا چیزی شبیه به این را دلفی دارد کسی کدش را می داند؟
کدش رو که در پست قبلی برلتون گذاشتم.

ali_abbasi22145
سه شنبه 28 آذر 1385, 11:53 صبح
کدش رو که در پست قبلی برلتون گذاشتم.

سلام
من قبلا از شما تقاضای ندادم لطفا لینکش را اینجا بگذارید.

MNosouhi
سه شنبه 28 آذر 1385, 12:08 عصر
سلام
من قبلا از شما تقاضای ندادم لطفا لینکش را اینجا بگذارید.
منظورتون رو متوجه نمیشم.
جوابتون رو در اولین پستم ، در همین صفحه داده ام.

ali_abbasi22145
سه شنبه 28 آذر 1385, 12:35 عصر
سلام
لینک آن جواب را می خواهم! همین!

حرفه ای
سه شنبه 28 آذر 1385, 15:15 عصر
bookmark ها پیشنهاد توپیه آقا از RecNo هم بهتره

ابتدا تعریف یک متغیر از نوع bookmark
متغیر مساوی است با Table یا AdoTable یا ClientDataset
و بعد از Insert یا delete یا Update ،
Table یا AdoTable یا ClientDataset مساوی است با متغیر

:متفکر: :متفکر: :متفکر: :متفکر: :متفکر: :متفکر: :متفکر: :متفکر:

skd6960357
چهارشنبه 29 آذر 1385, 08:35 صبح
سلام از کد زیر استفاده کن
bookmark1:Tbookmark;
و دو تابع
getbookmark,Gotobookmark

ali_abbasi22145
چهارشنبه 29 آذر 1385, 08:43 صبح
سلام
یکی کد فقط رفرش را ظاهرا گذاشته بود و من آن را می خواهم.

MNosouhi
چهارشنبه 29 آذر 1385, 09:37 صبح
سلام
یکی کد فقط رفرش را ظاهرا گذاشته بود و من آن را می خواهم.
فکر کنم ما منظورت رو درست متوجه نشده ایم ، یا شما منظورت رو درست بیان نمی کنی ، چون که جواب شما رو من و چند نفر از دوستان گفتیم و همه هم یک چیز رو گفتیم (فقط طرز بیانمون فرق داشت).
مشکل کجاست؟ لطفا بیشتر توضیح دهید.

ali_abbasi22145
چهارشنبه 29 آذر 1385, 15:57 عصر
فکر کنم ما منظورت رو درست متوجه نشده ایم ، یا شما منظورت رو درست بیان نمی کنی ، چون که جواب شما رو من و چند نفر از دوستان گفتیم و همه هم یک چیز رو گفتیم (فقط طرز بیانمون فرق داشت).
مشکل کجاست؟ لطفا بیشتر توضیح دهید.

سلام
من می خواهم روی رکورد 128 هستم وقتی رفرش کردم دوباره روی رکورد 128 بروم همین.
با دستورات زیر کارم جواب می دهد ولی اگر من روی رکورد آخر باشم و کاربر دیگر در شبکه رکورد آخر را پاک کند error می دهد که Bookmark پیدا نکرد.


Bookmark1:=MainForm.ADOTable1.GetBookmark;
MainForm.ADOTable1.Requery;
MainForm.ADOTable2.Requery;
MainForm.ADOTable4.Requery;
MainForm.ADOTable1.GotoBookmark(Bookmark1);

soroush_vs
چهارشنبه 29 آذر 1385, 16:07 عصر
اگر از RecNo استفاده کنید با Error مواجه نخواهید شد

mzjahromi
پنج شنبه 30 آذر 1385, 07:27 صبح
اگر از RecNo استفاده کنید با Error مواجه نخواهید شد
اگر در این فاصله رکوردی قبل از اون رکورد درج شده باشد چی؟

ali_abbasi22145
پنج شنبه 30 آذر 1385, 08:43 صبح
اگر از RecNo استفاده کنید با Error مواجه نخواهید شد
سلام
اگر RecNo استفاده کنم و تعداد رکورد مثلا 1000 شد و شخص دیگر در شبکه 10 رکورد را پاک کرد در این زمان که error می دهد!!!
لطفا کد مورد نظر را بنویسید تا تست کنم.

arshia_
سه شنبه 12 دی 1385, 07:48 صبح
من فکر می کنمbookmark ,recno در یه صورت روش مناسبی نباشد
اگر ما از پرس و جو استفاده کنیم ممکن است فرمان اس کیو ال ما محدود به بازه خاصی از رکوردها باشد
به عنوان مثال
select * from table1 where idno>128
و مثلا شماره رکورد مورد نظر ما در این پرس و جو 12 باشد ولی آیا واقعا در محل اصلی بانک 12 است؟
select * fromn table1
در این مثال ممکن است محل اصلی 219 باشد.در ضمن همانطور که دوست ما اشاره کردند بعد از انجام عملیات حذف یا درج رکورد مورد نظر ممکن است جابجا شود
حتی در این حالت bookmark هم جواب نمی دهد
آیا روشی وجود دارد که بدون نیاز به دستورات اضافی براحتی رکورد مورد نظر را تعیین کرد؟
یعنی حتی اگر پرس و جو هم انجام شد براحتی محل اصلی داده در بانک تعیین شود؟
شاید راحترین راه ذخیره فیلد یا فیلدهای کلیدی ما در یک متغیر باشد که بعد با استفاده از دستور locate میتوانیم رکورد قبل یا بعد از آن را بازیابی کنیم


dm.TableP.Locate('fieldname',filedvalue,[]);