【问题标题】:How to locate cause of "A string is required here" error如何定位“此处需要字符串”错误的原因
【发布时间】:2016-05-24 16:22:11
【问题描述】:

首先让我说我是一名继承 VB6/Crystal Reports 应用程序的 Web 开发人员,我也不太了解。

我的客户使用 Access 作为他们的数据库,我已将它们迁移到 SQL Server。回去不是一个选择。迁移后,我几乎让他们的整个应用程序正常工作,但 Crystal Reports 出现问题。

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

我发现的所有其他类似问题总是有导致问题的特定公式,但这就是我卡住的地方。没有堆栈跟踪或调试按钮或任何东西,我不知道在哪里查找错误。

所以我的问题更多是关于调试策略的问题,而不是具体的代码问题。在哪里查找错误?

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

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

【问题讨论】:

  • 这不是关于转换为字符串...您在公式字段中是否有任何 if else 条件...如果是,您可以发布那些将尝试解决的问题
  • 如果您无法提供检查是否和 else 都应返回相同的数据类型...您不能在 if 中返回字符串,在 else 中返回整数...根据您的问题,这是一个调试选项如果这不起作用,请告诉我将尝试其他一些调试选项....如您所知,水晶在提供正确的异常方面非常糟糕
  • @Siva - 在这种情况下,我相信我可能刚刚解决了这个问题。我发现了一个直接在报告中使用的日期字段,所以我创建了一个公式字段,它进行了一些转换和默认设置,以确保它是一个字符串。但我不想将其添加为答案,因为主要问题是关于如何找到错误而不是这个特定问题的原因。我希望在不久的将来会遇到更多这样的错误。除了公式字段,还有其他值得关注的地方吗?
  • 公式字段,选择专家公式,抑制条件,突出专家,......以某种方式或其他方式进入公式字段类别
  • 还有什么技巧吗?就像“将报表保存到 Crystal Reports 文件并使用 Crystal Reports 应用程序打开它,然后……”(做一些使调试变得更容易的事情……)?我现在遇到了一个不同的问题(如预期的那样),我得到一个“没有为此表查询或过程返回任何行集”,并且所有问题似乎都与存储过程和SET NOCOUNT ON有关,但到目前为止据我所知,我没有使用任何存储过程。我主要使用常规表格和一个视图。知道去哪里找吗?

标签: sql-server crystal-reports vb6


【解决方案1】:

根据我使用 Crystal 的经验,不,没有神奇的按钮可以调试损坏的报告。

我绝对推荐在 Crystal Reports(而不是 VB)中打开报表。您必须检查通常的嫌疑人 - 从数据库专家开始;验证表和连接是否设置正确。 查看记录选择公式(报告 > 选择公式 > 记录) - 使用左上角的“检查”按钮来验证语法。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多