我该如何调试这个Crystal Reports公式?

3

我在水晶报表中有以下公式:

IF ({REPORT_INVOICE_SUMMARY.ITEMCONCAT} <> 'Move'
    and {REPORT_INVOICE_SUMMARY.ITEMCONCAT} <> 'Daywork'
    and {REPORT_INVOICE_SUMMARY.ITEMCONCAT} <> 'Billable Repair'
    and InStr({REPORT_INVOICE_SUMMARY.ITEMCONCAT},'Non-Billable',1) = 0
    and {REPORT_INVOICE_SUMMARY.ITEMCONCAT} <> 'Turnkey Daywork') then
    {REPORT_INVOICE_SUMMARY.QUANTITY}
else
    0

我该如何逐步执行并查看当前 REPORT_INVOICE_SUMMARY.ITEMCONCAT 的值?
我真的需要看到 REPORT_INVOICE_SUMMARY.ITEMCONCAT 的值。

你尝试将它添加为报告细节的字段了吗? - Conrad Frix
Crystal Reports没有像正式的IDE中所期望的调试功能。 - craig
2个回答

6
作为CR没有调试功能,你需要尝试以下其中一种方法:
  • 逐步构建公式并在画布上查看结果
  • 通过为每个情况返回一个值来测试复杂的逻辑:If [test] Then 'A' Else If [test] Then 'B' Else 'C'
  • 将可重用的逻辑重构为自定义函数
无论如何,更好的组织逻辑的方式是:
IF Not( {REPORT_INVOICE_SUMMARY.ITEMCONCAT} IN ['Move','Daywork','Billable Repair','Turnkey Daywork'] )
    AND InStr({REPORT_INVOICE_SUMMARY.ITEMCONCAT},'Non-Billable',1) = 0 THEN
    {REPORT_INVOICE_SUMMARY.QUANTITY}
ELSE
    0

很好知道。如果出现“链接腐烂”,另一个线程建议在您想要检查公式计算值的地方创建一个除以零错误(1/0)。 - craig

3
也许我发布我所做的会有帮助。
Running Total Formaul (Basic Syntax)
dim debug as number
debug = 0

<buggy code>

formula = debug / debug   <- divide by zero  breakpoint

在预览模式下运行时,您将看到公式中的变量及其当前值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接