2013-11-21 5 views
-1

Я разрабатываю приложение winform в vb6. Я использую хрустальный отчет 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 

дает ошибку на линии: Set CrystalReport1.DataSource = RS: в собственности есть только для записи. Расскажите, как отчеты отчета могут быть динамическими? Plz помочь мне ...

ответ

0

Вместо того

Set CrystalReport1.DataSource = rs 

сделать

CrystalReport1.DataSource = rs 

EDIT:

Взгляните на следующий пример и посмотреть, если это поможет вам:

'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

он говорит, что определенный пользователем тип не определен для строки тусклый отчет как новый crystalreport1. Я должен добавить некоторые ссылки, которые я думаю. – Vignesh

Смежные вопросы