我新建了一个水晶报表,且各字段都已经设置好了,执行程序后有两列的值是颠倒的,也就是两列互换了一下,并且有一个字段的值取不出来。我检查报表和SQL语句后发现没有什么错的地方啊,请问高手这是怎么回事啊?

解决方案 »

  1.   

    不是吧,我用的是水晶报表8.0,没有遇到你的问题啊
    给你个例子
    放到报表生成的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
    函数ExecuteSQL,放到类模块中
    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