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

請教一個報表資料排序(Sorting)的問題

尚未結案
kjwang
一般會員


發表:11
回覆:8
積分:3
註冊:2005-04-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-12-01 18:22:54 IP:210.201.xxx.xxx 未訂閱
我的一支報表程式...做法是:先去相關Table Select需要的欄位資料出來 然後再一筆一筆塞到 為報表開的 TempTable裡,然後以Crystal Report呈現該支報表 而我在程式中有一個Combobox是可以選擇3種不同的排序方式 試問我該如何做到Sorting呢? 因為Select出來的data排序後 再insert into並不會依據Sorting後的結果來insert... 而Crystal Report有提供排序資料的功能,但我就必須製作三張報表 然後依據user的選擇去call不同的報表 請問我能否在只寫一張報表的情況下,由delphi中控制開啟報表前的排序呢? 謝謝!
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-12-02 08:21:56 IP:61.219.xxx.xxx 未訂閱
因為Select出來的data排序後 再insert into並不會依據Sorting後的結果來insert...-->在Select出來的data排序後(依Combobox),從第一筆逐筆insert into至TempTable增加一暫時排序用的流水號欄位,用變數累加存入, 這樣報表取的順序都是用TempTable所增加暫時排序用的流水號欄位.
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-12-02 09:10:47 IP:61.219.xxx.xxx 未訂閱
SQL> ED
已將 檔案 afiedt.buf 寫入      1  SELECT A.*,
  2         ROWNUM
  3    FROM (select empno,
  4              ename
  5            from emp1
  6*          order by ename) A
SQL> /         EMPNO ENAME          ROWNUM
---------- ---------- ----------
      7876 ADAMS               1
      7499 ALLEN               2
      7698 BLAKE               3
      7782 CLARK               4
      7902 FORD                5
      7900 JAMES               6
      7566 JONES               7
      7839 KING                8
      7654 MARTIN              9
      7934 MILLER             10
      7788 SCOTT              11         EMPNO ENAME          ROWNUM
---------- ---------- ----------
      7369 SMITH              12
      7844 TURNER             13
      7521 WARD               14    選取了 14 列    SQL> 
----------------------------------------------- 上述order by 依您Combobox所選排序, 此語法已幫您取出一流水號欄位, 接下來就是將此結果insert into TEMP TABLE了.
kjwang
一般會員


發表:11
回覆:8
積分:3
註冊:2005-04-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-12-02 09:47:22 IP:210.201.xxx.xxx 未訂閱
謝謝您的回覆!我知道該怎麼做了...請問ROWNUM是Oracle的語法嗎? 我來找找MS SQL的.... 本來是在找不知道Delphi有無提供資料排序的語法?
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-12-02 14:17:08 IP:61.219.xxx.xxx 未訂閱
引言:謝謝您的回覆!我知道該怎麼做了...請問ROWNUM是Oracle的語法嗎? 我來找找MS SQL的.... 本來是在找不知道Delphi有無提供資料排序的語法?
沒錯,it's ORACLE的功能。
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-12-02 14:31:51 IP:61.219.xxx.xxx 未訂閱
若是利用DBGRID的作法產生流水號,可參考以下方式, 再作一按鈕事件從table1第一筆,INSERT INTO TEMP TABLE ------------------------------------------------------- table1-->Active(False) table1元件右鍵Field Editor..再右鍵new field... Name-->Rec,Type-->Integer,Field type-->Calculated. table1-->Active(True) DBGrid1元件右鍵Field Editor..再右鍵Add all fields, 將Rec調整至最前面。 table1的onCalcFields之Events--> procedure TForm1.Table1CalcFields(DataSet: TDataSet); begin if Form1.Table1.State = dsInsert then // 動態產生流水號 Form1.Table1Rec.Value := Form1.Table1.RecordCount 1 else form1.Table1Rec.Value := Form1.Table1.RecNo; end;
kjwang
一般會員


發表:11
回覆:8
積分:3
註冊:2005-04-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-12-02 14:35:25 IP:210.201.xxx.xxx 未訂閱
找不到MS SQL中類似ROWNUM的語法.... 但有找到delphi中使用crystal元件的語法了..    用法為:    Crystal1.SortFields[index] := '+{SortRecord}';    
系統時間:2024-05-05 10:49:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!