如何從不同的數據庫中取出數據置于同一數據窗口中
2024-07-21 02:08:58
供稿:網友
在一次項目開發過程中需要從不同的數據庫(eg: db1=oracle;db2=sybase)中取出數據方如同一個數據窗口中作為報表. 思路如下:
1. 創建兩個tabular型的datawindow, dw_oracle, dw_sybase.
2. 創建一個composite的datawindow"dw_cmpst". 在這個數據窗口中置入dw_oracle和dw_syabse. 分別命名為"dw_orcl"和"dw_sbs".
3. 在腳本中寫入如下的語句:
datawindowchild ldwc_report
transaction new_sqlca;
connect using sqlca; // 使用默認的事務對象
dw_cmpst.getchild( "dw_orcl", ldwc_report) // get a reference to
the first report in the composite
ldwc_report.settransobject( sqlca)
ldwc_report.retrieve()
disconnect using sqlca;
new_sqlca = create transaction // 第二個事務對象
new_sqlca.dbms = "syc sybase system 10/11"
new_sqlca.database = "database"
new_sqlca.logpass = "password"
new_sqlca.servername = "sybase_server"
new_sqlca.logid = "logid"
new_sqlca.dbparm = "release='11',staticbind=0,datetimeallowed='yes'"
connect using new_sqlca;
dw_cmpst.getchild( "dw_sbs", ldwc_report) // reference
ldwc_report.settransobject( new_sqlca)
ldwc_report.retrieve()
disconnect using new_sqlca;
setnull( new_sqlca);
dw_cmpst.retrieve()//取出數據并顯示
最后一句出現錯誤,去掉這一語句又不能顯示數據,百思不得其解. 后來在一國外論壇得到如下答案:
將dw_cmpst.retrieve()改為如下語句:
dw_cmpst.setredraw(false)
dw_cmpst.modify("datawindow.print.preview=yes")
dw_cmpst.modify("datawindow.print.preview=no")
dw_cmpst.setredraw(true)