如何找到原因"这里需要一个字符串"错误

时间:2016-05-24 16:22:11

标签: sql-server crystal-reports vb6

首先我要说的是,我是一位继承VB6 / Crystal Reports应用程序的Web开发人员,而且我也不太清楚。

我的客户端使用Access作为他们的数据库,我已将它们迁移到SQL Server。回头不是一个选择。我在迁移后几乎完成了整个应用程序的工作,但Crystal Reports遇到了问题。

我之前收到的错误是"服务器尚未打开。"为了解决这个问题,我将驱动程序从ODBC转换为OLE DB。现在我收到的错误是"这里需要一个字符串。"那就是它......没有堆栈跟踪,没有调试按钮。所以我不知道如何追踪问题。

我发现的所有其他类似问题始终都有导致问题的具体公式,但这就是我被困的地方。没有堆栈跟踪或调试按钮或任何东西,我不知道在哪里寻找错误。

因此,对于调试策略而言,我的问题不仅仅是特定的代码问题。我在哪里寻找错误?

如果您需要代码示例,我可以提供它们,但您必须具体说明如何获取您需要查看的任何转储。我使用的是Microsoft Visual Basic 6.0编辑器。每当我右键单击数据库字段并单击验证数据库时,我会看到错误消息(它首先显示"数据库是最新的"然后"这里需要一个字符串")。尝试在应用程序中运行实际报告时,我也看到了错误。

我已尝试浏览所有公式字段并在CStr(...)中包装数据库字段,但我仍然收到错误消息。我应该在哪里看看?

1 个答案:

答案 0 :(得分:1)

根据我对Crystal的经验,不,没有魔法按钮来调试损坏的报告。

我肯定会建议在Crystal Reports中打开报告(而不是VB)。你必须检查通常的嫌疑人 - 从数据库专家开始;验证表和连接是否正确设置。 查看记录选择公式(报告>选择公式>记录) - 使用"检查"左上角的按钮用于验证语法。

查看公式和数据库字段时,如果字段旁边有绿色复选标记,则可以判断报表中是否使用了字段/公式。水晶足够聪明'在大多数情况下,如果报告未使用该对象,则它不会验证逻辑 - 这包括表格。如果一个表被连接,并且没有强制实施链接,并且该表在任何地方都没有被使用,那么Crystal甚至不会在SQL查询中包含该表。只是一个有用的花絮。最后,您可以将报告定义导出到文本文件 - 单击导出并选择"报告定义" - 这对于搜索字段很有帮助。希望有所帮助。