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 "
となります。
サンプルソフト
[実行時の画面]
「販売数 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
サンプルソフトのダウンロード