Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何定位“故障”的原因;此处需要一个字符串";错误_Sql Server_Crystal Reports_Vb6 - Fatal编程技术网

Sql server 如何定位“故障”的原因;此处需要一个字符串";错误

Sql server 如何定位“故障”的原因;此处需要一个字符串";错误,sql-server,crystal-reports,vb6,Sql Server,Crystal Reports,Vb6,首先,我要说,我是一名继承VB6/Crystal Reports应用程序的web开发人员,我对这两个应用程序都不太了解 我的客户机使用Access作为他们的数据库,我已将它们迁移到SQL Server。回去不是一个选择。迁移后,我几乎让他们的整个应用程序都能正常工作,但Crystal报告有问题 我以前遇到一个错误,说“服务器尚未打开”。为了解决这个问题,我将驱动程序从ODBC转换为OLE DB。现在我得到一个错误,上面写着“这里需要一个字符串”,就是这样…没有堆栈跟踪,没有调试按钮。所以我不知道

首先,我要说,我是一名继承VB6/Crystal Reports应用程序的web开发人员,我对这两个应用程序都不太了解

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

我以前遇到一个错误,说“服务器尚未打开”。为了解决这个问题,我将驱动程序从ODBC转换为OLE DB。现在我得到一个错误,上面写着“这里需要一个字符串”,就是这样…没有堆栈跟踪,没有调试按钮。所以我不知道如何找出问题所在

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

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

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


我尝试过遍历所有公式字段并在
CStr(…)
中包装数据库字段,但仍然得到错误。我还应该去哪里看呢?

根据我对Crystal的经验,不,没有调试损坏报告的神奇按钮

我绝对建议在Crystal Reports中打开报告(与VB相反)。你必须检查通常的嫌疑犯——从数据库专家开始;验证是否正确设置了表和联接。 查看记录选择公式(报告>选择公式>记录)-使用左上角的“检查”按钮验证语法


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

这不是关于转换为字符串的问题……公式字段中是否有任何if-else条件……如果是,您可以发布这些条件,并尝试解决如果您无法提供,请检查和else应返回相同的数据类型……您不能在if中返回字符串,在else中返回整数……这是一个调试选项,根据您的问题if这不工作,让我知道,我会尝试其他一些调试选项…正如你所知道的,crystal在提供正确的exceptions@Siva-在这种情况下,我相信我可能刚刚解决了这个问题。我发现了一个直接用于报表的日期字段,所以我制作了一个公式字段,进行了一些转换和默认设置,以确保它是一个字符串。但我不想补充这一点作为答案,因为主要问题是如何找到错误,而不是这个特定问题的原因。我预计在不久的将来会遇到更多这样的错误。除了公式字段,还有其他地方可以看吗?公式字段、选择专家公式、限制条件、突出显示专家……以某种方式或其他方式,所有这些都属于公式字段类别还有其他窍门吗?比如“将报告保存到Crystal Reports文件并用Crystal Reports应用程序打开它,然后…”(做一些让调试更容易的事情…?)?我现在遇到了一个不同的问题(正如预期的那样),我得到了一个“没有为此表查询或过程返回行集”,所有的问题似乎都与存储过程和
设置NOCOUNT ON
有关,但据我所知,我没有使用任何存储过程。我使用的大多是常规表和一个视图。知道去哪里找吗?