如何在一個QuickRep中使用兩個dataset?? |
答題得分者是:Fishman
|
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi aj0724, 也許你可以使用一個 Query 其中用 Union 的方式來聯集兩個 DataSet 資料,至於Union 的用法請參考
http://delphi.ktop.com.tw/topic.php?topic_id=46127 搜尋的方法,請參考各位大大的心得
http://delphi.ktop.com.tw/topic.php?topic_id=45740 發表人 -
------
Fishman |
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
|
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi aj0724, 我試了一下,正如你所言,QRExpr 抓不到其他已 Uses Form 上的 DataSet,以下有篇討論,不過似乎還沒有結論 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=46369 也許你可以先行使用 QRLabel 並在 OnPrint 事件,自己寫程式碼去控制它的 Value 來達到與 QRExpr 相同功能,只能說,山不轉路轉 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi aj0724,
引言: 不好意思... 我用了漁夫大大的方法,可是因為一個 Query 雖然可以用 Union 的方式來聯集兩個 DataSet 資料,可是聯集出來的資料卻無法因不同條件給不同的DBTEXT,也就是說資料是有篩選出來,可是DBTEXT還是只能秀出同樣條件的資料.. 因為我的QRDETAIL上面的DBTEXT有兩種不同條件的部分,不曉得如何能作出這樣的效果???很抱歉,不太清楚你的需求,可否再解釋清楚一點? ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
不好意思..我在解釋一下...
引言: Hi aj0724, 你的意思是說,該報表只有一筆資料? 是有多筆資料,上圖的意思是我用QRBand其中屬性BandType為rbDetail將DBText放在裡面,所以可以顯示多筆資料。 不同院區間的關連是? SELECT * FROM TABLE WHERE LOCA='1'(LOCA即為院區的欄位).. 假設台中為1,大里為2 你的 DB 是? ORACLE ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi aj0724, 這個 Case 中,假設你的院區資料是固定的,可以使用以下語法即可
SELECT Q1.FIELD1, Q1.FIELD2, Q1.FIELD3, Q1.FIELD4, Q1.XXXXX, Q2.FIELD1, Q2.FIELD2, Q2.FIELD3, Q2.FIELD4, Q2.XXXXX FROM (SELECT FILED1, FIELD2, FIELD3, FIELD4, .... FROM YOURTABLE WHERE LOCA = 1 AND YOUT OTHER STATEMENT) Q1, (SELECT FILED1, FIELD2, FIELD3, FIELD4, .... FROM YOURTABLE WHERE LOCA = 2 AND YOUT OTHER STATEMENT) Q2 WHERE Q1.XXX = Q2.XXX --Q1 與 Q2 之關聯欄位,須注意 Outter Join 問題若是院區資料不固定,則須 SELECT FILED1, FIELD2, FIELD3, FIELD4, .... FROM YOURTABLE WHERE LOCA = 1 AND YOUT OTHER STATEMENT UNION ALL SELECT FILED1, FIELD2, FIELD3, FIELD4, .... FROM YOURTABLE WHERE LOCA = 2 AND YOUT OTHER STATEMENT再參考以下文章做法 http://delphi.ktop.com.tw/topic.php?topic_id=46268 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
|
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
引言: Hi aj0724, 如果該 DataBase 皆為 Oracle,使用 DBLink 再用 Union 指令即可,若為異質資料庫,到是可以考慮用 ClientDataSet 來做該動作 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> 請教使用DBLink的意思是.... 可否提示清楚一點...謝謝! |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi aj0724, 所謂 DBLink(DataBase Links) 即資料庫之關連,就如同 Client 端連結資料庫一樣 假設 DB1 與 DB2 皆為 Oracle,而於 DB1 上建立一個 DBLink,名稱為 DB2,如此一來即可對 DB1 下以下指令,
select *
from TableName@DB2
意即,由 DB1 當為 DB2 之 Client,DB2 會將 TableName 上之資料回傳給 DB1,再由 DB1 回傳給前端,來達到兩個不同 DataBase 的關連 至於 BDLink 的設定,可使用 Oracle Enterprise Manager 中的 Schema Manager 進行設定 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
aj0724
一般會員 發表:11 回覆:41 積分:10 註冊:2003-04-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |