全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:984
推到 Plurk!
推到 Facebook!

為什麼第一次點選dbGrid, 它的來源dataset的RecNo總是指到第一筆?

尚未結案
wangks
一般會員


發表:5
回覆:10
積分:3
註冊:2003-12-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-01 18:11:19 IP:211.75.xxx.xxx 未訂閱
我在程式中放了一個用TQuery建的DBGrid 是打算在指定dbGrid中的某一筆之後 針對那個TQuery進行修改, 刪除或插入的動作 我有新增一個視窗 會把查詢到的資料, 丟到那個視窗處理後回存 可是我發現我在第一次點選那個DBGrid 並開啟維護的視窗時 去捉取TQuery的RecNo, 總是回傳1 可是回到原視窗再重覆相同的動作 RecNo就會恢復正常了 這是怎麼回事? 努力找問題, 努力找答案
------
努力找問題, 努力找答案
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-02 08:55:31 IP:210.61.xxx.xxx 未訂閱
wangks您好 表面看起來,點DBGRID DataSet的RecNo會跟著變動,那是沒問題的, 另一個事件點, 在DataSet.AfterScroll事件,點選時候,也會觸發 因為您的描述,看不出來問題出在那兒, 或許您可以點少許關鍵程式碼, 讓我們幫您抓問題.
wangks
一般會員


發表:5
回覆:10
積分:3
註冊:2003-12-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-07 09:39:19 IP:211.75.xxx.xxx 未訂閱
引言: wangks您好 表面看起來,點DBGRID DataSet的RecNo會跟著變動,那是沒問題的, 另一個事件點, 在DataSet.AfterScroll事件,點選時候,也會觸發 因為您的描述,看不出來問題出在那兒, 或許您可以點少許關鍵程式碼, 讓我們幫您抓問題.
我做了三個form 第一個是MDIForm, 把TQuery(Paradox的)放在這裡 第二個是MDIChild, 把第一個form的TQuery的查詢結果用dbgrid放到這裡 第三個是Normal, 擺了一些Edit(不是dbEdit) 我是在第二個form放一個「查詢」按鍵, 準備把現在dbGrid指到的那一筆紀錄, 相對應的TQuery內的資料全部放到第三個form的dbEdit群中 (也就是程式是放在第二個form裡面) 問題是我發現, 每次第一次按下「查詢」按鍵, 都發現那時的TQuery是停在第一筆, 可是第二次及以後按下去, 就又恢復正常 好玩的是, 我有試過, 在第二個form放一個「測試」按鍵, 只是純粹回應TQuery的RecNo, 卻又沒有問題.... 努力找問題, 努力找答案
------
努力找問題, 努力找答案
wangks
一般會員


發表:5
回覆:10
積分:3
註冊:2003-12-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-07 10:00:37 IP:211.75.xxx.xxx 未訂閱
目前是暫時先加上一些程式, 強制Query跑到應該在的地方, 去避開這個問題: 1.在form2加上一個數字變數: iRecNo 2.在form2的DBGrid1加上一個MouseUp事件的程式碼: (參考本站之前的討論區) procedure Tform2.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var c:TGridCoord; begin c:=DBGrid1.MouseCoord(x,y); iRecNo :=c.y; end; 3.在form2的查詢按鍵一開始, 先加上一些程式碼: with form1.Query1 do if iRecNo <> RecNo then begin first; MoveBy(iRecNo - 1); end; 努力找問題, 努力找答案
------
努力找問題, 努力找答案
系統時間:2024-07-03 5:34:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!