2016-05-26 3 views
0

私はTakeDateに日付を持っています。MS Accessのテーブルのフィールド(データ型:日付)です。私は以下のようにのようなSQLクエリを実行すると は私がShort DateMS AccessでSQLクエリを実行するためにFormatDateTimeを使用してフォーマットする

からFormat設定した検索フォームのテキストボックスtxtGdateToを持って、私は、所望のデータをフィルタ処理されません。したがって

Select * from tblWork WHERE TakeDate <= Me.txtGdateTo 

私は、以下のSQLを試してみましたが、それはあまりにも動作しません。

Select * from tblWork WHERE TakeDate <= Format(Me.txtGdateTo, "\#mm\/dd\/yyyy\#") 

私は別のを追加しました。これは、#errorとして私に価値を与える

TakeDate0: FormatDateTime([TakeDate],"\#mm/dd/yyyy\#")

機能を持つテーブルTakeDate0に提出しました。

Q:日付フィールドを使用してこれらのエラーを管理する最適な方法はありますか?

Q:どのようなフォーマットを行う必要があり、追加の列が必要ですか?私の場合は

、ユーザーは、形式DD/MM/YYYYのテーブルにデータを入力します

+0

https://support.office.com/en-us/article/FormatDateTime-Function-aef62949-f957-4ba4-94ff-ace14be4f1ca - 私は、文字列でSQLクエリを構築して、割り当てています –

答えて

-1

約2時間@Gustavの回答からいくつかのヒントを研究した後、私は問題の解決策を理解することができました。

第一 - 利用機能FormatDateTimeなくFormat

Select * from tblWork WHERE TakeDate <= #" & FormatDateTime(Me.txtTdateTo, 2) & "#" 

第二 - フォーマットはShort Date

に検索フォーム、 Formatセットで

txtGdateTo正しいことを確認してください

第3回 - 機能を検索するための別の列は必要ありません。

+0

申し訳ありませんが、 'FormatDateTime'は他の目的のために意図されており、英語以外の環境では失敗するような場所ではありません。パラメータ" 2 "(vbShortDate)は日付のローカライズされた文字列式を生成します。あなたが必要とするのは、ISOシーケンス(_yyyy-mm-dd_)のように、Access SQLで理解できる、非ローカライズされた明確なフォーマットです。 – Gustav

+0

これを共有していただきありがとうございます。すべてのユーザーは英語ベースです。私は確かにこれを知っている。それでも使い方は間違っていますか? –

1

ミーは、クエリで使用することはできません。だから、試してみてください。

Select * From tblWork Where TakeDate <= Format(Forms!YourForm!txtGdateTo, "\#mm\/dd\/yyyy\#") 

VBAであなたが同じように、連結前の日付の文字列式をフォーマットする必要があります。

SQL = "Select * From tblWork Where TakeDate <= #" & Format(Me!txtGdateTo.Value, "yyyy\/mm\/dd") & "#" 
+0

関数リファレンスリストボックスの行ソースへの文字列 –

+0

ああ、次に編集を参照してください。 – Gustav

+0

助けてくれてありがとう、機能を間違って使用していた。正しい方法は、私の答えに記載されています。 –

関連する問題