関数の中で、SQLを実行するために文字列を使用しています。私は、ユーザーの選択に応じて文字列の一部を変更する必要があります。簡潔にするために、私は各テーブルから1つのフィールドだけを含めました。また、これらは実際のテーブル名ではありません。MS Access VBA:動的SQL
strSQL = "DELETE * FROM tblWax"
db.Execute strSQL, dbFailOnError
strSQL = "INSERT INTO tblWax (strPortName, lngShortSet) " & _
"SELECT tblAAA.strPastName, tblBBB.lngShortID " & _
"FROM tblAAA INNER JOIN tblBBB ON tblAAA.Parameter = tblBBB.Parameter"
db.Execute strSQL, dbFailOnError
私は、ユーザーの選択にと(フィールドstrChoice内で)同じ選択を依存tblBBBためtblSSSを代用したいと思い、tblWaxはtblHatする必要があります。すなわち: strChoice = 1の場合、tblWax、tblAAA、tblBBB strChoice = 2の場合は、次にtblHat、tblAAA、tblSSS
は、そうでない場合、文字列(複数可)の残りの部分は同じです。
これは、SQLで文字列変数を使用してリファクタリングすることができます。たとえば、 'strTargetTable =" tblWax "'です。 – Smandoli
確かに。 SQLは変更されないので、_select-case_を使用してテーブル名を決定し、SQLのプレースホルダをテーブル名に置き換えます。 – Gustav
私はそれだけで選択したケースが好きですが、ケースの数が少なくなった今、将来的にはそうではないかもしれません。そこで、select caseを使用して変数をテーブル名に変更し、その変数をSQLに配置します。ありがとうございます。 – random13