请问用VB自带的DataReport打印报表的问题,我在界面有一个文本框,名为:txtMsear
我的目的是:以界面txtMsear.text所示的月份为条件,在报表中打印月份符合条件的记录,我用以下代码时,只打印出表里第一条的记录。Private Sub Command3_Click()
Dim cn As New ADODB.Connection                '定义数据库的连接
Dim rst As New ADODB.Recordset
cn.ConnectionString = "Provider=sqloledb;Data Source=OFFICE;Initial Catalog=h;User Id=sa;Password=123;"
cn.Open
rst.CursorLocation = adUseClient
rst.Open "select * from lzliubaob", cn, adOpenDynamic, adLockOptimistic
DataEnvironment1.Commands("Command1").CommandText = "lzliubaob where 月份='" & txtMsear.Text & "'"
DataReport1.Show麻烦大家帮下忙,多谢了。

解决方案 »

  1.   

    try:
        Dim cn As New ADODB.Connection                '定义数据库的连接 
        Dim rst As New ADODB.Recordset     cn.ConnectionString = "Provider=sqloledb;Data Source=OFFICE;Initial Catalog=h;User Id=sa;Password=123;" 
        cn.Open     rst.CursorLocation = adUseClient
        rst.Open "select * from lzliubaob where 月份='" & txtMsear.Text & "'" ", _
           cn, adOpenDynamic, adLockOptimistic 
        '如果你月份字段非文本类型,那么去掉上面WHERE子句中的单引号
        set DataReport1.datasource =rst
        DataReport1.Show 
      

  2.   

    去掉这一句:Set DataReport1.DataSource = rst 就可打印表里第一条记录。但这不是目的
      

  3.   

    去掉这一句:Set DataReport1.DataSource = rst 就可打印表里第一条记录。但这不是目的
      

  4.   

    你用了recordset,所以2楼的方法是不需要DataEnvironment控件....
    datareport与数据字段相关的控件都要设置对应的datafield属性(1.可以通过代码设置,2.也可以通过报表属性窗口设置),并且不能有多余的控件...
    保证SQL语句返回正确的记录集...
      

  5.   

    数据字段相关的控件用的是RptTextBox控件,都已绑定了,可以在属性窗口查到DataField属性,但还是提示同样的错误
    参数类型不正确,或不在可以接受的范围之内或与其他参数冲突 DataReport界面上还有几个Label控件,这个没有关系吧?
      

  6.   

    如果你用DataEnvironment,并且绑定了数据源,那么在text的相关属性中可以看到datafield属性,使用DE的方法MSDN中有示例,你可以查一下
    如果你不用DE,可以直接绑定recordset,方法上面说了,你可以新建一个工程,添加一个datareport测试...
    你现在的代码又是DE,又是rst,二个合在一起,用的又不对,所以得不到结果...
      

  7.   

    不用DE,直接绑定记录集的方法:
        dim cn as connection
        dim rst as recordset
        dim sql as string
        
        '设置报表text1控件的datafield属性
        DataReport1.Sections("Section1").Controls("text1").DataField = "itemID"
      '连接数据库
        set cn=new connection
        cn.open "......"     
        '返回记录集
        sql="select * from tb "
        set rst=cn.execute(sql)
        '绑定报表
        set datareport1.datasource=rst
        DataReport1.Show
      

  8.   

    既然是类型错误,猜想你的[月份]字段是 datetime 类型吧?那么 SQL 中 = 后面应该是日期值,应该为完整的年月日。
    假定[月份]字段值都是 1 日,并且时分秒都为 0;
    假定 txtMsear 输入形式为 2009-11。
    rst.Open "select * from lzliubaob where 月份='" & txtMsear.Text & "-01'", ...
      

  9.   

    恩,同意老鸟的
    我6楼也说了要“保证SQL语句返回正确的记录集...”,也不知道他测试没有....
      

  10.   

    不好意思。这几天在外没有上网,问题已解决,多谢vbman2003及其他朋友。结贴。