在VB中调用水晶报表(RPT文件)时用ADO SQL语句控制记录报表显示无效的解决!
代码如下:
Public conn As New ADODB.Connection
Public rs As New ADODB.Recordset
Dim oApp As New CRAXDRT.Application
Dim oRpt As CRAXDRT.Report
Dim exportOpts As CRAXDRT.ExportOptions
Private Sub Form_Load()
  conn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & App.Path & "\baobiao.mdb"
  rs.Open "select * from biao Where yields = 100 ", conn, adOpenStatic, adLockReadOnly, adCmdTextScreen.MousePointer = vbHourglass
Set oRpt = oApp.OpenReport(App.Path & "\Report1.rpt")
  oRpt.DiscardSavedData
  oRpt.Database.SetDataSource rs, 3, 1
  oRpt.EnableParameterPrompting = False
CRViewer91.ReportSource = oRpt  '启用水晶报表的预览功能
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer91.Top = 0
CRViewer91.Left = 0
CRViewer91.Height = ScaleHeight
CRViewer91.Width = ScaleWidth
End Sub
Private Sub Form_Unload(Cancel As Integer)
      Set rs = Nothing
      Set conn = Nothing
      Unload Form2
End Sub
'---------------------------
oRpt.Database.SetDataSource rs, 3, 1换成
  For   i   =   1   To   oRpt.Database.Tables.Count        '设置报表的数据源   
  If   oRpt.Database.Tables.Item(i).Name   =   "cBIAO"   Then     
        oRpt.Database.Tables(i).SetDataSource   rst   
  End   If   
  Next
显示的报表数据还是没有改变
请指教这是为什么!!期盼!!!

解决方案 »

  1.   

    你需要对水晶报表的每个表(不管你用的什么数据源)传入该表的数据源.
      For  i  =  1  To  oRpt.Database.Tables.Count        '设置报表的数据源  
              select case i
                  case 1
                     oRpt.Database.SetDataSource rs1_第一个表的记录集
                    case 2
                     oRpt.Database.SetDataSource rs1_第二个表的记录集
                     case....
               end select  Next 
    然后在CRViewer91.ViewReport 前加一行doevents建议去阿泰空间看看