線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:948
推到 Plurk!
推到 Facebook!

循环读取表中记录

缺席
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-06-01 15:05:26 IP:218.80.xxx.xxx 訂閱
想通过一个TIMER,不停的显示表中的记录,并显示到界面上。但是循环方面碰到了问题。

[code delphi]
procedure TForm2.Timer1Timer(Sender: TObject);
var i:Integer;
begin
form1.Table1.First ;
while not form1.Table1.Eof do
begin
DBText1.Caption :=Form1.Table1.FieldByName('empno').AsString ;
DBMemo1.Text :=Form1.Table1.FieldByName('firstname').AsString ;
Form1.Table1.Next;
end;

[/code]
不过这么写好像有点问题。
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-06-01 15:23:40 IP:59.120.xxx.xxx 訂閱
1. 設一個變數 bm: TBookMark;

[code delphi]
procedure TForm2.Timer1Timer(sender: Tobject);
begin
if bm=nil then Form1.Table1.First
else
begin
Form1.Table1.GoToBookMark(bm)
Form1.Table1.Next;
end;
if Form1.Table1.Eof then bm:=nil
else bm:= Form1.Table1.GetBookMark;
DBText1.Caption:=
DBMemo1.Text:=
end;
[/code]
編輯記錄
max5020 重新編輯於 2009-06-01 16:46:08, 註解 無‧
max5020 重新編輯於 2009-06-01 17:15:09, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-06-01 17:05:10 IP:61.67.xxx.xxx 未訂閱
你認為有問題, 是什麼問題? 可否提出來我們知道你的認為?
我認為, 程式上沒有大問題, 但思考上卻有嚴重的缺陷
1.timer 不斷循還, 依程式來看, 資料庫也應該是不斷成長, 你不斷在caption及memo變化內容, 事實上如果有100筆, 除非你練過速記, 否則如何可以看到前99筆是什麼
2.假設timer 每一秒反應一次, 你的程式是否能在一秒內把loop跑完, 這有待商榷, 當loop未跑完, timer 又再進入時, 十分容易造成死機, 陷入無止境迴圈
3.在while loop中, 一旦進入即會進入迴圈控制, 沒有跳出機會, 這很可怕!
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-02 21:44:27 IP:222.70.xxx.xxx 訂閱
呵呵,知道问题的错误,我已经解决掉了。
谢谢楼上的两位
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
系統時間:2024-05-16 20:58:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!