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

請問有關報表問題!

答題得分者是:lu0720@yahoo.com.tw
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-19 21:22:45 IP:220.131.xxx.xxx 訂閱
我用的是delphi7 和 內建的quick report

請問
(假設query1查詢後的資料有五筆)
(假設query2查詢後的資料有兩筆)


該怎麼讓他得到以下結果

標題1標題1標題1
query1query1query1
query1query1query1
query1query1query1
query1query1query1
query1query1query1
標題2標題2標題2
query2query2query2
query2query2query2

或是

標題1標題1標題1標題2標題2標題2
query1query1query1query2query2query2
query1query1query1query2query2query2
query1query1query1
query1query1query1
query1query1query1


pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-24 13:01:52 IP:219.87.xxx.xxx 訂閱
您好

兩種都可以用暫存檔解決問題!

只是在第一種裡面必須要加上qrgroup去作區隔!

第二種直接將暫存檔印出來就好了!

請參考!
------
Pillar Wang
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-24 16:42:39 IP:59.125.xxx.xxx 訂閱
第一種結果
將Query1改寫
SELECT FLD1,FLD2,FLD3 FROM Tab1
UNION ALL
SELECT '標題2','標題2','標題2' FROM DUAL
UNION ALL
SELECT FLD1,FLD2,FLD3 FROM Tab2

試試囉

===================引 用 g9614721 文 章===================
我用的是delphi7 和 內建的quick report

請問
(假設query1查詢後的資料有五筆)
(假設query2查詢後的資料有兩筆)


該怎麼讓他得到以下結果

標題1標題1標題1
query1query1query1
query1query1query1
query1query1query1
query1query1query1
query1query1query1
標題2標題2標題2
query2query2query2
query2query2query2

或是

標題1標題1標題1標題2標題2標題2
query1query1query1query2query2query2
query1query1query1query2query2query2
query1query1query1???
query1query1query1???
query1query1query1???


------
What do we live for if not to make life less difficult for each other?
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-26 14:54:30 IP:220.131.xxx.xxx 訂閱
兩位大大可否再說清楚一點= =
UNION ALL 及DUAL 是什麼意思?

這樣用對嗎?
date1:=DateTimePicker2.Date;
date2:=DateTimePicker3.Date;
with query5 do
begin
close;
sql.Clear;
sql.Add('Select 使用地點, max(領用數量) as 最大領用量,avg(領用數量) as 平均領用量 , 使用人員 from A_save2 ');
sql.Add('where 物品名稱="' dblookupcombobox1.text '" and (日期>=:date1)and (日期<=:date2) group by 使用地點,使用人員 union all ' );
sql.add('SELECT '標題2','標題2','標題2' FROM DUAL union all');
sql.Add('Select 貯存地點, max(庫存數量) as 最大庫存量,avg(庫存數量) as 平均庫存量 from A_save ');
sql.Add('where 物品名稱="' dblookupcombobox1.text '" and (日期>=:date1)and (日期<=:date2) group by 貯存地點 union all ' );
Query5.Params [0].DataType :=ftdate;
Query5.Params [0].Value :=date1;
Query5.Params [1].DataType :=ftdate;
Query5.Params [1].Value :=date2;
Query5.Active :=true;

以下是我的程式碼
[code delphi]
var date1,date2,date3,date4:TDate;
begin
edit1.text:=dblookupcombobox1.Text;
table2.first;
if table2.Locate('公司名稱',dbedit3.text,[])
then begin
date3:=DateTimePicker2.Date;
date4:=DateTimePicker3.Date;
with query5 do
begin
close;
sql.Clear;
SQL.Add('Select 使用地點, max(領用數量) as 最大領用量,avg(領用數量) as 平均領用量 , 使用人員 from A_save2 ');
sql.Add('where 物品名稱="' dblookupcombobox1.text '" and (日期>=:date3)and (日期<=:date4) group by 使用地點,使用人員 ' );
end;
Query5.Params [0].DataType :=ftdate;
Query5.Params [0].Value :=date3;
Query5.Params [1].DataType :=ftdate;
Query5.Params [1].Value :=date4;
Query5.Active :=true;
date1:=DateTimePicker2.Date;
date2:=DateTimePicker3.Date;
with query6 do
begin
close;
sql.Clear;
SQL.Add('Select 貯存地點, max(庫存數量) as 最大庫存量,avg(庫存數量) as 平均庫存量 from A_save ');
sql.Add('where 物品名稱="' dblookupcombobox1.text '" and (日期>=:date1)and (日期<=:date2) group by 貯存地點 ' );
end;
Query6.Params [0].DataType :=ftdate;
Query6.Params [0].Value :=date1;
Query6.Params [1].DataType :=ftdate;
Query6.Params [1].Value :=date2;
Query6.Active :=true;

end;
end;

[/code]

===================引 用 christie 文 章===================
第一種結果
將Query1改寫
SELECT FLD1,FLD2,FLD3 FROM Tab1
UNION ALL
SELECT '標題2','標題2','標題2' FROM DUAL
UNION ALL
SELECT FLD1,FLD2,FLD3 FROM Tab2

試試囉

===================引 用 g9614721 文 章===================
我用的是delphi7 和 內建的quick report

請問
(假設query1查詢後的資料有五筆)
(假設query2查詢後的資料有兩筆)


