我最近继承了一个旧的 Visual Basic 6/ Crystal Reports 项目,它连接到一个 sql server 数据库。当我尝试运行项目时收到的错误消息(错误# -2147191803 A String is required here)似乎缩小到以下代码中的 .Printout 命令:
'登录数据库 设置表 = Report.Database.Tables 设置表 = Tables.Item(1) Table.SetLogOnInfo ConnName, DBName, user, pass 域名 = CStr(已选择) '设置参数字段 '声明参数持有者 设置 ParamDefs = Report.ParameterFields '存储参数对象 对于 ParamDefs 中的每个 ParamDef 使用 ParamDef MsgBox("域名:" + 域名) 选择案例 .ParameterFieldName 案例“公司名称” .SetCurrentValue 域名 结束选择 选择案例.名称 案例“{?公司名称}” .SetCurrentValue 域名 结束选择 '标记以查看分配给当前值的内容 MsgBox("paramdef:" + ParamDef.Value) 结束于 下一个 Report.EnableParameterPrompting = False Screen.MousePointer = vbHourglass 'CRViewer1.ReportSource = 报告 'CRViewer1.ViewReport 测试 = 1 **报告.打印输出** 测试 = 测试 + 3 当前时间 = Str(现在) 当前时间=替换(当前时间,“/”,“-”) 当前时间=替换(当前时间,“:”,“-”) 域名=替换(域名,“。”,“”) startName = mPath + "\crysta~1.pdf" endName = mPath + "\" + DomainName + "\" + DomainName + " " + currenttime + ".pdf" rc = MsgBox("等待 PDF 作业完成", vbInformation, "H/W Report") 名称 startName 作为 endName Screen.MousePointer = vbDefault 万一
在运行期间,表单显示,ParamDef 变量设置“公司名称”,当它到达提示打印的Report.PrintOut行时,它会抛出错误。我猜水晶报告没有收到“公司名称”来正确运行水晶报告。有谁知道如何诊断这个......无论是在vb6还是水晶报告方面来确定我在这里遗漏了什么?
更新:
- 插入 CStr(selected) 以强制 DomainName 为字符串
- 将 msgboxes 插入到 .setcurrentvalue 行上方和下方的 for 循环中
- 插入 Case "{?Company Name}" 语句以查看是否有助于设置值
- 尝试了其他论坛网站建议的 .AddCurrentValue 和 .SetCurrentValue 函数
- 排除这是我的开发环境..将它加载到另一台机器上,在 winxp prof sp2 上运行完全相同的 vb6 水晶报告 8.5 并出现相同的错误。
当我运行 MsgBox(ParamDef.Value) 时,它也会出现相同的缺失字符串错误。我也找不到关于 craxdrt.ParameterFieldDefinition 类的任何文档,以查看还有哪些其他隐藏函数可用。当我看到方法和属性变量的列表时,它没有将 SetCurrentValue 列为函数之一。对此有什么想法吗?