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

又以群組把劃分把相同欄位都只印在一列應如何作?

答題得分者是:Justmade
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-22 06:16:23 IP:61.231.xxx.xxx 未訂閱
小弟在table中欄位資料如下    姓名     月份      編號 黃小小   2003/03   001 黃小小   2003/04   002 羅大大   2003/02   001 羅大大   2003/03   002 羅大大   2003/04   003 陳總統   2003/01   001 陳總統   2003/02   002    請教 格式是姓名相同的欄位印在同一列 格式如下
姓名     日期                                        編號
黃小小   2003/03,2003/04                        001,002
羅大大   2003/02,2003/03,2003/04                001,002,003
陳總統   2003/01,2003/02                        001,002
小弟是用qreport作報表 應如何做? 謝謝幫忙 「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/05/22 06:01:26 「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/05/22 06:18:46 發表人 - huangeider 於 2003/05/22 06:19:24
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-22 07:50:48 IP:61.155.xxx.xxx 未訂閱
姓名 月份 編號 黃小小 2003/03 001 黃小小 2003/04 002 羅大大 2003/02 001 羅大大 2003/03 002 羅大大 2003/04 003 陳總統 2003/01 001 陳總統 2003/02 002    請教 格式是姓名相同的欄位印在同一列 格式如下        姓名     日期                                        編號 黃小小   2003/03,2003/04                        001,002 羅大大   2003/02,2003/03,2003/04                001,002,003 陳總統   2003/01,2003/02                        001,002    您这个一句SQL是不能完成的,程序如下:    //将每条您所需的记录存到 name[i],mydate[i],myno[i]  记录数i 如果您的记录很多,您可以使用动态数组来定义 var name:array[0..100] of string; mydate:array[0..100] of string; myno:array[0..100] of string; i:integer; begin i:=0; query1.SQL.Clear ; query1.sql.add('select 姓名 from tablename group by 姓名'); query1.close; query1.open ; while not query1.eof do begin query2.sql.clear; query2.sql.add('select * from tablename where 姓名=''' query1.fieldbyname('姓名').asstring ''''); query2.close; query2.open ; if not query2.eof then name[i]:=query2.fieldbyname('姓名').asstring; while not query2.eof do begin mydate[i]:=mydate[i] ',' query2.fieldbyname('月份').asstring; myno[i]:=mydate[i] ',' query2.fieldbyname('編號').asstring; end; i:=i 1; end; query2.close; query1.close; end; 风花雪月 e梦情缘
------
风花雪月 e梦情缘
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-22 08:05:24 IP:211.74.xxx.xxx 未訂閱
1.建議用TempTable來作,該TempTable開三各欄位,姓名.月份.編號,皆為文字欄位型態,月份及編號欄位長度開長些. 2.用Query 把資料選出並Order by 姓名,跑回圈將資料塞進該TempTable,然後將同一人的月份全部塞在同一個月份的欄位, 編號也是,這樣就可以將該人的所有資料變成一筆資料了. 3.Report的Query再從該SELECT * FROM Temptable,這樣就取得你要的報表型式了. TRY TRY SEE.
引言: 小弟在table中欄位資料如下 姓名 月份 編號 黃小小 2003/03 001 黃小小 2003/04 002 羅大大 2003/02 001 羅大大 2003/03 002 羅大大 2003/04 003 陳總統 2003/01 001 陳總統 2003/02 002 請教 格式是姓名相同的欄位印在同一列 格式如下
姓名     日期                                        編號
黃小小   2003/03,2003/04                        001,002
羅大大   2003/02,2003/03,2003/04                001,002,003
陳總統   2003/01,2003/02                        001,002
小弟是用qreport作報表 應如何做? 謝謝幫忙 「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/05/22 06:01:26 「堅持」從洗馬桶做起 Aric 發表人 - huangeider 於 2003/05/22 06:18:46 發表人 - huangeider 於 2003/05/22 06:19:24
發表人 - chih 於 2003/05/22 08:06:35
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-22 09:05:36 IP:218.16.xxx.xxx 未訂閱
wnhoo,  請問讀入 Array 後 甚做報表呢? 可否解釋清楚一點。    Chih 兄的做法應可做到但麻煩一點所以我也來個建議希望 Chih 兄別介意    Query1.SQL : select * from tablename order by 姓名    不用 QRDBText, 用三個 QRLabel    Report 的 DataSet 設 Query1    DataBand 的 BeforePrint  :
procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand;  var PrintBand: Boolean);
begin
  QRLabel1.Caption := Query1.FieldBYName('姓名').AsString;
  QRLabel2.Caption := Query1.FieldBYName('月份').AsString;
  QRLabel3.Caption := Query1.FieldBYName('編號').AsString;
  try
    Query1.Next;
    while (Query1.FieldByName('姓名').Value = QRLabel1.Caption) and not Query1.Eof do
    begin
      QRLabel2.Caption := QRLabel2.Caption   ','    Query1.FieldBYName('月份').AsString;
      QRLabel3.Caption := QRLabel3.Caption   ','    Query1.FieldBYName('編號').AsString;
      Query1.Next;
    end;
  finally
    if not Query1.Eof then Query1.Prior;
  end;
end;
測試過可行。
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-22 09:15:57 IP:211.74.xxx.xxx 未訂閱
Good,沒有想到這招..<>< face="Verdana, Arial, Helvetica">引言: Chih 兄的做法應可做到但麻煩一點所以我也來個建議希望 Chih 兄別介意 . .
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-22 09:28:18 IP:61.231.xxx.xxx 未訂閱
引言: 沒話說一句話..感恩..
「堅持」從洗馬桶做起 Aric
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-22 09:36:18 IP:61.155.xxx.xxx 未訂閱
Justmade  兄这个方法,果然比我读到ARRAY,然后再一个个写入简便的多。    我上面没有说怎样做报表,我想其中最主要的是将记录形成huangeider兄所需的样式,至于怎样写;我想huangeider兄自己一定会的!!!    风花雪月 e梦情缘
------
风花雪月 e梦情缘
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-23 05:53:33 IP:61.231.xxx.xxx 未訂閱
引言: 小弟並非資深程式設計創作者 對wnhoo 兄的array方法想了一天只能以再創新table 把array加到各個record內方能達成 不知wnhoo兄有沒更好的方法 不吝賜教 小弟銘感五內謝謝
「堅持」從洗馬桶做起 Aric
eric_shi
一般會員


發表:5
回覆:19
積分:4
註冊:2002-07-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-05 09:48:52 IP:210.66.xxx.xxx 未訂閱
小弟不才 剛剛不小心用SQL把這個案例給作出來了 請參考如下: -------------------------------------------------------------------- SELECT 姓名,LTRIM(MIN(T_DATESTR)) T_DATESTR FROM ( select t.姓名,SUBSTR(LPAD(' ',LEVEL-1)||substr(sys_connect_by_path(t.日期,','),2,30),1,30) t_datestr from ( select 姓名,日期 ,編號||姓名 t_fno ,LTRIM(to_char(to_number(編號) 1,'000')||姓名) t_pno from Table ) t CONNECT BY PRIOR T_PNO=T_FNO ) GROUP BY 姓名 --------------------------------------------------------------------- 請各位大大指教
系統時間:2024-05-08 6:33:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!