DBGRID排序 |
尚未結案
|
ydq_axmmis
一般會員 發表:3 回覆:3 積分:1 註冊:2003-10-21 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
ydq_axmmis 你好
dbGrid是反應Datasource所連結的DataSet的資料內容的元件,要能在DBGRID上點一下鼠標左鍵就可以排序 首先要有點一下的事件,這沒問題dbGrid有OnTitleclick的事 第二,要知道點在那一個欄位,這也問題,在OnTitleClick事件中有個參數Column可以知道 三,要能依某個欄位動態的建立索引,這就稍微麻煩了 1.有那些DataSet元件能改變資料錄的排列方式呢? 1-1 TTable 可以使用IndexName 使用資料庫原有的索引,但必須改其索引鍵值才會改變記錄的排列方式 1-2 TQuery利用SQL指令的Order By 可以排列料錄,同樣的必須改變鍵值欄位值後才會反應其順序 1-3 TAdoDataSet等數個資料集元件,基本上與TTable及TQuery必須以同樣的方式才能改變資料錄排列方式。 1-4 TAdoDataSet好像可以可以做Client端的臨時索引,但我不清楚,也沒實作過。 1-5 TClientdataSet 對於動態索引可以說是它的專長(當然還有其他的特長), 2.結果呢也只有利用ClientDataSet的動態索引才是最理想的資料集元件,當然其 他的資料集不是不能,而是要動態的組織SQL反覆的向資料庫要資料或使用資料 庫現有的索引(萬一個表格有100個欄位那不就要建立100個索引)(造成資料重複 的讀取、及網路流量變大) 3.而ClientDataSet的動態索引的建立,又有幾種方法(各有其優缺點),個人比 較喜歡使用AddIndex 的方法來建立動態索引,不止可以昇冪排序還可以降冪排 序,不止可以單一欄位排序還可以多欄位排序,而且昇冪降冪參雜的多欄位排序, 還可以區分大小寫或不分大小寫.........................沒有了。 第四,在dbGrid的抬頭反應目前排序的狀況(排序的符號) 綜合上述,結論是,使用CLientDataSet資料集元件,然後在dbGrid.OnTitleClick 事件中判斷點選的欄位名稱,再以該欄位名稱動態建立索引,再加上於dbGrid欄位 抬頭畫索引符號的功能(這功能在本站可以找到很範例),最後若能把它寫成元件那就更完美了。發表人 - chance36 於 2004/07/08 23:04:32 |
ydq_axmmis
一般會員 發表:3 回覆:3 積分:1 註冊:2003-10-21 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
ydq_axmmis
一般會員 發表:3 回覆:3 積分:1 註冊:2003-10-21 發送簡訊給我 |
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |