| SQL 「Between And 」を使い計算結果の範囲のレコードを抽出する | ||||
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
ダウンロード |
||||
Copyright(C) 2007-2008 FeedSoft