該怎麼讓他得到以下結果


標題1標題1標題1
query1query1query1
query1query1query1
query1query1query1
query1query1query1
query1query1query1
標題2標題2標題2
query2query2query2
query2query2query2





st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-27 08:33:14 IP:122.116.xxx.xxx 未訂閱
您好,

不同形態的欄位理應不能 union 在一起,
我認為您的問題應和 quick report 的 band 設計一起考慮解決
建議,
1. query1 改成
select '1' fldtype, fld1, fld2, fld3 from table1 where ...
union all
select '2', fld1, fld2, fld3 from table2 where ...
order by fldtype, fld1, ...
(請注意, union 或 union all 會以第一個 select 的欄位名稱們作為查詢結果的欄位名稱們)
2. qreport 設計
qrband ( bandtype 設為 rbtitle, 放報表頭相關欄位)
---------------------
qrgroup ( 放 欄位標題, expression 設為 fldtype, forcenewpage 設 true 或 false 來管理是否要跳頁, 這個 band 的設計應該是本題的癥結所在)
beforeprint 事件 設
if query1.fieldbyname('fldtype').value='1' then begin
qrlabel1.caption := '使用地點';
qrlabel2.caption := '最大領用量';
qrlabel3.caption := '平均領用量';
end
else begin
qrlabel1.caption := '貯存地點';
qrlabel2.caption := '最大庫存量';
qrlabel3.caption := '平均庫存量';
end;
-----------------------
qrband ( bandtype 設為 rbdetail, 放各欄位資料, 例 qrdbtext1 放 fld1 的資料, qrdbtext2 放 fld2 的資料, ... )
-----------------------
若需要group 加總
qrband (bandtype 設為 rbgroupfooter, qrgroup 的 footerband 設為本 band 的 name)

參考一下的啦.
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2009-04-27 08:38:36, 註解 無‧
st33chen 重新編輯於 2009-04-27 08:41:33, 註解 無‧
st33chen 重新編輯於 2009-04-27 15:11:46, 註解 無‧
lu0720@yahoo.com.tw
一般會員


發表:0
回覆:9
積分:6
註冊:2006-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-04-27 13:20:38 IP:218.167.xxx.xxx 訂閱
用二個detail就好了吧,有用group  嗎??如果只有你要的結果就用二個detail就好了吧
------
RogersLu
lu0720@yahoo.com.tw
一般會員


發表:0
回覆:9
積分:6
註冊:2006-10-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-04-27 14:05:03 IP:218.167.xxx.xxx 訂閱
簡單的說就是在報表上放二個 QRSubDetail 
DataSet 各指到你的二個Query
這樣就可以啦
------
RogersLu
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-04-27 15:54:32 IP:140.125.xxx.xxx 訂閱
我查詢出來的資料通常都不會有太多筆
我是不希望她跳頁的
希望能在一頁完成

關於QRSubdetail
請問如何指定它的DataSet
請問是用linkband嗎?
因為我放QRSubdetail 都沒有資料出來
可否說明一下= =" 謝謝!
===================引 用 lu0720@yahoo.com.tw 文 章===================
簡單的說就是在報表上放二個 QRSubDetail
DataSet 各指到你的二個Query
這樣就可以啦
lu0720@yahoo.com.tw
一般會員


發表:0
回覆:9
積分:6
註冊:2006-10-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-04-28 15:03:34 IP:218.168.xxx.xxx 訂閱
dataset 屬性裏面就有啦,adoconnection *1 先指定connect到那,
在用二個adoquery .
adoquery1 => select * from a 在第一個subdetail的dataset(屬性)裏選。
adoquery2 => select * from b 在第二個subdetail的dataset(屬性)裏選。
記得在二個subdetail的前面在加上一個band 寫台頭(欄位一,欄位二,…),要不加個head也可以,
------
RogersLu
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-04-29 06:56:10 IP:220.131.xxx.xxx 訂閱
大大~_~
我的subdetail 屬性真的沒有dataset....
操作環境:delphi 7.0 內建的quick report








===================引 用 lu0720@yahoo.com.tw 文 章===================
dataset 屬性裏面就有啦,adoconnection *1 先指定connect到那,
在用二個adoquery .
adoquery1 => select * from a 在第一個subdetail的dataset(屬性)裏選。
adoquery2 => select * from b 在第二個subdetail的dataset(屬性)裏選。
記得在二個subdetail的前面在加上一個band 寫台頭(欄位一,欄位二,…),要不加個head也可以,
lu0720@yahoo.com.tw
一般會員


發表:0
回覆:9
積分:6
註冊:2006-10-04

發送簡訊給我
#11 引用回覆 回覆 發表時間:2009-04-30 16:47:30 IP:218.168.xxx.xxx 訂閱
不必用QRBAND 去選啊,第二個COMPONET就是啦。
------
RogersLu
g9614721
一般會員


發表:27
回覆:51
積分:15
註冊:2008-07-23

發送簡訊給我
#12 引用回覆 回覆 發表時間:2009-04-30 18:34:51 IP:140.125.xxx.xxx 訂閱
大俠可否說詳細點~

不懂意思阿...
===================引 用 lu0720@yahoo.com.tw 文 章===================
不必用QRBAND 去選啊,第二個COMPONET就是啦。
系統時間:2024-05-16 13:41:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!