View Full Version : refresh کردن query
فرهاد.ف
دوشنبه 30 آبان 1384, 09:04 صبح
سلام به همه دوستان خوب برنامهنویس.
معمولا برای refresh کردن باید query رو باز و بسته کرد تا اطلاعات جدید رو به روز داشته باشیم ولی چند تا اشکال داره اول اینکه DBGrid ما چشمک میزنه دوم اینکه Cursor ما میره اول دیتابیس و یک سری اشکالات دیگه.
میخواستم ببینم که راه دیگری برای refresh کردن query هست یا نه؟
اگه نیست چجوری رو رکوردی که قبلا بودیم موقع بستن و باز کردن دوباره رو همون رکورد باشیم؟
در ضمن بانک من sqlserver2000است.
اَرژنگ
دوشنبه 30 آبان 1384, 09:25 صبح
این کد را امتحان کنید
(فرز میکنیم یک فیلد یونیک id وجود داره)
var
id:integer;
curid := Query1.Filds['id];
Query1.ControlsDisabled := true;
Query1.Refresh;
Query1.Locate( 'id' , id , [] )
Query1.ControlsDisabled := false;
Kamyar.Kimiyabeigi
دوشنبه 30 آبان 1384, 11:30 صبح
شما میتونین از Bookmark ها استفاده کنین
procedure TForm1.Button1Click(Sender: TObject);
var
Point: TBookmark;
begin
Point := ADOTable1.GetBookmark;
ADOTable1.Close;
ADOTable1.Open;
ADOTable1.GotoBookmark(Point);
end;
موفق باشین
سید مسعود موحد
دوشنبه 30 آبان 1384, 14:20 عصر
دوست عزیز
برای باقی موندن در رکورد جاری باید از BOOkMark ها استفاده کنی که البته در هنگام خاموش و روشن کردن Query کاربردی ندارد
Kamyar.Kimiyabeigi
دوشنبه 30 آبان 1384, 14:34 عصر
دوست عزیز
برای باقی موندن در رکورد جاری باید از BOOkMark ها استفاده کنی که البته در هنگام خاموش و روشن کردن Query کاربردی ندارد
bookmark ها در واقع اشاره گر هستند و زمانی که به انها مقدار میدین حتی بعد از Close و Open کردن Query می تونین به اون Pointer بوسیله Bookmark رجوع کنین (در اصل کار Bookmark همینه) به مثال بالا توجه کنین
فرهاد.ف
سه شنبه 01 آذر 1384, 08:06 صبح
سلام، با تشکر از توجه شما دوستان.
وقتی از Bookmark استفاده میکنم به من Error میده، میگه:Can not found record .
دوماَ راه دیگری برای Refresh کردن Query نیست؟ که نخواهیم Close,Open کنیم؟
سید مسعود موحد
سه شنبه 01 آذر 1384, 08:39 صبح
bookmark ها در واقع اشاره گر هستند و زمانی که به انها مقدار میدین حتی بعد از Close و Open کردن Query می تونین به اون Pointer بوسیله Bookmark رجوع کنین (در اصل کار Bookmark همینه) به مثال بالا توجه کنین
دوست عزیز
منم در جیان هستم که BookMark ها بصورت Pointer کار میکنند ولی وقتی که Query خاموش و روشن میشود محل آن در حافظه عوض میشود و آدرس قبلی دیگر معتبر نمیباشد
m-khorsandi
سه شنبه 01 آذر 1384, 08:39 صبح
میتونید از Requery استفاده کنید.
vcldeveloper
سه شنبه 01 آذر 1384, 08:59 صبح
استفاده از Bookmark چندان منطقی نیست؛ در صورتی که بعد از Refresh کردن Dataset رکوردی قبل از رکورد Bookmark شده اضافه یا حذف بشه، مقدار Bookmark نامعتبر میشه و قابل استفاده نیست!
بهتره یک فیلد ID داشته باشید و قبل از انجام Refresh مقدار فیلد ID رکورد جاری را در یک متغیر ذخیره کنید و پس از Refresh با استفاده از Locate رکورد جاری را تنظیم کنید.
راه حل دیگه اینه که خصوصیت CursorType را روی ctDynamic تنظیم کنید؛ البته DBMS شما باید حتما این حالت را پشتیبانی کنه، در غیر این صورت در زمان فعال شدن Dataset این خصوصیت بصورت خودکار تغییر خواهد کرد!
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.