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

查詢資料顯示的問題

尚未結案
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-15 10:59:49 IP:211.75.xxx.xxx 未訂閱
請教一個常遇到又很煩的問題 例如有下列六筆資料 項目 數值 日期 ------------------ AA 10 12/1 AA 12 12/5 AA 9 12/6 BB 7 12/1 CC 3 12/1 CC 15 12/6 希望從資料庫讀出來後 便成下面的資料 12/1 12/5 12/6 --------------------------- AA 10 12 9 BB 7 CC 3 15 就是將項目及日期排列好 讓user方便查看及使用 這問題小弟常遇到 but 都沒有比較有水準的解法 不然就是設了一大堆的變數 比來比去自己也搞亂了 所以請教各位都是如何去思考及解決這類的問題呢 請指教
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-15 12:56:17 IP:61.222.xxx.xxx 未訂閱
1.另外開個table去放 2.SQL server有個好東西,olap service,就是專門解決這個的,當然有些額外的語法跟用法要學學學了,例如 MDX語法的使用,cube的建立...
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-15 13:00:24 IP:61.222.xxx.xxx 未訂閱
補充一個 delphi的元件:decision cube,也可以達到您要的結果... mickey大大的範例 http://delphi.ktop.com.tw/topic.php?method=AddScore13&topic_id=26173&ToMemberID=6078
Sanyuan
一般會員


發表:24
回覆:32
積分:11
註冊:2002-06-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-16 10:07:50 IP:211.75.xxx.xxx 未訂閱
謝謝版主的回答 小弟也試了decision cube並下載了範例 沒想到decision cube的設定並不困難 不過想再請教 是不是decisioncube中的cells是否一定要是數字,不能sum的文字不可以嗎 這元件沒用過,所以不懂,請再指教
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-16 13:32:29 IP:61.222.xxx.xxx 未訂閱
建議您開個新post舉個例子問看看,可能會有更多朋友可以有機會幫助您
johnny2212
初階會員


發表:34
回覆:65
積分:39
註冊:2003-04-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-17 04:30:24 IP:61.226.xxx.xxx 未訂閱
我個人認為最好還是用DataSet來表現比較好,因為你必須考慮到程式(如ADO或DbExpress)和資料庫的轉移,還必須考慮印表的問題,用ClientDataSet就萬無一失了,以下是我個人的淺見,還望賜教 Table Test建立 ti001 流水號(1,2,3…..)integer primary key; ti002 Name(AA,BB,CC)string;Ti003(2000/12/1,2000/12/9)String;ti004數量(10,12,9….)integer; 程式建立 放入兩個ADOQuery連到Table(Test),在放入一個ClientDataSet1(可連結DBGrid) procedure TForm1.Button1Click(Sender: TObject); begin //此段程式建立虛擬資料表 with ClientDataSet1 do begin with FieldDefs.AddFieldDef do begin DataType:=ftString; Name:='Name'; Size:=10; end; ADOQuery1.SQL.Text:='select distinct ti003 from test'; //可加入日期的區隔 ADOQuery1.Open; while not ADOQuery1.Eof do begin with FieldDefs.AddFieldDef do begin DataType:=ftInteger; Name:=ADOQuery1.Fields[0].AsString; end; ADOQuery1.Next; end; ADOQuery1.Close; with IndexDefs.AddIndexDef do //Index可做排序 begin Fields:='Name'; Name:='IndexName'; end; CreateDataSet; IndexDefs.Update; IndexName := 'IndexName'; end; end; procedure TForm1.Button2Click(Sender: TObject); var i: integer; begin //此段程式將值填入,若常用的話,你可將其作成物件呼叫 ADOQuery1.Close; ADOQuery1.SQL.Text:='select distinct ti002 from test';//選取AA,BB…. ADOQuery1.Open; while not ADOQuery1.Eof do begin ClientDataSet1.Insert; ClientDataSet1.Fields[0].Value:=ADOQuery1.Fields[0].AsString; ClientDataSet1.Post;//寫入AA,BB,CC….. //以下用迴圈將數值填入 for i:=1 to ClientDataSet1.FieldCount-1 do begin ADOQuery2.Close; ADOQuery2.SQL.Text:='select ti004 from test where ti002=' '''' ADOQuery1.Fields[0].AsString '''' 'and ti003=' '''' ClientDataSet1.Fields[i].FieldName ''''; ADOQuery2.Open; ClientDataSet1.Edit; ClientDataSet1.Fields[i].Value:=ADOQuery2.Fields[0].Value; ClientDataSet1.Post; ADOQuery2.Close; end; ADOQuery1.Next; end; end; //至於要做sum,直接在程式作加總即可(虛擬資料表加一個加總欄位) //這樣既可不用設置一大堆變數,又將其使用DataSet,雖然要寫一些程式, 但比較起來是划算的
系統時間:2024-07-01 2:52:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!