0

私は周りを見回してきましたが、これを行う方法を見つけることができないようです。

フォームからパラメーターを受け取る SELECT sql ステートメントを VB で実行しようとしています。たとえば、ユーザーが開始日と終了日を選択すると、SQL は選択したものを取得する必要があります。

SELECT SQL に DoCmd.Execute メソッドを使用できないことはわかっているので、レコード セットを開く必要がありますが、その方法は? これは私がこれまでに試したことです

Dim recordSet As DAO.recordSet
Dim SQL As String

SQL = "SELECT * FROM tblWebMeetingData"
Set recordSet = CurrentDb.OpenRecordset(SQL)

'More code in here

recordSet.Close

Set recordSet = Nothing

これはエラーなしで実行されるため、実際に結果を取得していると思います。実際に何が返されているかを確認する方法はありますか?

ありがとう

4

2 に答える 2

2

まず、レコードセットの名前を rs に変更することをお勧めします。たとえば、"recordset" は予約済みの名前であるためです。これは誤解です。

このレコードセットには、SQL ステートメントによってクエリを実行したレコードが含まれています。によってこれらのデータにアクセスできますrs.fields("fieldname").value。で次のレコードセットに移動しますrs.movenext

フォームのコントロール値を組み込むには、レコードセットを開く前に完全な SQL ステートメントを作成する方法を使用します。フォームの名前が「myform」で、コントロールの名前が「mycontrol」であるとします。

SQL = "SELECT * FROM tblWebMeetingData WHERE myfield = " & forms!myform.mycontrol.value

フォームに有効な値のみが含まれていることを確認してください。フォーマットされた値が間違っていると、SQL 実行エラーが直接発​​生します。

あなたが望んでいたのはこれだったと思います。

于 2013-03-07T10:57:37.130 に答える
1

ここに、RecordSet を反復処理し、そこからの値を使用するサンプル コードがあります (少し役立つことを願っています)。

Dim i As Integer
Do While Not rs.EOF
        Sheets("D_" & day).Cells(i, 1) = rs.Fields(0).Value
        Sheets("D_" & day).Cells(i, 2) = rs.Fields(1).Value
        rs.MoveNext
        i = i + 1
Loop

rs.Close
于 2013-03-07T11:13:56.093 に答える