PDA

View Full Version : سوال: چگونگی دسترسی به مقدار یک فیلد سطر قبلی در DBGrid



rezamahdizadeh
دوشنبه 16 اردیبهشت 1387, 11:39 صبح
چگونه می شود به مقدار فیلد خاصی ار سطر بالای سطر جاری در DBGrid دسترسی داشت؟ مثلا در شکل ضمیمه شده مطابق شکل مقدار فیلد Department سطر بالای سطر جاری مقدار Sales and Marketing را می خواهیم

SYNDROME
دوشنبه 16 اردیبهشت 1387, 15:09 عصر
1-می توانید یک Prio بزنید و بعد از خواندن مقدار مورد نظر برگردید به پایین.
2-دقیقاً یک ADO مانند ADO فعلی بسازید و سپس


ADO_Te,p.Recno := ADO.RecNo;
ADO_Temp.Prior;

به مقادیر رکورد قبل دسترسی پیدا کنید.
2-رورش قبل را می توانید بر اساس فیلد کلید هم انجام دهید.
موفق باشید

rezamahdizadeh
سه شنبه 17 اردیبهشت 1387, 06:52 صبح
آیا این روش سربار زیادی ندارد؟

SYNDROME
سه شنبه 17 اردیبهشت 1387, 06:56 صبح
آیا این روش سربار زیادی ندارد؟
روش اول که خیلی ساده است.
من خودم برای اینکه کاربر حرکت کرسر را نبیند از روش 2 یا 3 استفاده می کنم و فکر نمی کنم مشکلی را ایجاد کند.
موفق باشید

rezamahdizadeh
سه شنبه 17 اردیبهشت 1387, 08:37 صبح
روش اول که خیلی ساده است.
من خودم برای اینکه کاربر حرکت کرسر را نبیند از روش 2 یا 3 استفاده می کنم و فکر نمی کنم مشکلی را ایجاد کند.
موفق باشید
بیشتر منظورم این بود اگر تعداد رکوردها زیاد باشد آیا دستور AdoTemp:=Ado سربار زیادی ایجاد نمی کند من دقیقا نمی دانم RecNo چگونه تولید و به چی assign می شود؟ آیا دوباره open کردیم یا Active:=False سپس True کردیم یا Requery یا Refresh کردیم آیا دوباره تولید می شود؟ به چه صورت تولید و مقدار دهی می شود اگر Sort By زبان SQL را تغییر دهیم؟
در مورد آنهایی که Datasource آنها در قسمت Client ایجاد می شود مثل MemTable یا ClientDataSet چطور؟

babak_delphi
سه شنبه 17 اردیبهشت 1387, 16:00 عصر
RecNo به شماره رکورد جاری در Query (نه در جدول) اشاره میکند
چون با دستور Open اشاره گر به اولین رکورد می رود ، RecNo مقدار 0 یعنی رکورد شماره 0 را بر می گرداند

Mahyaa
سه شنبه 17 اردیبهشت 1387, 20:08 عصر
توی loop که نمیخوای این کار رو بکنی ؟ اگر نه :

به نظرم بهتره متد DisableControls رو Call کنی . بعد Prior و بعد از اینکه مقدارت رو خوندی Next و آخر سر هم EnableControls .

در ضمن اگر دقیقا بگی هدف از این کار چیه شاید راه بهتر و درست تری هم باشه .

SYNDROME
سه شنبه 17 اردیبهشت 1387, 21:35 عصر
RecNo به شماره رکورد جاری در Query (نه در جدول) اشاره میکند
چون با دستور Open اشاره گر به اولین رکورد می رود ، RecNo مقدار 0 یعنی رکورد شماره 0 را بر می گرداند
دوست عزیز RecNo شماره رکورد را در DataSet بر می گرداند و زمانی که شما دستور Open را اجرا می کند در رکورد اول قرار گرفته و مقدار 1 را بر می گرداند.
موفق باشید

Mahyaa
سه شنبه 17 اردیبهشت 1387, 23:02 عصر
1-می توانید یک Prio بزنید و بعد از خواندن مقدار مورد نظر برگردید به پایین.
2-دقیقاً یک ADO مانند ADO فعلی بسازید و سپس


ADO_Te,p.Recno := ADO.RecNo;
ADO_Temp.Prior;
به مقادیر رکورد قبل دسترسی پیدا کنید.
2-رورش قبل را می توانید بر اساس فیلد کلید هم انجام دهید.
موفق باشید

باز کردن یک دیتاست اضافی ، کار منطقیه آیا ؟

vcldeveloper
چهارشنبه 18 اردیبهشت 1387, 00:06 صبح
http://barnamenevis.org/forum/showthread.php?t=96746&highlight=Clone