2

時間間隔でフォームをフィルタリングしようとしています

開始日と終了日は両方ともこの形式のテキストボックスにありますdd/mm/yyyy

のクエリはVBA次のようになります

WHERE (Format([SalesCallDate],'dd/mm/yyyy') BETWEEN #" & Format(txtStartDate, "dd/mm/yyyy") & "#
 AND #" & Format(txtEndDate, "dd/mm/yyyy") & "#)"

間隔が01/12/2012になっているのに、なぜの21/12/2012ような日付が表示されたのかわかりません15/08/1991。そのため、フォーマットを明示的にしたかったのです。

SQLクエリの出力は次のとおりです。
WHERE (Format([SalesCallDate],'dd/mm/yyyy') BETWEEN #01/12/2012# AND #21/12/2012#)

フォーマットありとなしで試してみました。

私は何かが足りないのですか?

SalesCallDateDateTimeSQLServerリンクテーブルのフィールドです

ありがとうございました

4

1 に答える 1

1

txtStartDateとtxtEndDateはどちらもバインドされていないテキストボックスのようです。フォーマットプロパティを日付フォーマットに設定します。

[形式]が[一般日付]に設定されたテキストボックス

日付形式と[日付ピッカーの表示]プロパティが[日付の場合]に設定されている場合、Accessバージョン> = 2007を使用すると、テキストボックスでその日付ピッカー機能が有効になります。ユーザーがそれを好む場合、これはそのフォーマットプロパティの副次的な利点です。

とにかく、日付形式を使用すると、AccessとVBAはこれらのテキストボックスの値を日付/時刻データ型として解釈できます。

? TypeName(Forms!frmDateRange!txtStartDate.Value)
Date

次に、SalesCallDateは日付/時刻タイプであるため、WHERE句はフィールドをテキストボックスの値と直接比較できます。

WHERE SalesCallDate BETWEEN
        Forms!frmDateRange!txtStartDate
    AND Forms!frmDateRange!txtEndDate

または、フォームにSQLステートメントを含む文字列を作成するコードがあり、日付範囲の日付/時刻リテラルが必要な場合...

"WHERE SalesCallDate BETWEEN " & _
    Format(Me.txtStartDate, "\#yyyy-m-d\#")
    " AND " & Format(Me.txtEndDate, "\#yyyy-m-d\#")
于 2012-12-14T20:39:34.870 に答える