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

ClientDataSet1 insert 資料進去後 第一筆資料會跑到最後面 ??

答題得分者是:ccchen
crlin
一般會員


發表:47
回覆:57
積分:20
註冊:2002-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-08 10:40:24 IP:211.22.xxx.xxx 未訂閱
以下的程式碼依次把 '1', '2', '3' 加入 ClientDataSet1 中 但再依次印出來看時卻變成 '2','3','1' 請問我如何讓 ClientDataSet1 的順序依照我加入時的正常順序呢 ?? thanks ! ClientDataSet1.Close; ClientDataSet1.CreateDataSet; ClientDataSet1.First; ClientDataSet1.Insert; ClientDataSet1.FieldByName('test').AsString := '1'; ClientDataSet1.Post; ClientDataSet1.Next; ClientDataSet1.Insert; ClientDataSet1.FieldByName('test').AsString := '2'; ClientDataSet1.Post; ClientDataSet1.Next; ClientDataSet1.Insert; ClientDataSet1.FieldByName('test').AsString := '3'; ClientDataSet1.Post; ClientDataSet1.Next; ClientDataSet1.First; ShowMessage(ClientDataSet1.FieldByName('test').AsString); ClientDataSet1.Next; ShowMessage(ClientDataSet1.FieldByName('test').AsString); ClientDataSet1.Next; ShowMessage(ClientDataSet1.FieldByName('test').AsString); ClientDataSet1.Next; ShowMessage(ClientDataSet1.FieldByName('test').AsString);
whyzn
中階會員


發表:46
回覆:149
積分:54
註冊:2002-06-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-08 11:02:30 IP:61.223.xxx.xxx 未訂閱
我說明一下你程式的邏輯    ClientDataSet1.Close; ClientDataSet1.CreateDataSet; ClientDataSet1.First; 現在指標在第一筆 ClientDataSet1.Insert; ClientDataSet1.FieldByName('test').AsString := '1'; ClientDataSet1.Post; ClientDataSet1.Next; 如果檔案中只有一筆資料(剛增加的這一筆)現在指標會在第一筆 ClientDataSet1.Insert; ClientDataSet1.FieldByName('test').AsString := '2'; ClientDataSet1.Post; 資料 "2" 會插入 "1" 之處,所以第一筆資料變成 "2" 第二筆則為"1" ClientDataSet1.Post; ClientDataSet1.Next; 現在指標指向資料是 "1" 的這一筆 ClientDataSet1.Insert; ClientDataSet1.FieldByName('test').AsString := '3'; ClientDataSet1.Post; 資料 "3" 會插入 "1" 之處,所以第二筆資料變成 "3" 第三筆則為"1" ClientDataSet1.Next; 現在指標指向資料是 "1" 的這一筆 資料新增的情形如下示; 1 (Insert) ------------------ >1 (Next 後) ------------------ >2 (Insert) 1 ------------------ 2 >1 (Next 後) ------------------ 2 >3 (Insert) 1 ------------------ 2 3 >1 (Next 後) ------------------ 所以若要資料按一定次序呈現,通常都配合排序或索引 若不想做排序或索,只是希望寫入和讀出之次序相同 或許您可以試試 ClientDataSet1.Append; ClientDataSet1.FieldByName('test').AsString := 資料; ClientDataSet1.Post; 以上提供您參考,若有錯誤請指正‧ ●○○○○○●○○○○○● 竹密不妨水過,山高無礙雲飛 發表人 - whyzn 於 2003/01/08 11:12:45
------
●○○○○○●○○○○○●
竹密不妨水過,山高無礙雲飛
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-08 11:29:20 IP:61.219.xxx.xxx 未訂閱
直接加一行 ClientDataSet1.indexfieldnames:='test'; 就可解決你的問題 你程式中的next都是不必要的
系統時間:2024-03-29 3:25:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!