SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between '文字1' And '文字2'
文字1 から 文字2 の範囲のレコードを返します。
抽出する文字が1文字でない場合は
SQL = "SELECT フィールド名 FROM テーブル名 WHERE フィールド名 Between '文字1' And '文字2' AND フィールド名 <> '文字2' "
このように先頭文字が、文字1 から 文字2未満 の範囲になるようにします。
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE フリガナ BETWEEN 'ア' AND 'サ' AND フリガナ <> 'サ' "
この場合、フリガナが「ア」~「コ」の学生IDを抽出します。
これを「AND」にすると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE フリガナ >= 'ア' AND フリガナ < 'サ' "
となります。
サンプルソフト
[実行時の画面]
「型番 開始」に抽出したい型番の開始文字を入力します。
「型番 終了」に抽出したい型番の終了文字を入力します。
「Between And 文字抽出」ボタンをクリックすると、販売データテーブルから型番が、
「型番 開始」文字から「型番 終了」文字の範囲内のレコードを表示します。
SQL = "SELECT 商品ID,販売数,販売日,型番 FROM 販売データ WHERE 型番 Between '"
& Me!テキスト2 & "' AND '" & Me!テキスト3 & "'"
は
SQL = "SELECT 商品ID,販売数,販売日,型番 FROM 販売データ WHERE 型番 >= '" &
Me!テキスト2 & "' AND 型番 <= ''" & Me!テキスト3 & "'"
と同じ結果になります。
サンプルソフトをダウンロードしお試しください。
■先頭文字1文字で抽出した画面
■文字列で抽出した画面
[販売データ テーブル]
商品ID 型番 販売日 販売数
10 abc-1 2007/09/01 5000
11 bbc-1 2007/09/02 2500
13 jbc-1 2007/09/12 6200
16 nbc-1 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![販売日] & ": " & rs![商品ID] & " : " & rs![販売数] & vbCrLf
rs.MoveNext
Loop
Set rs = Nothing
End Sub
サンプルソフトのダウンロード