关于数据库定时执行的问题 |
答題得分者是:sryang
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
[code delphi] timer1.ontimer时间下 if not ClientDataSet1.Eof then begin if FormatDateTime('hh:mm:ss',now)=FormatDateTime('hh:mm:ss',ClientDataSet1.FieldByName('时间').asdatetime ) then begin ShowMessage('ok'); [/code] 一定要在dbgrid里面选中当前的那条记录,才会执行showmessage,有没有办法让他在没选中时也按照这个来?遍历数据库? |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
很難懂?
===================引 用 terry_zhou82 文 章=================== [code delphi] timer1.ontimer时间下 if not ClientDataSet1.Eof then begin if FormatDateTime('hh:mm:ss',now)=FormatDateTime('hh:mm:ss',ClientDataSet1.FieldByName('时间').asdatetime ) then begin ShowMessage('ok'); [/code] 一定要在dbgrid里面选中当前的那条记录,才会执行showmessage,有没有办法让他在没选中时也按照这个来?遍历数据库? |
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
1.這個事件是在 Timer 上被觸發(定時), 先查看你的 Interval 定多少?
2. 不要設定任何條件, 就Timer中一條showmessage(...) , 先確認 Timer 是否有被執行? 3. 如果上述設定沒有問題, 請確認 Timer 是否有被啟動? 綜合所提問題, 我認為是 Timer 沒被啟動, 或者兩者配合時機不對, 另外針對這樣的寫法, 很可能會造成資源被耗盡的問題, 但不知道你要這個功能的目的在做什麼用, 所以才會說很難懂! ===================引 用 terry_zhou82 文 章=================== 版主大大,我的意思是,这条showmessage不执行。只有在dbgrid里面选中她之后才会执行。但我又想不选中他来执行 |
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
不清楚你整體設計架構, 但
1.如果是要在寫入要判斷, 為何不在儲存時進行 2.抑或者要在輸入該欄的同時, 找相關觸發的事件區來控制這段 以上這些都不需要用 timer 來操作 ===================引 用 terry_zhou82 文 章=================== 回大大,我想是想做个提醒功能,在数据表格中写入时间,随后用timer1控件加以判断,如果2者时间一致,则执行相关命令 |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
不執行,是不進入 OnTimer 事件?還是進入了 OnTimer 事件但是沒有 ShowMessage?
你確定有跑迴圈遍歷? 這種比對時間的程式撰寫時有幾個小技巧
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
wuabc
初階會員 發表:6 回覆:60 積分:33 註冊:2002-10-28 發送簡訊給我 |
[code delphi] ClientDataSet1.first; while not ClientDataSet1.Eof do begin if FormatDateTime('hh:mm:ss',now)=FormatDateTime('hh:mm:ss',ClientDataSet1.FieldByName('时间').asdatetime ) then begin ShowMessage('ok'); ... end .... ClientDataSet1.next; end [/code]
編輯記錄
wuabc 重新編輯於 2012-08-31 00:36:25, 註解 無‧
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
[code delphi]
Timer1.Enabled := false; try sNow := FormatDateTime('hh:mm:ss',now); // 重新取得排程數據 ClientDataSet1.Close; ClientDataSet1.Open; // 迴圈遍歷取得的數據 while not ClientDataSet1.Eof do begin if sNow = FormatDateTime('hh:mm:ss',ClientDataSet1.FieldByName('时间').asdatetime) then begin // 此處不應使用 ShowMessage,因為整個程式會因為 ShowMessage 等待使用者回應 // 應使用 StayOnTop 的一般 Form,用 Show 來顯示 ShowMessage('ok'); ..... end; ClientDataSet1.MoveBy(1); end; finally Timer1.Enabled := true; end; [/code]
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
|
terry_zhou82
一般會員 發表:8 回覆:22 積分:6 註冊:2012-08-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |