PDA

View Full Version : سوال: پیمایش رکورد ها



DelphiFriend
چهارشنبه 21 اسفند 1387, 21:13 عصر
سلام دوستان
تو برنامه اي که نوشتم تنظيم کردم که Timer هر 3000 ميلي ثانيه يه Record از جدولم رو نشون بده ولي بعد از چند بار تکرار وقتي که به انتهاي جدول ميرسه همون فيلد آخر رو هي نشون ميده. شرطي هست که در Timer اگه جدول به Record آخر رسيد دوباره جدول رو منتقل کنه به Record اول؟

Developer Programmer
چهارشنبه 21 اسفند 1387, 22:15 عصر
// Reads through all records in Customers (a table on Windows

// and SQLDataSet on Linux)
// Updates the ProgressBar accordingly.


procedure TForm1.Button1Click(Sender: TObject);

var
i: Integer;
begin
with ProgressBar1 do
begin
Min := 0;
Max := Customers.RecordCount;
Customers.First;
for i := Min to Max do
begin
Position := i;
Customers.Next;
// do something with the current record
end;
end;
end;

shervin farzin
چهارشنبه 21 اسفند 1387, 23:38 عصر
سلام

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Do Somthing With Current Record .
if ADOQuery1.RecordCount = ADOQuery1.RecNo+1 then
ADOQuery1.Next
else
ADOQuery1.First;
end;

موفق باشيد .

vcldeveloper
پنج شنبه 22 اسفند 1387, 00:04 صبح
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Do Somthing With Current Record .
if ADOQuery1.RecordCount = ADOQuery1.RecNo+1 then
ADOQuery1.Next
else
ADOQuery1.First;
end;با این کد، اگر Dataset بیش از دو رکورد داشته باشه، عملیات همیشه روی رکورد اول انتفاق میافته! مثلا اگر Dataset پنج رکورد داشته باشه:
RecordCount = 5
RecNo = 1
RecourtCount <> 2 then
go to first record

و این کار همچنان ادامه پیدا میکنه!

TDataSet دو خصوصیت با نام های EOF و BOF داره، که به ترتیب پایان رکوردها، و شروع رکوردها را مشخص می کنند. تمام کلاس های مشتق شده از TDataSet هم این دو خصوصیت را به ارث برده اند، پس برای این سوال:

شرطي هست که در Timer اگه جدول به Record آخر رسيد دوباره جدول رو منتقل کنه به Record اول؟ جواب میشه:


if AdoQuery1.EOF then
AdoQuery1.First;

shervin farzin
پنج شنبه 22 اسفند 1387, 11:14 صبح
سلام
فرمايش شما كاملا درسته ، من اشتباه نوشتم كه بايد اصلاحش كنم :

procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Do Somthing With Current Record .
if ADOQuery1.RecordCount <> ADOQuery1.RecNo then
ADOQuery1.Next
else
ADOQuery1.First;
end;
موفق باشيد .