2008-10-10 44 views
3

我想在Access VBA中创建一个记录集,它将向我显示与表单的当前记录相关的表中的所有记录。我目前的代码如下所示:使用SQL语句在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第一行。

任何帮助,将不胜感激。

回答

7

问题是,您看到的字符串正是传递给驱动程序的内容。

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

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

关注,以确保[表格] [订单数据录入头] [ID]是安全的内容,因为你!建立一个SQL语句。

+1

也就是说,在将SQL传递给OpenRecordset方法之前,您需要解析对Access对象的所有引用。 – 2008-10-11 20:50:59

相关问题