HOME > 即効テクニック > AccessVBA > クエリ・SQL > テキストボックスに入力した値からSQLを作成し、サブフォームに表示する(ADO)

即効テクニック

クエリ・SQL

テキストボックスに入力した値からSQLを作成し、サブフォームに表示する(ADO)

(Access 2000/2002)
ADOのRecordsetオブジェクトはフォームやサブフォームの「レコードソース」プロパティに代入することができます。
しかしフォームに表示したレコードセットは編集することができません。
ここではデータを抽出するためにSQLステートメントを使用しました。

●準備●
  1. フォームにテキストボックスを商品番号1と商品番号2の2つ作成します
  2. コマンドボタンを作成 クリックすると該当のデータがサブフォームに表示される
  3. サブウォームを作成
●詳細●
  1. コネクションオブジェクト変数の宣言
  2. レコードセットオブジェクト変数の宣言
  3. SQLステートメント用の変数
  4. カレントデータベースに接続
  5. レコードセットオブジェクトへの参照を代入 sqlステートメントを代入商品テーブルから、テキストボックスの商品番号1以上テキストボックスの商品番号2以下のデータを取り出す
  6. 作成したSQLをもとに、ダイナセットタイプのRecordsetタイプのオブジェクトを作成。
  7. サブフォームのレコードソースプロパティに、レコードセットを代入
●サンプルプログラム● Private Sub コマンド8_Click() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim mySQL As String Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset mySQL = "SELECT * FROM 商品テーブル " mySQL = mySQL & "WHERE (商品番号 >= " & Me!商品番号1 & ") " mySQL = mySQL & "AND (商品番号 <= " & Me!商品番号2 & ") ;" rs.Open mySQL, cn, adOpenKeyset, adLockReadOnly Set Me!sub商品.Form.Recordset = rs rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub ●注意● SQLステートメントで文字列を記述する場合、どのようにシングルクォーテーションとダブルクォーテーションを使用するか、少しわかりにくいです。 速攻テクニック集の中の”シングルクォーテーションとダブルクォーテーション"のなかにとてもわかり易く書かれています。