質問: DELETE DISTINCTROW アクションクエリテーブル.結果 FROM アクションクエリテーブル WHERE (((アクションクエリテーブル.結果)=True)) ``` コードは以下です。 ``` Private Sub 更新追加削除_Click() DoCmd.RunSQL upSQL MsgBox "hoge" DoCmd.RunSQL addSQL MsgBox "hogehoge" DoCmd.RunSQL delSQL MsgBox "hogehogehoge" DoCmd.OpenTable "アクションクエリ結果テーブル", , acAdd End Sub ``` この中の追加クエリ(addSQL)の結果を、「アクションクエリ結果テーブル」と名づけた テーブルに出力させたいのですが、実行後の当該テーブルは空のままです。 ちなみにエラーもありません。 追加クエリ(addSQL)のSQLは、テーブルに出力するINSERT文をかいているのですが...。 任意のテーブルにアクションクエリの結果データを出すにはどのようにすればよいでしょうか。 有職者の皆様方、お知恵をお貸しください。 コーディングの仕方のサンプルもお教え頂ければ勉強になり幸いです。
回答: まず変数に`SQL文を代入する時点で""で囲まれていない`という指摘があるのですが、これはコピペ誤りと信じて話を進めます。 >実行後の当該テーブルは空のまま とのことですが、 1コード内で更新・追加・削除後に結果テーブルを表示しているけど結果データが表示されない 2言葉の通り、処理実行後に自分で結果テーブルを開いて中を確認してもINSERTされたはずのデータがINSERTされていない のいずれかでしょうか? まず1の場合ですが、これは単純にコードの問題で、 ``` 'DoCmd.OpenTable "アクションクエリ結果テーブル", , acAdd DoCmd.OpenTable "アクションクエリ結果テーブル", , acEdit ``` とすることで結果表示されるものと思います。 (おそらくこちらの問題ではないかと推測します) 次に2の場合ですが、 実際、こちらで類似のテーブルを使って似たようなSQLを順に動作させましたが、INSERTも正しく行われました。 となるとコードの問題ではなく、SQLまたはデータの問題が考えられます。 とりあえずINSERTの対象となる抽出文 `SELECT アクションクエリテーブル.番号, アクションクエリテーブル.名前, アクションクエリテーブル.売上 FROM アクションクエリテーブル WHERE (((アクションクエリテーブル.結果)=True))` を単独で実行してみて、対象データが取得できるか確認してみてください。 これで正しくデータ取得できているようであれば、(権限の問題で)INSERTに失敗しているか、または処理後に(提示されたコード外で)ロールバックされている等が考えられます。 ご確認ください。