0

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

我正在尝试在 VB 中执行一个 SELECT sql 语句,该语句从表单中获取参数。例如,用户选择 From 和 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

因为这个执行没有错误,我假设它实际上得到了结果 - 那么有没有办法查看它实际返回的内容?

谢谢

4

2 回答 2

2

第一:将记录集重命名为 rs 是一个很好的建议,例如,因为“记录集”是保留名称。这是误解。

此记录集包含您通过 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

在这里,您获得了有关迭代 trought 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 回答