【问题标题】:Creating Recordset with SQL statement使用 SQL 语句创建记录集
【发布时间】:2010-09-16 14:26:54
【问题描述】:

我正在尝试在 Access VBA 中创建一个记录集,它将向我显示与表单的当前记录相关的表中的所有记录。我当前的代码如下所示:

Private Sub Form_Load()

    Dim rst As Recordset

    Set rst = CurrentDb.OpenRecordset("Select [ID], [Ln] From [Order Detail] Where ((([Order Detail].[ID]) = [Forms]![Order Data Entry Header]![ID]))")

    rst.MoveLast
    Forms![Order Data Entry Header].LineNum = rst![Ln]

End Sub

我这样做是为了在添加新记录时可以在最高编号之后按顺序编号。当我运行表单时,它得到“运行时错误:'3061'参数太少。预期为 1。”在 Set 第一行。

任何帮助将不胜感激。

【问题讨论】:

    标签: sql vba ms-access


    【解决方案1】:

    问题在于您看到的字符串正是传递给驱动程序的字符串。

    你需要像这样“建立”字符串:

    Set rst = CurrentDb.OpenRecordset("Select [ID], [Ln] From [Order Detail] Where ((([Order Detail].[ID]) = " & [Forms]![Order Data Entry Header]![ID] & "))")
    

    注意确保 [Forms]![Order Data Entry Header]![ID] 是安全内容,因为您正在构建 SQL 语句。

    【讨论】:

    • 即在将SQL传递给OpenRecordset方法之前,需要解析所有对Access对象的引用。
    猜你喜欢
    • 2012-01-02
    • 1970-01-01
    • 2011-05-04
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多