2012-04-16 3 views
2

コードで悪名高い「無効使用のNULL」:私はそれがあると仮定ここVBAクエリ第

bncSql = "UPDATE mrTool " & _ 
     " SET mrTool.Action = 'Y', mrTool.TQA = FALSE," & _ 
     " mrTool.OPID = 'SYS', mrTool.ReasonCode = 'AOK'," & _ 
     " mrTool.History = 'AOK'" & _ 
     " WHERE (Nz(CCur([Amount]),0) + Nz(CCur([SFS]),0) <= 0" & _ 
     " AND mrTool.Action Is Null);" 
    DoCmd.RunSQL bncSql 

mrTool.Actionをテキスト(1)(すなわち、単一の文字)として定義されているが、これは。 "Is Null"は他のすべての場所で動作しているように見えますが、 "=" '(長さゼロの文字列)で置き換えると、Text以外の文字列であると考えられます。

私は別の場所に同じフォーマットを持っていると付け加えるべきですし、うまく動作しているようです - これを使用する前に23の他の場所でランタイムエラーが発生することはありません。そのため、SFSとAmount、つまりNz()のエラーだと思っていたかもしれませんが、それは助けになりません。

私は迷っています...

答えて

2

多分?

WHERE (CCur(Nz([Amount],0)) + CCur(Nz([SFS],0)) <= 0 
+1

私は同意します。 CCur関数は、逆の代わりにNZ関数の後に使用する必要があります。 – HK1

+0

それはそれをするように見えた!私はそれがまだ効いているのかどうかはわかりませんが、少なくともそれは誤りではありません。 :) ありがとうございました!私は今、髪を引っ張るのをやめることができる – graidan

+0

私はあなたが髪を引っ張るのを止めることができるとは確信していません。上記の@ Graidanと同じように、アクションテキスト(1)を持つテーブルを使用してSQLをテストしたところ、正常に動作しました。 – Fionnuala

関連する問題