AccessのVBAでSQLのBetween Andを使い、日付の範囲のレコードを抽出する|フォーム実行例

日付の抽出 : Between And

SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between #日付1# And #日付2#
日付1 から 日付2 の範囲のレコードを返します。
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 誕生日 Between #1990/01/01# AND #1990/04/01# "
この場合、誕生日が1990年01月01日~1990年04月01日の範囲の学生IDを抽出します。

これを「AND」にするとSQL = "SELECT 学生ID FROM 学生名簿 WHERE 誕生日>=#1990/01/01# AND 誕生日<=#1990/04/01# "
となります。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「販売日 開始」に抽出したい販売日の開始日を入力します。
「販売日 終了」に抽出したい販売日の終了日を入力します。

「Between And 日付抽出」ボタンをクリックすると、販売データテーブルから販売日が、
「販売日 開始」から「販売日 終了」の範囲内のレコードを表示します。

SQL = "SELECT 商品ID,販売数,販売日 FROM 販売データ WHERE 販売日 Between #" & Me!テキスト2 & "# AND #" & Me!テキスト3 & "#"

SQL = "SELECT 商品ID,販売数,販売日 FROM 販売データ WHERE 販売日 >= #" & Me!テキスト2 & "# AND 販売日 <= #" & Me!テキスト3 & "#"
と同じ結果になります。
サンプルソフトをダウンロードしお試しください。
販売日で抽出

[販売データ テーブル]
商品ID 販売日  販売数
10    2007/09/01 5000
11    2007/09/02 2500
13    2007/09/12 6200
16    2007/09/25 3350
販売日フィールド

[コード]
Option Compare Database

Private Sub コマンド8_Click()
    Dim SQL As String
    Dim rs As Recordset
    If IsNull(Me!テキスト2) Then
        MsgBox "抽出する販売日の開始日を入力してください。"
        Me!テキスト2.SetFocus
        Exit Sub
    End If
    If IsNull(Me!テキスト3) Then
        MsgBox "抽出する販売日の終了日を入力してください。"
        Me!テキスト3.SetFocus
        Exit Sub
    End If
    Me!テキスト1 = Null
    SQL = "SELECT 商品ID,販売数,販売日 FROM 販売データ WHERE 販売日 Between #" & Me!テキスト2 & "# AND #" & Me!テキスト3 & "#"
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs![販売日] & ": " & rs![商品ID] & " : " & rs![販売数] & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

サンプルソフトのダウンロード

BackHome BackSQL Tips

Copyright(C) FeedSoft