各位朋友,老兄,帮帮忙,我对水晶报表还不太会用
现在有一个问题在线等待,100分答谢,不够再加!
问题如下:我在水晶报表中建立了报表模板
在水晶报表的database->Show SQL Query 中可以看到以下SQL语句
SELECT
    S_Fucheckstock.CheckID, S_Fucheckstock.code, S_Fucheckstock.codedes, S_Fucheckstock.cunit, S_Fucheckstock.stocknum, S_Fucheckstock.checknum, S_Fucheckstock.checkdes, S_Fucheckstock.cheadd, S_Fucheckstock.chelost
FROM
    wgmstock.dbo.S_Fucheckstock S_Fucheckstock 
WHERE
    S_Fucheckstock.CheckID='05090001'
在预览时数据也正常的显示出来.
在VB中,调用语句如下:
Dim sel_SQL As String
sel_SQL = "select CheckID,code,codedes,cunit,stocknum,checknum,checkdes,cheadd,chelost from " & Str_DbName & "S_Fucheckstock " & _
          " where CheckID='" & Text1.Text & "'"
If Obj_fRs.State = 1 Then Obj_fRs.Close
Obj_fRs.Open sel_SQL, Obj_Conn, 3
If Obj_fRs.RecordCount <= 0 Then
Exit Sub
End If
以下为调用语句
  Cryprint.Connect = Obj_Conn
  Cryprint.SetTablePrivateData 0, 3, Obj_fRs
  Cryprint.ReportFileName = App.Path & "\Report\Rpt_PFUstock.rpt"
  Cryprint.ParameterFields(0) = "partname;" & "会计部 " & ";True"
  Cryprint.RetrieveDataFiles
  Cryprint.WindowShowSearchBtn = True
  Cryprint.WindowShowCloseBtn = True
  Cryprint.WindowState = crptMaximized
  Cryprint.Action = 1
  
  Cryprint.PageZoom 90
  Obj_fRs.Close
问题:无论我在VB中输入什么CheckID(列如:05090002),报表出来的数据都是在水晶报表中预览的数据(都是05090001CheckID的数据).救命呀,我晕了

解决方案 »

  1.   

    我的是8.0的,可选不选"save data with report"都一样呀
    谁来帮帮心呀!我真晕掉了~~~~~~~~~救命啊!~~~~~
      

  2.   

    不要选 save data with report
      

  3.   

    我试过了,都一样呀.
            objcrreport.DiscardSavedData
            objcrreport.Database.SetDataSource rs
            CRViewer91.ReportSource = objcrreport
            CRViewer91.ViewReport
    8.0也可以用这个方法吗?        CRViewer91.ReportSource = objcrreport
            CRViewer91.ViewReport'8.0好像没有这个方法呀
    8.0怎么用呀
      

  4.   

    你的“save data with report”在报表设计器那里选的,
    我找了,没有看见啊,告诉我好吗
      

  5.   

    还有一个办法
    在窗体unload事件中
       set objcrreport=nothing
    问题出在你没有清空上次的数据集
      

  6.   

    要引用ado报表的form窗体代码
    Dim rs As ADODB.Recordset
    Dim Report As New CrystalReport1
    Dim msgtext As StringPrivate Sub Form_Load()
      Dim strsql As String
      Set Report = Nothing
      strsql = "select * from tmp_B01"
      Set rs = ExecuteSQL(strsql, msgtext)
      Report.Database.SetDataSource rs
      Screen.MousePointer = vbHourglass
      CRViewer1.ReportSource = Report
      CRViewer1.ViewReport
      Screen.MousePointer = vbDefault
    End SubPrivate Sub Form_Resize()
      CRViewer1.Top = 0
      CRViewer1.Left = 0
      CRViewer1.Height = ScaleHeight
      CRViewer1.Width = ScaleWidth
    End SubPrivate Sub Form_Unload(Cancel As Integer)
      Set Report = Nothing
    End Sub类模块代码
    Dim msgtext As String
    Dim mrc As ADODB.RecordsetPublic Function ExecuteSQL(ByVal sql As String, MsgString As String) As ADODB.Recordset
        Dim cnn As ADODB.Connection
        Dim rst As ADODB.Recordset
        Dim sTokens() As String
        'Dim SQL As String
        On Error GoTo ExecuteSQL_Error
        sTokens = Split(sql)
        Set cnn = New ADODB.Connection
        cnn.Open ConnectString
        If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then
           cnn.Execute sql
           MsgString = sTokens(0) & "query successful"
        Else
           Set rst = New ADODB.Recordset
           rst.Open Trim$(sql), cnn, adOpenKeyset, adLockOptimistic
          
           
           Set ExecuteSQL = rst
            
           MsgString = "查询到" & rst.RecordCount & "条纪录"
        End If
    ExecuteSQL_Exit:
        Set rst = Nothing
        Exit Function
        Set cnn = Nothing
    ExecuteSQL_Error:
        MsgString = "查询错误:" & Err.Description
        Resume ExecuteSQL_Exit
    End FunctionPublic Function ConnectString() As String
        ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\计划管理系统.mdb;Persist Security Info=False"
        'ConnectString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=aa;Data Source=RJB-CL"
    End Function