У меня есть приложение VB6, которое использует Crystal Reports 8.5 для просмотра отчетов. Теперь я создал новый отчет, в котором в качестве источника данных используется хранимая процедура SQL Server. При просмотре этого отчета в моем приложении я использую ADODB.Recordset
в качестве источника данных для отчета. Проблема в том, что Crystal Reports не может показать отчет. Он показывает только сообщение об ошибке пустой базы данных и информационное предупреждение о том, что Сервер еще не открыт.
Я искал в Google, как будто моя жизнь зависит от этого, но я нашел только примеры проблемных ситуаций, которые делают именно то, что я делаю. Иногда с небольшими отличиями, но я перепробовал их все. Они продолжают заканчиваться одними и теми же сообщениями об ошибках.
Это мой код для заполнения набора записей.
Dim Records As ADODB.Recordset
Dim Cmd As ADODB.Command
Set Cmd = New ADODB.Command
Cmd.ActiveConnection = clSQL.DBConnection '< -- Existing connection that uses CursorLocation adUseClient
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "SPCrystalReports"
Cmd.Parameters.Append Cmd.CreateParameter("ReportType", adVarChar, adParamInput, 256, Soort)
Cmd.Parameters.Append Cmd.CreateParameter("ReportFile", adVarChar, adParamInput, 256, RapportNaam)
Cmd.Parameters.Append Cmd.CreateParameter("Template", adVarChar, adParamInput, 256, Template)
Cmd.Parameters.Append Cmd.CreateParameter("WhereClause", adVarChar, adParamInput, 8000, CentralSQL)
Cmd.Parameters.Append Cmd.CreateParameter("WhereClause2", adVarChar, adParamInput, 8000, ExtraSQL)
Cmd.Parameters.Append Cmd.CreateParameter("Date", adDate, adParamInput, , Datum)
Cmd.Parameters.Append Cmd.CreateParameter("DateFrom", adDate, adParamInput, , DatumVan)
Cmd.Parameters.Append Cmd.CreateParameter("DateTo", adDate, adParamInput, , DatumTot)
Set Records = Cmd.Execute
Set Cmd = Nothing
Вот как я загружаю свой отчет:
Dim crApp As CRAXDRT.Application
Dim crRep As CRAXDRT.Report
Set crApp = New CRAXDRT.Application
Set crRep = crApp.OpenReport(ReportFile, 1)
А затем я попробовал следующие примеры кода, чтобы отчет заработал.
Образец 1:
crRep.DiscardSavedData
crRep.Database.SetDataSource Records
Образец 2:
crRep.DiscardSavedData
crRep.Database.SetDataSource Records, 3, 1
Образец 3:
crRep.Database.Tables(1).SetLogOnInfo DBServer, DBDatabase, DBUser, DBPass
crRep.DiscardSavedData
crRep.Database.SetDataSource Records, 3, 1
Образец 4:
crRep.DiscardSavedData
crRep.Database.Tables(1).SetDataSource Records, 3
Образец 5:
crRep.Database.Tables(1).SetLogOnInfo DBServer, DBDatabase, DBUser, DBPass
crRep.DiscardSavedData
crRep.Database.Tables(1).SetDataSource Records, 3
Образец 6:
crRep.DiscardSavedData
crRep.Database.Tables(1).SetPrivateData 3, Records
Образец 7:
crRep.Database.Tables(1).SetLogOnInfo DBServer, DBDatabase, DBUser, DBPass
crRep.DiscardSavedData
crRep.Database.Tables(1).SetPrivateData 3, Records
Все они заканчивают этим всплывающим окном с ошибкой, за которым следует всплывающее окно с информацией.
Как заставить это работать?
sql-server
, чтобы он получил больше внимания от гораздо более крупного суб-сообщества БД. - person wqw   schedule 24.05.2021