0

最大2桁のフィールドを含む2つのフィールドを比較しようとしています。一方の数式フィールドは{文字列}であり、もう一方の数式フィールドは{数値}フィールドです。しかし、文字列フィールドに「08」が表示され、数値フィールドに「8」が表示されている場合、問題が発生します。違いがあることを1と表示しますが、実際には違いはありません。文字列フィールドに14と数字のフィールドには14が表示されますが、これは完全に機能しますが、実際には違いがない場合でも、1〜9の範囲で違いが表示されます。
これは、これまでに試したものです。

If {number.field} = 0 
Then StringVar AdjustValue:= " " 
Else StringVar AdjustValue:= totext ({number.field},0,"")
;
if {@stringfield} = StringVar AdjustValue then 0 else 1

助けてくれてありがとう。

4

2 に答える 2

2

代わりに、文字列から数値に変換して、先行ゼロについて心配する必要がないようにします。

if tonumber({@stringfield})={number.field} then 0 else 1

簡単に言うと、AdjustValue変数を3回再宣言しています。同じ式内で最初の変数宣言を行った後、「StringVar」を介して参照する必要はありません。

編集:一番上の数式で問題が発生しているため、AdjustValue変数を2つのスペースにパディングするという代替手段を試すこともできます。

stringvar AdjustValue;
If {number.field} = 0 
Then AdjustValue:= " " 
Else AdjustValue:= totext ({number.field},"00") //add padding
;
if {@stringfield} = StringVar AdjustValue then 0 else 1
于 2012-08-24T15:30:36.943 に答える
0

ブール値を返す数式フィールドを使用して、シンプルに保ちます。

// {@compare}
ToNumber({@string})={number.field}

{@compare}必要な場所を参照してください。

于 2012-08-24T16:54:37.037 に答える