如何在VB中运行SQL select语句

时间:2013-03-07 10:48:20

标签: vba ms-access

我一直在环顾四周,但似乎无法找到如何做到这一点。

我正在尝试在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

因为这会在没有错误的情况下执行,我认为它实际上是在获得结果 - 所以有没有办法看到它实际返回的内容?

由于

2 个答案:

答案 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