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

範囲外のレコード抽出 : Not Between And

SELECT フィールド名 FROM テーブル名 WHERE Not フィールド名 Between 値1 And 値2
値1 から 値2 の範囲外のレコードを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 Not Between 80 AND 90 "
この場合、体重が80以上、90以下の範囲外の学生IDを抽出します。

これを「OR」にすると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 <> 90 "
となります。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「販売数 MIN」に抽出したい販売数の最小値を入力します。
「販売数 MAX」に抽出したい販売数の最大値を入力します。

「Between And 抽出」ボタンをクリックすると、販売データテーブルから販売数が、
「販売数 MIN」以上で「販売数 MAX」以下の範囲内のレコードを表示します。

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

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

販売データベース

[販売データ テーブル]
商品ID 販売数
10    5000
11    2500
13    6200
16    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 販売数 not Between " & Me!テキスト2 & " AND " & Me!テキスト3
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs![商品ID] & ": " & rs![販売数] & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

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

BackHome BackSQL Tips

Copyright(C) FeedSoft