私は本当にここで苦労しています。私は、VBA内でOracle内のいくつかのテーブルとAccess内のテーブルにリンクするためのクエリを構築しています。私は、OracleにアップロードしたものがAccess DBにあるものと一致することを確認する必要があります。VBAの関数でNZを使用してクエリを構築する
私が持っている:
- SourceField1(常に人口)
- SourceField2(時には人口)
ソースフィールド2が空白の場合、私はそれに参加し、それを無視しないようにしたいです。私がこれを行った最善の方法は、Nzで試してSourceField1で置き換えることです。
私にこれを与えstrSQL = "INSERT INTO ERROR_TABLE (ORACLE_FIELD, TRANSFORM_FIELD) SELECT " & MatchValues!ORACLE_TABLE_NAME & "." & MatchValues!FieldName & ", " & MatchValues!TRANSFORM_TABLE_NAME & "." & MatchValues!FieldName
strSQL = strSQL & " FROM " & MatchValues!TRANSFORM_TABLE_NAME & " INNER JOIN " & MatchValues!xfTableName
strSQL = strSQL & " ON " & MatchValues!TRANSFORM_TABLE_NAME & "." & MatchValues!SourceField1 & " = " & MatchValues!xfTableName & "." & MatchValues!ReferenceField1 & ""
strSQL = strSQL & " AND " & MatchValues!TRANSFORM_TABLE_NAME & ".Nz(" & MatchValues!SourceField2 & "," & MatchValues!SourceField1 & ") = " & MatchValues!xfTableName & ".Nz(" & MatchValues!ReferenceField2 & "," & MatchValues!ReferenceField1 & ")"
strSQL = strSQL & " INNER JOIN " & MatchValues!ORACLE_TABLE_NAME & " ON (" & MatchValues!xfTableName
strSQL = strSQL & ".KEYVAL = " & MatchValues!ORACLE_TABLE_NAME & ".KEYVAL)"
strSQL = strSQL & " WHERE (" & MatchValues!TRANSFORM_TABLE_NAME & "." & MatchValues!FieldName
strSQL = strSQL & " <> " & MatchValues!ORACLE_TABLE_NAME & "." & MatchValues!FieldName & ")"
:
INSERT INTO ERROR_TABLE(ORACLE_FIELD、TRANSFORM_FIELD)tbluniDCappl INNER FROM UNI73MART1_DCappl.DECSN、tbluniDCappl.DECSNを選択tbluniDCappl.REFVAL = XF_DC_ref.REFVALとtbluniDCappl ON XF_DC_refを登録しよう。 NZ(REFVAL)= XF_DC_ref.Nz(REFVAL)INNER UNI73MART1_DCappl ON(XF_DC_ref.KEYVAL = UNI73MART1_DCappl.KEYVAL)(tbluniDCappl.DECSN <> UNI73MART1_DCappl.DECSN)
_ VBA行継続文字を使用してみてください。 'NVL(a、b)'は、 'a'が' null'ならば 'b'を返し、そうでなければ' a'を返します。 –
私は選択した内部アクセス(リンクされたテーブル)を実行しているので、NZの機能でなければならないと思いますか?とにかくそのように使用されていないのはどういう意味ですか、クエリにエラーがありますか? – Rhiannesh
あなたは "Nz(<< >>、REFVAL)"をチェックすることはありません。 SQLエラーだと思います。 'nz([tbluniDCappl]、" Nothing ")' –