你把查询的SQL语句记录下来,作为数据环境报表的查询使用

解决方案 »

  1.   

    如果你的报表的字段数目是固定的,这就好办。
    在DETAIL中排好TEXTBOX,把它们的DATAFIELD依次设为FIELD1、FIELD2...
    而你的SQL则统一使用别名。
    SELECT ID AS FIELD1,NAME AS FIELD2 ....
    SELECT CARGO AS FIELD1,TYPE AS FIELD2...
    再把RS绑定到报表的DATASOURCE就可以了。
      

  2.   

    谢谢。但是报表及报表中各控件的DATAMEMBER怎么办,空吗?
      

  3.   

    另外,报表的datasource怎样与查询结果建立联系?
      

  4.   

    如果DATAREPORT直接与RECORDSET连接,DATAMEMBER不用设置,只设置DATAFIELD就可以了。
    建立方法如下:
    在DATAREPORT中建立以下SUB
    dim rs as new adodb.recordset
    PUBLIC SUB RPTPRINT(BYVAL strSql as string)
    rs.open strsql,cn,3,1
    set me.datasource=rs
    me.show
    end sub
    在外部调用datareport1.rptprint就可以了
      

  5.   

    另外,在Datareport的Terminal事件中加入以下代码:
    if rs.state<>0 then rs.close
    set rs=nothing
      

  6.   

    我是到出到excel的,允许用户选择字段
      

  7.   

    set datareport.datasource=rs
    datareport.Sections("section1").Controls("label2").datafield = rs("field1")
    datareport.show
    注意这两句的顺序,不然会出现无数据源的错误提示
      

  8.   

    回复人: nebular(星云) (  ) 信誉:100  2002-04-17 14:40:00  得分:0   
      如果DATAREPORT直接与RECORDSET连接,DATAMEMBER不用设置,只设置DATAFIELD就可以了。建立方法如下:在DATAREPORT中建立以下SUB
    dim rs as new adodb.recordset
    PUBLIC SUB RPTPRINT(BYVAL strSql as string)
    rs.open strsql,cn,3,1
    set me.datasource=rs
    me.show
    end sub
    在外部调用datareport1.rptprint就可以了
    **************************************
    我是过了,可是在rs.open strsql,cn,3,1处,
    实时错误"3001":
    变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。
     
     
      

  9.   

    应该是你的SQL有问题,看这个贴子
    http://www.csdn.net/Expert/TopicView1.asp?id=654745
      

  10.   

    sql没问题,我得查询运行都没问题。
    rs.open strsql,cn,3,1
    运行中 strsql没问题,而cn为空值。
      

  11.   

    是不是你有报表中的控件的DATAFIELD不对应RECORDSET中的字段名
      

  12.   

    啊!!!你总不能照抄吧。
    rs.open strsql,cn,3,1
    CN要换成你的ADODB连接,RS要换成你的RECORDSET
      

  13.   

    特别鸣谢nebular(星云):
    由于您的帮助,我的处女问得到解决,希望以后多多照顾小弟。