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

如何joint 兩個Query內的資料合併於同一preview畫面上? (QReport)

尚未結案
wimi
一般會員


發表:8
回覆:13
積分:9
註冊:2009-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-04-12 17:13:05 IP:60.250.xxx.xxx 未訂閱
各位前輩,
我有個問題關於QReport的應用,

首先我有兩個dB,我想將此兩dB內的 特定欄位資料撈出來 顯示在preview畫面上,
這兩個dB間有相同的欄位資料(product ID),以方便我做joint。
主要使用的元件有:
QuickRep*1
QRLabel*6
QRDBText*5

Query*2
DataSource*2
Table*2

Query主要利用SQL指令作搜尋用,且active為true,
button觸發click事件後,即preview出所要的文件來。


文件所需要顯示的內容 (附件圖檔連結),前2欄為dB1內的資料,後3欄為db2內的資料,
我所做出來的preview結果dB1資料的結果為正確的,
但是dB2之資料只有第一筆的第一行有joint到,且資料內容正確;第一列的資料全部變成第一筆的資料..,

但是這並不是我需要的~我需要的是dB1每筆資料都可以joint到dB2,
想請問各位前輩們對此方面是否可幫助我一把呢^^!

或是有什麼相關的書籍或是資料,可以提供的,小妹我先謝謝大家!
編輯記錄
wimi 重新編輯於 2010-04-12 17:18:06, 註解 抱歉附檔沒夾成功..麻煩移駕到我新設的google相簿的連結....‧
st33chen
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-04-13 11:11:08 IP:114.32.xxx.xxx 未訂閱
您好,

1. 我看您的例子, 好像是 同一個 db 裏的兩個 table, 而不是兩個 db

2. 您已經知道 join 那就用 sql join 去搜一下本站或google
應該會有超多可參考資料


------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
wimi
一般會員


發表:8
回覆:13
積分:9
註冊:2009-12-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-04-13 16:41:07 IP:60.250.xxx.xxx 未訂閱
(全部資料圖)(無毒)(
不知道該怎麼解決這個問題呢??

若我解釋的不清楚的地方,請提出,我會再加以詳述!

這個問題困擾我好久了! 再次煩請前輩出馬相救~~!



編輯記錄
wimi 重新編輯於 2010-04-13 16:42:57, 註解 無‧
wimi 重新編輯於 2010-04-13 16:43:43, 註解 無‧
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-04-14 17:11:50 IP:61.66.xxx.xxx 訂閱
可以先將資料搜尋完倒到一個暫存的DATASET
再從DATASET去PRINT
------
======================
昏睡~
不昏睡~
不由昏睡~
wimi
一般會員


發表:8
回覆:13
積分:9
註冊:2009-12-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-04-16 11:00:30 IP:60.250.xxx.xxx 未訂閱
hi, 我稍微有眉目了,
只是我目前將資料join到string grid內的SQL語法出現了問題!
若我沒有把master dB所有的欄位名加在SQL語法裡,就會出現缺少的該欄"not found"的警告視窗,
若全加,可是detail dB的欄位卻沒顯示出來...

以下是我的程式:

[code cpp]
Form1->Query1->SQL->Clear();
Form1->Query1->SQL->Text="select a.P_ProductionNo,a.B,a.C,a.D,b.fA,b.fB,a.E,a.F,a.G,a.H from Production a left join Defect b on a.P_ProductionNo= b.D_ProductionNo";
Form1->Query1->Prepared=true;
Form1->Query1->Open();//or use Active = true;

// show to string grid
Form1->StringGrid1->FixedCols = 0;
Form1->StringGrid1->FixedRows =1;

int ColCount = Form1->Query1->FieldCount;
int RowCount = Form1->Query1->RecordCount;
Form1->StringGrid1->ColCount = ColCount ;
Form1->StringGrid1->RowCount =RowCount ;

Form1->Query1->First();
Form1->StringGrid1->DoubleBuffered = true;

for(int iCol = 0 ; iCol < ColCount; iCol)
{
//顯示Table的 Field的名稱於 FixedRow上面
Form1->StringGrid1->Cells[iCol][0] = Form1->Query1->Fields->Fields[iCol]->FieldName;
}

int iRealRow = RowCount Form1->StringGrid1->FixedRows;

for(int iRow = Form1->StringGrid1->FixedRows ; iRow < iRealRow ; iRow)
{
for(int iCol = 0 ; iCol < ColCount ; iCol)
{
Form1->StringGrid1->Cells[iCol][iRow] = Form1->Query1->Fields->Fields[iCol]->AsString;
}
Form1->Query1->Next();
}
Form1->StringGrid1->DoubleBuffered = false;

[/code]

想再請問我這樣的SQL語法是對的嗎?

編輯記錄
wimi 重新編輯於 2010-04-16 11:03:59, 註解 無‧
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-04-16 13:34:08 IP:61.66.xxx.xxx 訂閱
可以加上GROUP BY試試看
------
======================
昏睡~
不昏睡~
不由昏睡~
wimi
一般會員


發表:8
回覆:13
積分:9
註冊:2009-12-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-04-20 09:46:33 IP:60.250.xxx.xxx 未訂閱
謝謝前輩, 小的我研究看看! 
===================引 用 ko 文 章===================
可以加上GROUP BY試試看
kenwood
一般會員


發表:1
回覆:4
積分:1
註冊:2010-06-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-06-13 02:35:21 IP:58.253.xxx.xxx 訂閱
在SUMBAND 或COLOMNTITLE BAND中设HASCHILD=TRUE,然后在它中加入QRSUBDETIAL控件,用代码打开第二个DB
即可
------
世界同步!
kostin
一般會員


發表:18
回覆:43
積分:22
註冊:2010-03-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-03-24 10:15:35 IP:114.46.xxx.xxx 訂閱
QRCompositeReport元件
這是合併報表用的元件
給您參考看看
------
工程師的世界太深奧了 ~ 總是有不斷的驚奇發生
在解決問題的當下 , 才能確認我的存在
在得到幫助的當下 , 才能發現我不孤單
系統時間:2024-11-21 17:01:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!