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