1

フィールドの状態に応じて、テーブルの 1 つを別のテーブルで更新しようとしています。これを行う正しい方法は何だろうと思っています。2 つのテーブルで UPDATE ステートメントを実行しようとしましたが、毎回このエラーが発生しました: パラメーターが少なすぎます。2 が必要です

私の目標: SOURCING フィールド = O の場合、Zip Code を Origin Postal Code にしたい SOURCING field = D の場合、Zip Code を Dest Postal Code にしたい

したがって、今のところ、条件付きの LEFT JOIN を実行しているだけです。これが最善の方法ですか?それとも、元の INSERT ステートメントでこれを行う必要がありましたか?

CurrentDb.Execute "UPDATE Processing" & _
" LEFT JOIN tblImport" & _
" ON Processing.[BATCH_NO] = tblImport.[BATCH_NO]" & _
" SET Processing.[Zip Code] = tblImport.[Origin Postal Code]" & _
" WHERE tblImport.[Sourcing] = O;"

CurrentDb.Execute "UPDATE Processing" & _
" LEFT JOIN tblImport" & _
" ON Processing.[BATCH_NO] = tblImport.[BATCH_NO]" & _
" SET Processing.[Zip Code] = tblImport.[Dest Postal Code]" & _
" WHERE tblImport.[Sourcing] = D;"

引用符で囲む必要があるか、一重引用符で囲む必要があるか、引用符で囲む必要がないかなどがわからないため、WHERE ステートメントを変更しようとしましたが、空になりました。他のすべては私には正しいように見えます。

4

1 に答える 1

1

これが私がしていることです。これが役立つかもしれません。SQL 文字列に等しい変数を設定してから、CurrentDB.Execute 変数を実行します。なぜこれが役立つのですか?変数が設定された後にコードを壊してから、SQL を新しいクエリにコピーして、それが何について不平を言っているのかを確認できるからです。:o)

Dim tmpUpdate as string

tmpUpdate = "UPDATE Processing" & _
" LEFT JOIN tblImport" & _
" ON Processing.[BATCH_NO] = tblImport.[BATCH_NO]" & _
" SET Processing.[Zip Code] = tblImport.[Origin Postal Code]" & _
" WHERE tblImport.[Sourcing] = O;"

CurrentDB.Execute tmpUpdate

「tmpUpdate =" 行にブレークポイントを設定し、コードを実行します。ブレークポイントに到達したら、F8 キーを押して次の行に進みます。[イミディエイト] ウィンドウで、"?tmpUpdate" (引用符なし) と入力し、変数が何と等しいかを確認します。次に、データベースに移動し、新しいクエリを作成して、クエリの SQL に移動します。イミディエイト ウィンドウから SQL をコピー アンド ペーストし、クエリを実行してみます。吐く場合は、デザイン ビューに移動して、正しく表示されないものがないかどうかを確認します。

于 2013-05-28T21:09:46.623 に答える