• 締切済み

VBでSQL文のUPDATE文を使った時のエラー

access VBA初心者ですが回答、ご指摘のほうよろしければお願いします。 フォームにて更新ボタン押下時、テーブルの更新日付を現在の日付で更新したいと考えております。 下記のようにVBを組み込んだのですが、実行すると「UPDATE ステートメントの構文エラーです」というエラーがでてしまいます。 構文のどこが悪いか御指南いただけないでしょうか。 test_TBLの更新日付のフィールドを現在日付で更新 Dim sql As String Dim newdate As Date newdate = Now() sql = "UPDATE test_TBL SET 更新日付 =#" & newdate & "#" DoCmd.RunSQL sql

みんなの回答

  • okgoo3
  • ベストアンサー率74% (20/27)
回答No.4

日付だけなら Date() ですね。 Date() または Now() でシステムから取得した値をレコード更新以外に使う予定がないなら sql = "UPDATE test_TBL SET 更新日付 = Date()" で良くないですかね。 更に合理化を推し進めて、変数 sql すら使わずクエリとして Acces 側で持っておき、VBA からはクエリを呼び出して実行する事もできます。 各種 SQL を VBA のコード中の文字列で管理するのが良いか、Access のクエリ オブジェクトとして管理するのが良いかってのはシステムの規模によりますけどね。

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.3

提示されたコードを Office2016で実行してみましたが、指摘のエラーになりません。 バージョンに依存した問題というのは考えにくそうに思います。 なお、 > sql = "UPDATE test_TBL SET 更新日付 =#" & newdate & "#" この行の途中に全角スペースがあるといったことはないですヨね? 私だったら  Dim sql As String  Dim newdate As String  'newdate = Format(Now(), "YYYY/MM/DD HH:NN:SS")  newdate = Format(Now(), "YYYY/MM/DD")  sql = "UPDATE test_TBL SET 更新日付 =#" & newdate & "#"  DoCmd.RunSQL sql といったコードでどのような結果になるかを確認します。

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.2

Now()は日付だけでなく時刻も含まれているからではないでしょうか。 Date()を使ってみてください。

回答No.1

sql変数を構築した時のnewdateがちゃんと日付文字列になっていないのでは? sql変数をMsgBoxで表示してみては。

関連するQ&A