我在这里找到了关于VB6调用水晶报表9的过程,但是我的语句是如下写的:
下面是一个函数,专门用来调用报表,其中FORM7是一个显示报表的窗体
Public Sub rptview(sqlstr As String, fname As String, pstr As String, rptstr As CRViewer9)
Dim cryapp As New CRAXDDRT.Application
Dim Report As CRAXDDRT.Report
Set tempsql = New ADODB.Recordset
tempsql.Open sqlstr, cn, adOpenStatic, adLockReadOnly
Set Report = cryapp.OpenReport(App.Path & "\rpt\" & fname & ".rpt")
Report.Database.SetDataSource tempsql
Screen.MousePointer = vbHourglass
Form7.Show
Form7.CRViewer91.ReportSource = Report
Form7.CRViewer91.EnableGroupTree = False
Form7.CRViewer91.EnableExportButton = True
Form7.CRViewer91.ViewReport
Screen.MousePointer = vbDefault
end sub
但是在调用过程中总是需要输入数据库密码,请问这是怎么会事?我的报表的连接都只做好的。
如果你愿意请回复到[email protected]中,急等着用,谢谢了。

解决方案 »

  1.   

    Dim m_Report As CRAXDRT.Report
    Dim M_App As CRAXDRT.ApplicationPrivate Sub Command1_Click()
    Set M_App = New CRAXDRT.Application
        Set m_Report = M_App.OpenReport(App.Path & "\Report.rpt")
        LoadReport
    End Sub
    Private Sub LoadReport()
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset
    cn.Open "Provider=SQLOLEDB.1;Password=123456;Persist Security Info=True;User ID=sa;Initial Catalog=Hotel;Data Source=server"
        rs.Open "select * from tables", cn, adOpenStatic, adLockOptimistic
        m_Report.DiscardSavedData
        m_Report.Database.Tables(1).SetDataSource rs
        CRViewer1.ReportSource = m_Report
        CRViewer1.Refresh
        CRViewer1.ViewReport
    End Sub
      

  2.   

    必須引用ado及crystal report9 activex designer design time library(internal) 
    還必須使用控件 crystal report viewer contral 
    priver sub form_load() 
    dim strsql as string 
    Dim i As Integer 
    dim capp As New CRAXDRT.Application 
    dim carp As New CRAXDRT.Report 
    dim cn as new adodb.connection 
    dim rs as new adodb.recordset 
    If cn.State = adStateOpen Then cn.Close 
    With cn 
    .Provider = "sqloledb" 
    .ConnectionString = "data source=dd;initial catalog=dfd;user id=sa;password=aaa" 
    .Open 
    End With 
    strsql="select * from tabname" 
    If rs.State = adStateOpen Then rs.Close 
    With rs 
    .ActiveConnection = cn 
    .CursorLocation = adUseClient 
    .Open strsql, cn, adOpenDynamic, adLockOptimistic 
    End With Set carp = capp.OpenReport("E:\reports\finisher.rpt") 
    For i = 1 To carp.Database.Tables.Count 
    If carp.Database.Tables.Item(i).Name = "ado" Then 
    carp.Database.Tables(i).SetDataSource rs 
    End If 
    Next crviw.ReportSource = carp 
    crviw.ViewReport 
    crviw.Zoom 100 
    end sub 
    --------------------------------------------------------------- 
    Dim CryApp As New CRAXDDRT.Application 
    Dim Report As CRAXDDRT.Report Dim strCnn As String 
    Set Report = CryApp.OpenReport(App.Path & "\report2.rpt") Dim cnn1 As New ADODB.Connection 
    Dim adoRS As New ADODB.Recordset strCnn = "Provider=sqloledb;Data Source=abrams;Initial Catalog=salestesttmp;User Id=sa;Password=test;" 
    cnn1.Open strCnn adoRS.Open "select top 10 * from answers", cnn1, adOpenDynamic, adLockBatchOptimistic 
    Report.Database.SetDataSource adoRS Screen.MousePointer = vbHourglass 
    CRViewer91.ReportSource = Report 
    CRViewer91.ViewReport 
    Screen.MousePointer = vbDefault