2013-11-21 57 views
-1

我正在開發vb6中的winform應用程序。我正在使用水晶報告4.6。我創建了一個顯示來自表格(MS Access)的所有數據的水晶報告。我沒有選擇保存報告數據,我保存了報告。我只是想在應用程序中調用它。所以我將CrystalReportControl組件包含在我的應用程序中。現在我想設置要在報告中顯示的記錄。記錄根據用戶對文本框的輸入進行選擇。 數據庫中的記錄是在下面的代碼中完成的。如何在運行時將數據庫連接到水晶報表?

Dim conn As ADODB.Connection 
    Dim rs As ADODB.Recordset 
    Private Sub Command1_Click() 
     Set conn = New ADODB.Connection 
     conn.Open "provider=Microsoft.jet.oledb.4.0;Data Source=" & App.Path &"\faculty.mdb" 
     Set rs = New ADODB.Recordset 
     rs.Open "select * from facultydetails where eid=1234", conn, adOpenDynamic, adLockPessimistic 
     CrystalReport1.ReportFileName = App.Path & "\faculty.rpt" 
     Set CrystalReport1.DataSource = rs 
     CrystalReport1.Action = 1 
    End Sub 

提供該行的錯誤:設置CrystalReport1.DataSource = RS: 物業是隻寫。 告訴我報告的記錄可以是動態的嗎? PLZ幫我...

回答

0

而不是

Set CrystalReport1.DataSource = rs 

CrystalReport1.DataSource = rs 

編輯:

看看下面的例子,看看是否會幫助你:

'CrystalReport1 is the name of the dsr file 
Dim Report As New CrystalReport1  

Dim cdoRowset As CrystalDataObject.CrystalComObject 
Dim varArray() As Variant 

'Open ADO Connection 
Set m_cnAdo = New ADODB.Connection 
m_cnAdo.ConnectionString = "DRIVER={SQL Server};UID=[UserID];PWD=[Password]" _ 
      & ";SERVER=[Server];DATABASE=[Database]" 

m_cnAdo.Open 

Dim rsAdo As ADODB.Recordset 
Dim cmdAdo As ADODB.Command 


'Using Embedded Query 
Set cmdAdo = New ADODB.Command 
Set rsAdo = New ADODB.Recordset 
cmdAdo.ActiveConnection = m_cnAdo 
cmdAdo.CommandText = "SELECT * FROM Table WHERE Param = " & lngParam1 
cmdAdo.CommandType = adCmdText 


Set rsAdo = cmdAdo.Execute  
Report.Database.SetDataSource rsAdo, 3, 1 
+0

它說類型不匹配的同一行。 – Vignesh

+0

它表示用戶定義的類型沒有爲行 dim報告定義爲新的crystalreport1。我應該包括一些我認爲的參考文獻。 – Vignesh