SELECT フィールド名 FROM テーブル名 WHERE 計算式 Between 値1 And 値2
計算式の結果から、値1 から 値2 の範囲のレコードを返します。
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 体重 / (身長 * 身長 ) BETWEEN 23 AND 25 "
この場合、体重 / (身長 * 身長 )のBMIが23~25の学生IDを抽出します。
これを「AND」にすると
例: SQL = "SELECT 学生ID 学生名簿 WHERE 体重 / (身長 * 身長 ) >= 22 AND 体重 / (身長 * 身長 ) <= 25"
になります。
サンプルソフト
[実行時の画面]
「最低打率」に抽出したい下限の打率を入力します。(3割の場合、0.3と入力)
「最高打率」に抽出したい上限の打率を入力します。
「Between And 打率抽出」ボタンをクリックすると、野球データベーステーブルから、
(安打/打数)から指定範囲内のレコードを表示します。
SQL = "SELECT 選手ID,打数,安打,(安打/打数) AS 打率 FROM 野球データベース WHERE (安打/打数) Between " & Me!テキスト2 & " AND " & Me!テキスト3
は
SQL = "SELECT 選手ID,打数,安打,(安打/打数) AS 打率 FROM 野球データベース WHERE (安打/打数)
>= " & Me!テキスト2 & " AND (安打/打数) <=" &
Me!テキスト3
と同じ結果になります。
サンプルソフトをダウンロードしお試しください。
■打率0.2~0.5で抽出した画面
[野球データベース テーブル]
選手ID 打数 安打
10 120 30
11 150 25
13 130 20
16 100 45
[コード]
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,打数,安打,(安打/打数) AS 打率 FROM 野球データベース WHERE (安打/打数) Between " & Me!テキスト2 & " AND " & Me!テキスト3
Set rs = CurrentDb.OpenRecordset(SQL)
Do Until rs.EOF
Me!テキスト1 = Me!テキスト1 & rs![選手ID] & ": " & rs![打数] & ": " & rs![安打] & " : " & rs![打率] & vbCrLf
rs.MoveNext
Loop
Set rs = Nothing
End Sub
サンプルソフトのダウンロード