Я недавно унаследовал старый проект Visual Basic 6 / Crystal Reports, который подключается к базе данных сервера SQL. Я получаю сообщение об ошибке (Ошибка # -2147191803 Здесь требуется строка), когда я пытаюсь запустить проект, кажется, сужается до команды .Printout в следующем коде:
'Login to database
Set Tables = Report.Database.Tables
Set Table = Tables.Item(1)
Table.SetLogOnInfo ConnName, DBName, user, pass
DomainName = CStr(selected)
'Set parameter Fields
'Declare parameter holders
Set ParamDefs = Report.ParameterFields
'Store parameter objects
For Each ParamDef In ParamDefs
With ParamDef
MsgBox("DomainName : " + DomainName)
Select Case .ParameterFieldName
Case "Company Name"
.SetCurrentValue DomainName
End Select
Select Case .Name
Case "{?Company Name}"
.SetCurrentValue DomainName
End Select
'Flag to see what is assigned to Current value
MsgBox("paramdef: " + ParamDef.Value)
End With
Next
Report.EnableParameterPrompting = False
Screen.MousePointer = vbHourglass
'CRViewer1.ReportSource = Report
'CRViewer1.ViewReport
test = 1
**Report.PrintOut**
test = test + 3
currenttime = Str(Now)
currenttime = Replace(currenttime, "/", "-")
currenttime = Replace(currenttime, ":", "-")
DomainName = Replace(DomainName, ".", "")
startName = mPath + "\crysta~1.pdf"
endName = mPath + "\" + DomainName + "\" + DomainName + " " + currenttime + ".pdf"
rc = MsgBox("Wait for PDF job to finish", vbInformation, "H/W Report")
Name startName As endName
Screen.MousePointer = vbDefault
End If
Во время выполнения появляется форма, переменная ParamDef устанавливает «название компании», а когда она попадает в строку Report.PrintOut , которая запрашивает печать, выдает ошибку. Я предполагаю, что отчет Crystal не получает «Название компании» для правильного запуска отчета Crystal. Кто-нибудь знает, как это диагностировать ... на стороне vb6 или Crystal Reports, чтобы определить, что мне здесь не хватает?
ОБНОВЛЕНИЕ:
- вставил CStr (выбранный), чтобы DomainName был строкой
- вставил msgbox в цикл for выше и ниже строки .setcurrentvalue
- вставлен регистр "{? Company Name}", чтобы проверить, помогает ли это установить значение
- пробовал функции .AddCurrentValue и .SetCurrentValue в соответствии с рекомендациями других веб-сайтов форума
- исключил, что это была моя среда разработки .. загрузил его на другую машину с точно такими же отчетами vb6 crystal 8.5, работающими на winxp prof sp2, и появились те же ошибки.
и когда я запускаю MsgBox (ParamDef.Value), он также становится пустым с той же ошибкой пропущенной строки. Я также не могу найти никакой документации по классу craxdrt.ParameterFieldDefinition, чтобы увидеть, какие другие скрытые функции доступны. Когда я вижу список методов и переменных свойств, он не перечисляет SetCurrentValue как одну из функций.
Есть идеи по этому поводу?