如何在水晶报表中显示动态查询出的记录?我用的是VB,Access数据库。
谢谢啊。。

解决方案 »

  1.   

    1.在報表中以ado連接access數據庫,建立一個與查詢相同字段數數據源
    2.在查詢出后,把查詢出的rs傳到報表,再執行更新就可以了
    3.相關用法的例子請參考水晶報表的文件夾的sample文件夾
      

  2.   

    添加一个CrystalReport控件    Dim rsAccess As Recordset
        Dim ConnAccess As New Connection
        Dim StrSQLAccess As String
        
        ConnAccess.Open pSetLinkPrint '这里是连接字符串
        
        'print.mdb为临时存储库
        ConnAccess.Execute "Delete from Print"                '清空临时库
        StrSQLAccess = "select * from Print order by id asc"
        Set rsAccess = New Recordset
        rsAccess.Open StrSQLAccess, ConnAccess, adOpenStatic, adLockOptimistic
              '如有多条数据则可加一个DO循环
              rsAccess.AddNew                                 '向临时库中注入数据
              rsAccess("号码").Value = "数据"
              rsAccess("号码2").Value = "数据2"
              ... ...
              ... ...
              rsAccess.Update
        
        '在这里显示报表
        CrystalReport1.WindowTitle = "打印预览" & "    操作员:" & pUserNameL
        CrystalReport1.DataFiles(0) = DBSeaverPath & "\print.mdb"
        CrystalReport1.ReportFileName = App.Path & "\Rpt" & "\rtpMX.rpt"
        CrystalReport1.WindowState = crptMaximized         '最大化
        CrystalReport1.Action = 1    rsAccess.Close
        Set rsAccess = Nothing
        ConnAccess.Close
        Set ConnAccess = Nothing
    以上是一个例子你可以参照,记得给分,有问题可MSN:[email protected].
    连接字符串请参照http://blog.csdn.net/qvbhdnvto/archive/2006/09/17/1233282.aspx
      

  3.   

    '注意报表1.rpt自己设计 是水晶报表文件Private objCRApp As New CRAXDRT.Application    '水晶报表应用程序对象
    Private objCRReport As New CRAXDRT.Report             '报表对象
    Dim rs As ADODB.Recordset
    Dim msgtext As StringPrivate Sub cmdsearch_Click()  '清除报表中保持的数据
      objCRReport.DiscardSavedData
      '形成数据集
      '单个表适合用sql语句
      strsql = "select * from clerk where clerk_bm='" & Combo1.Text & "'"
      '注意:多个表筛取数据 必须要用视图,是数据形成一个表,水晶报表不能用sql语句
      'strsql="select * from a,b where a.a1=b.a1" '水晶报表不支持这样的sql语句
      'strsql = "select * from clerk_organ_view where clerk_bm='" & Combo1.Text & "'"
      Set rs = ExecuteSQL(strsql, msgtext)   'Executesql是执行sql语句,你可以自己写
      '赋给报表数据
      objCRReport.Database.SetDataSource rs
      CRViewer91.ReportSource = objCRReport  '指定报表来源
      CRViewer91.ReportSource = objCRReport
      '显示报表
      CRViewer91.ViewReport
    End SubPrivate Sub Form_Load()
      Dim strsql As String
      strsql = "select distinct clerk_bm from clerk"
      Set rs = ExecuteSQL(strsql, msgtext)
      Do While Not rs.EOF
         Combo1.AddItem rs(0)
         rs.MoveNext
      Loop
      
      '加载报表模板
      '单个数据表形成的报表
      Set objCRReport = objCRApp.OpenReport(App.Path & "\1.rpt", 1)
      '多个数据表形成的报表
      Set objCRReport = objCRApp.OpenReport(App.Path & "\2.rpt", 1)
      
    End SubPrivate Sub Form_Resize()
    '  CRViewer91.Top = 50
    '  CRViewer91.Left = 0
    '  CRViewer91.Height = ScaleHeight - Combo1.Height
    '  CRViewer91.Width = ScaleWidth
    End Sub