首页 > 开发 > 综合 > 正文

如何从不同的数据库中取出数据置于同一数据窗口中

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)



 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表