我一直在环顾四周,但似乎无法找到如何做到这一点。
我正在尝试在VB中执行SELECT sql语句,该语句从表单中获取参数。例如,用户选择From和a To日期,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
因为这会在没有错误的情况下执行,我认为它实际上是在获得结果 - 所以有没有办法看到它实际返回的内容?
由于
答案 0 :(得分:2)
首先:将记录集重命名为rs是一个很好的建议,例如,因为“recordset”是一个保留名称。这是不可理解的。
此记录集包含您的SQL语句查询的记录。您可以rs.fields("fieldname").value
访问这些数据。使用rs.movenext
移至下一个记录集。
要合并表单的控件值,我使用在打开记录集之前构建完整SQL语句的方法。假设表单名为“myform”,控件“mycontrol”,你可以写一些
SQL = "SELECT * FROM tblWebMeetingData WHERE myfield = " & forms!myform.mycontrol.value
请确保表单只包含有效值,因为任何错误的格式化值都会直接导致SQL执行错误。
我希望这就是你想要的。
答案 1 :(得分: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