1

私はクリニックの 1 つでいくつかの Crystal Reports に取り組んでいますが、何らかの理由で、私も他の IT チーム メンバーもこのエラーが発生する理由を理解していません。したがって、最初に具体的に指定されたエラーは次のとおりです。

ここではブール値が必要です。詳細: ファイル CPTCharges の errorKind エラー {FD775771-FD54-40B1-891A-87AFD9539789}.rpt: 式 CPTCodes のエラー: 'if {CPTCodes.Day} = "0" Then ' ここでブール値が必要です。詳細: 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 ステートメントを試しました。それは機能していないようです。私が試したことで、うまくいかなかったオンラインの答えを見ました:

  • 1)不一致があった場合に備えて、データセットの戻り値の型を確認しました
  • 2) switch ステートメントと通常のネストされた if ステートメントの両方を使用
  • 3) 消され書き直された式
  • 4) 「0」、「1」などの代わりに true/false を使用してみてください。(とにかく私のニーズにはうまくいきません)
  • 5) 数式が数式エディターの [数式フィールド] フォルダーの下にあることを確認します。

私たちが見つけた他の唯一のことは、私たちのソリューションが正しいビット形式でコンパイルされていない可能性があることです(実際にはソリューションではありません...更新をプッシュできるソリューションとは対照的に、サーバー上で直接実行されています....私の選択ではありません!)。そのため、構成を確認したところ、「anyCPU」しか表示されませんでした。x86 または x64 のオプションが表示されません。

なぜこれらが機能しないのか、私は絶対に迷っています!! 私の最後の手段は、私が本当にやりたくない HTML を使用してワード ドキュメントを作成することです。何が起きているのかを理解するのに役立つ情報が不足している場合は、お知らせください。どんな助けでも大歓迎です!! ありがとうございました!

編集:

新しいコードです。このコードを使用して、何かが起こるかどうか、または同じエラーが発生するかどうかを確認してみました。同じエラーが発生しました。以下はコードです:

if {CPTCodes.Day} = "0" AND {CPTCodes.D0} = "1" Then {CPTCodes.CPTID} Else ""

また、「boolean required here」BS をテストするために、このコード スニペットを挿入し、保存時に「a string is required here」というエラーが発生します。

if {CPTCodes.Day} = true then "true" else "false";
4

2 に答える 2

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});

それは奇妙な回避策でしたが、それでも機能しました。ありがとう!!

于 2013-11-19T01:05:26.290 に答える
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} のデータ型は何ですか?

于 2013-11-14T00:21:58.297 に答える