2016-11-25 3 views
1

テーブルに "dd/mm/yyyy"形式の日付フィールドがあります。VBAを使用したアクセスで日付を挿入する

私はVBAコードを使用してフォームを通じて変数をそのフィールドに挿入しようとしています。私はこれを持っている:

vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy")) 
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & vardtedate & "#);" 

それは正常に動作しますが、私は'12/06/2016' のようなものを挿入しようとすると一日が 12を超えている場合にのみ、それは逆に示し、'06/12のように/ 2016年6月12日の6月12日ではなく、12月6日の日付がフィールドに適用されます。私は間違って何をしていますか?私は何が欠けていますか?

パラメータ化しようとしましたが、問題は解決しません。

+1

[アクセスVBAとSQLの日付形式](http://stackoverflow.com/questions/35917305/access-vba-sql-date-formats)の可能な複製。この質問がSELECTステートメントに関することに気をつけないでください。問題は同じです。 – Andre

+0

クエリをパラメータ化し、 'String'の代わりに' Date'型を使用します。 – Comintern

+0

それが 'vardtedate = CDate(Format(Me.dtedate.Value、" mm/dd/yyyy "))'で動作するかどうか不明です。あなたがvardtedateを設定したときの逆の月と日 – Seb

答えて

0

私は解決策を探していましたが、このスレッドが見つかりましたInserting current DateTime into Audit table。どうやら、SQLステートメントで日付値を挿入しようとすると、あいまいな日付形式が "mm/dd/yyyy"に変換されます。私は変数を "yyyy/mm/dd"にフォーマットし、今は完全に動作します。

vardtedate = CDate(Format(Me.dtedate.Value, "dd/mm/yyyy")) 
DoCmd.RunSQL "INSERT INTO table (dtedate) VALUES (#" & Format(vardtedate, "yyyy-mm-dd") & "#);" 
0

はい、デスクトップが設定されている地域の設定と関係があります。米国のデータ表記法は、ヨーロッパやその他の標準とはまったく異なります。詳細については、下のリンクを参照してください。あなたが判明したよう

https://support.office.com/en-us/article/Set-default-values-for-fields-or-controls-99508d03-b28b-4057-9652-dac1c4c60d86

は、書式を設定すると、修正を強制します。

関連する問題