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

ClientDataSet 資料排序為何會自行改變, 請教前輩

答題得分者是:Fishman
sheyukun
一般會員


發表:1
回覆:5
積分:1
註冊:2004-04-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-17 13:45:10 IP:61.220.xxx.xxx 未訂閱
狀況:DataSetProvider由Query讀取資料如下 SQL語法: select PRD_NO from DBPRDNO order By PRD_NO 資料內容 101 201 A03 S01 T01 X01 s02 ClientDataSet 接收後如下 101 201 A03 s02 <--- 排序改變了 S01 T01 X01 請教前輩,我可能那裡出錯
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-18 08:57:12 IP:210.69.xxx.xxx 未訂閱
order By PRD_NO 傳回結果照您的要求排序了啊 如果不想排序, 用 select PRD_NO from DBPRDNO ********************* 如果您滿意答案,請結案 *********************
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
sheyukun
一般會員


發表:1
回覆:5
積分:1
註冊:2004-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-23 09:47:39 IP:61.220.xxx.xxx 未訂閱
1.謝謝 PCBOY2 您的回覆! 但不是我要的結果! 2.問題重點是在3層架構下,SERVER 端資料有按 QUERY 所指定順序(ASCII順序),但CLIENT 端接收後,會變字典順序排列,而且是小寫在前 3.我想得到CLIENT端能同ASCII順序,不知有何技巧
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-24 18:53:59 IP:61.141.xxx.xxx 未訂閱
引言: 1.謝謝 PCBOY2 您的回覆! 但不是我要的結果! 2.問題重點是在3層架構下,SERVER 端資料有按 QUERY 所指定順序(ASCII順序),但CLIENT 端接收後,會變字典順序排列,而且是小寫在前 3.我想得到CLIENT端能同ASCII順序,不知有何技巧
对 ClientDataSet,你可以自己建立索引。指定按哪个字段来排序,指定排序方式(升或降)。
sheyukun
一般會員


發表:1
回覆:5
積分:1
註冊:2004-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-26 18:11:39 IP:61.228.xxx.xxx 未訂閱
1.謝謝 PCPLAYER99 您的回覆!但測試後仍無結果 2.有排序,但仍是字典順序,我要的是內碼順序
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-26 22:06:58 IP:220.134.xxx.xxx 未訂閱
設定 DatasetProverider 的 Options 中加入 poRetainServerOrder
sheyukun
一般會員


發表:1
回覆:5
積分:1
註冊:2004-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-27 09:06:04 IP:61.220.xxx.xxx 未訂閱
1.謝謝 JAMES 您的回覆! 2.我是在DELPHI5 環境中開發,但 DatasetProverider 的 Options 中好像没有 poRetainServerOrder 這個Options 3.是否要D5以上版本才有支援 4.再次謝謝
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-05-27 12:32:14 IP:59.120.xxx.xxx 未訂閱
對 , 要 D5 以上才有 , 據我所知台灣 Borland 有提供一個修改後的版本 給一些大型客戶,所以如果你有管道的話可以去索取看看,要不然考慮升級 到 D6 以上也是一個方法。
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-05-27 12:49:06 IP:210.65.xxx.xxx 未訂閱
Hi sheyukun,    在該 ClientDataSet 上加入一個 Index 試試:
procedure TForm1.Button2Click(Sender: TObject);
begin
  ClientDataSet1.IndexDefs.Clear;
  ClientDataSet1.IndexDefs.Add('ClientDataSet1Index1','PROD_NO',[ixExpression]);
  ClientDataSet1.IndexName := 'ClientDataSet1Index1';
  ClientDataSet1.close;
  ClientDataSet1.open;
end;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
sheyukun
一般會員


發表:1
回覆:5
積分:1
註冊:2004-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-05-27 18:17:30 IP:61.220.xxx.xxx 未訂閱
謝謝 Fishman 1.您的熱心,解決了我的問題! 2.建立索引且為 [ixExpression] 為解決關鍵 3.問題外:A.TClientDataSet若每次皆須以索引來重排序,保持Server端排序, 不是很浪費cpu嗎?老Delphi5的悲哀! B.James 提供 poRetainServerOrder 這個Options 在D6版有提供, 我想試從DatasetProverider source 比較二個版本差異,看看能 否改掉D5版有 poRetainServerOrder 選項 C.因為以幾天來爬SOURCE,發現重新sort的機能來至BDE 4.再次謝謝!,這一分鐵定應該給 Fishman 大大您了
系統時間:2024-04-25 7:51:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!