我最近继承了一个连接到sql server数据库的旧的visual basic 6/crystal reports项目。当我尝试运行该项目我得到(错误#-2147191803一个字符串这里需要)的错误信息,似乎在下面的代码将被缩小到.Printout命令:VB6/Crystal Report 8.5错误:这里需要一个字符串
'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变量设置“公司名称”,当它到达提示打印的行时,它会抛出错误。我猜水晶报告没有收到“公司名称”来正确运行水晶报告。是否有人知道如何诊断这个......无论是在vb6还是水晶报告方面,以确定我在这里失踪的东西?
UPDATE:
- 插入的CStr的(所选择的)来强制域名是一个字串
- 插入msgboxes到for循环的上方和.setcurrentvalue线以下
- 插入案“{?公司名称}“声明,看看是否有助于设置值
- 尝试.AddCurrentValue和.SetCurrentValue函数建议由其他论坛网站
- 排除了这是我的开发environement ..加载它在另一台机器上完全相同的vb6水晶报告8.5运行在winxp prof sp2上并出现相同的错误。
,当我运行MSGBOX(ParamDef.Value),也变成了空白含有相同缺少字符串错误。我也找不到有关craxdrt.ParameterFieldDefinition类的任何文档,以查看可用的其他隐藏函数。当我看到方法和属性变量列表时,它没有列出SetCurrentValue作为其中一个函数。 有关于此的任何想法?
谢谢,但这并没有真正的帮助。它设置参数的方式似乎完全不同于.NET – phill 2008-09-23 16:32:34