ADOのRecordsetオブジェクトはフォームやサブフォームの「レコードソース」プロパティに代入することができます。
しかしフォームに表示したレコードセットは編集することができません。
ここではデータを抽出するためにSQLステートメントを使用しました。
●準備●
- フォームにテキストボックスを商品番号1と商品番号2の2つ作成します
- コマンドボタンを作成 クリックすると該当のデータがサブフォームに表示される
- サブウォームを作成
●詳細●
- コネクションオブジェクト変数の宣言
- レコードセットオブジェクト変数の宣言
- SQLステートメント用の変数
- カレントデータベースに接続
- レコードセットオブジェクトへの参照を代入 sqlステートメントを代入商品テーブルから、テキストボックスの商品番号1以上テキストボックスの商品番号2以下のデータを取り出す
- 作成したSQLをもとに、ダイナセットタイプのRecordsetタイプのオブジェクトを作成。
- サブフォームのレコードソースプロパティに、レコードセットを代入
●サンプルプログラム●
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ステートメントで文字列を記述する場合、どのようにシングルクォーテーションとダブルクォーテーションを使用するか、少しわかりにくいです。
速攻テクニック集の中の”シングルクォーテーションとダブルクォーテーション"のなかにとてもわかり易く書かれています。