我一直在为我们的某个诊所制作一些Crystal Reports,但由于某些原因,我和其他IT团队成员都不理解为什么会出现这种错误。所以首先这里是特别给出的错误:
此处需要布尔值。详细信息:文件中的errorKind错误 CPTCharges {FD775771-FD54-40B1-891A-87AFD9539789} .rpt:错误 公式CPTCodes:'if {CPTCodes.Day} =“0”然后'布尔值是 需要在这里。详细信息:errorKind
该报告包含一些公式字段。它具体指的是:
if {CPTCodes.Day} = "0" Then
if {CPTCodes.D0} = "1" Then
{CPTCodes.CPTID}
else ""
else if {CPTCodes.Day} = "3" Then
if {CPTCodes.D3} = "1" Then
{CPTCodes.CPTID}
else ""
else if {CPTCodes.Day} = "4" Then
if {CPTCodes.D4} = "1" Then
{CPTCodes.CPTID}
else ""
else if {CPTCodes.Day} = "5" Then
if {CPTCodes.D5} = "1" Then
{CPTCodes.CPTID}
else ""
else if {CPTCodes.Day} = "6" Then
if {CPTCodes.D6} = "1" Then
{CPTCodes.CPTID}
else ""
else if {CPTCodes.Day} = "FET" Then
if {CPTCodes.FET} = "1" Then
{CPTCodes.CPTID}
else "";
{CPTCodes.Day}返回0,3,4,5,6,FET。每个对应的{CPTCodes。?}将是1或0. {CPTCodes.CPTID}是从数据库给出的代码,对应于我们正在收费的程序。
所有这些信息都是从上一页正确发送的。最初我尝试做一个简单的开关,但由于那不起作用我尝试嵌套的if语句。这似乎不起作用。我尝试过的东西,我已经看到在线的答案没有奏效:
我们发现的唯一另一件事是,我们的解决方案可能没有以正确的位格式进行编译(实际上并非真正的解决方案......它直接在服务器上运行,而不是作为我可以推送更新的解决方案。 ......不是我的选择!)。所以当我去检查配置时,我看到的只是“anyCPU”。我没有看到x86或x64的选项。
我完全不知道为什么这些不起作用!!我最后的办法是使用HTML创建一个单词doc,我真的不想这样做。如果我遗漏了任何可能有助于弄清楚什么的信息,请告诉我。任何帮助是极大的赞赏!!谢谢!
修改
新代码,尝试使用这段代码来查看是否会发生任何事情,或者我是否会收到同样的错误。我得到了同样的错误。以下是代码:
if {CPTCodes.Day} = "0" AND {CPTCodes.D0} = "1" Then {CPTCodes.CPTID} Else ""
另外,为了测试“此处需要布尔”BS,我输入此代码片段并在保存“此处需要字符串”时出错:
if {CPTCodes.Day} = true then "true" else "false";
答案 0 :(得分:2)
所以我尝试了你建议的if语句并使用cStr看看我得到了什么。这有用......这是我必须使用的:
if cStr({CPTCodes.Day}) = "D0" AND cStr({CPTCodes.D0}) = "True" Then cStr({CPTCodes.CPTID}) Else
if cStr({CPTCodes.Day}) = "D3" AND cStr({CPTCodes.D3}) = "True" Then cStr({CPTCodes.CPTID}) Else
if cStr({CPTCodes.Day}) = "D4" AND cStr({CPTCodes.D4}) = "True" Then cStr({CPTCodes.CPTID}) Else
if cStr({CPTCodes.Day}) = "D5" AND cStr({CPTCodes.D5}) = "True" Then cStr({CPTCodes.CPTID}) Else
if cStr({CPTCodes.Day}) = "D6" AND cStr({CPTCodes.D6}) = "True" Then cStr({CPTCodes.CPTID}) Else
if cStr({CPTCodes.Day}) = "FET" AND cStr({CPTCodes.FET}) = "True" Then cStr({CPTCodes.CPTID});
这是一个奇怪的解决方法,但仍然有效。谢谢!
答案 1 :(得分:0)
IF表达式的基本格式是......
if expr_1 then (do_1;do_2) else (do_3;do_4)
嵌套IF的使用...
if expr_1 then (do_1;do_2)
else if expr_2 then (do_3;do_4)
else (do_5;do_6}
...或
if expr_1 then
(do_1;
do_2)
else (do_3;
if expr_2 then
(do_4;
do_5)
else
(do_6;
do_7)
)
您也可以尝试:
if {CPTCodes.Day} = "0" AND {CPTCodes.D0} = "1" Then
{CPTCodes.CPTID}
else ""
就布尔错误而言,{CPTCodes.Day}的数据类型是什么?