clientDataSet.Bookmark 會有 record not found錯誤 |
答題得分者是:sryang
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
這個問題只產生在工作站(XP),我這台(w7 64)跟主機(server 2008)都沒問題orz
delphi 2010; grid.option上面有開 dgMultiSelect, dgEdit 再跑資料回圈就這樣跑 [code delphi] for vi:=0 to grid.SelectedRows.Count-1 do begin clientDataSet.Bookmark := grid.SelectedRows.Items[vi]; //做事情.... end; [/code] 這一段沒有問題,問題是:如果有再grid上面改東西之後 cds.Bookmark := grid.SelectedRows.Items[vi]; 這一行就會回傳 record not found 這個錯誤神奇的地方在於,只有一筆資料的時候才會發生, 只有一筆的時候無法移動資料cursor.......Orz 如果有多筆,再用滑鼠點其他筆的時候會觸發post(之類的?),反而會去更新到bookmark *再跑回圈之前post無效,我試過了Orzzz *clientDataSet.Refresh也無效,傳回true但是出一樣的錯 我google是看說如果 post之後bookmark 會變動,所以無效 ............有沒有好辦法能重抓一次已有的bookmark orz |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
SelectedRows 不是這樣用的,請改成這樣:
[code delphi] for vi:=0 to grid.SelectedRows.Count-1 do begin clientDataSet.GotoBookmark(grid.SelectedRows.Items[vi]); //做事情.... end; [/code]
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2010-11-04 07:08:42, 註解 無‧
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
這我也試過了,
另外用一個TBookmark,可以取得, 可是assign過去的時候一樣是record not found 這應該是edit之後,沒有觸發資料移動導致bookmark沒更新到, 另一個原因可能原本舊版的TBookMark不是TByte, 2009之後升級了..... 在程式下post可以成功post, stats 會變成dsBrowse,可是bookmark一樣不能用 我(現在)是想問有沒有辦法重新取得一次bookmark clientDataSet.reFresh 說明是會把invalid的刪除,我這情況是不會刪除也不會更新(OS:本來就不沒提到更新,這叫文字陷阱XD) 怎樣修正我是不會...orz 撇步是有...(汗) 1.就是recordcount = 1的時候就不取selectRows,不過recordcount可能有問題 2.就是再跑東西之前,對dataset下 insert cancel, 讓他換行就會更新bookmark *edit cancel會有問題,這時侯stats=dsEdit, ===================引 用 sryang 文 章=================== SelectedRows 不是這樣用的,請改成這樣: [code delphi] for vi:=0 to grid.SelectedRows.Count-1 do begin clientDataSet.GotoBookmark(grid.SelectedRows.Items[vi]); //做事情.... end; [/code] |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
正是因為使用 bookmark 問題多多,個人在處理多選時,大多採用其他方式:
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
網頁看的到,但是無法下載
另外~我也想請問 sryang 大大一下 這個元件支援Delphi7嗎?? ===================引 用 sryang 文 章=================== 正是因為使用 bookmark 問題多多,個人在處理多選時,大多採用其他方式:
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
老大仔:
個人已經將檔案上傳至 KTop,請至 http://delphi.ktop.com.tw/board.php?cid=31&fid=77&tid=101718 下載 另外,Delphi 7 以及以後版本支援的問題,個人認為應該沒有問題 (偷偷告訴你,個人幫公司寫的 DBGrid 就是以這個為基礎下去增加功能的,Delphi 2010 都 OK)
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
這個神奇的地方是...
我電腦, W7-64 delphi2010 sql server2008 (只有management studio) 跟主機, 2008-64 sql server2008 (full) 都不會發生 只有工作站 XP-32 BDE sql native client 其他台 XP32就沒試了,如果有的可以有的不行那就可以煩好幾個晚上了 Orz 感覺上跟永遠沒修好的recordcount一樣...orz, 不過我有試過 D5不會,也可有能是跟recordcount一樣卡彈才會發生? 所以最終辦解決法一樣....就是不去用Orz.... 另外自爆: .bookmark跟 gotobookmark一樣,所以挑比較短的(核爆喔喔喔喔Orz) property Bookmark: TBookmark read GetBookmark write GotoBookmark; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |