2008-10-10 5 views
3

Я пытаюсь создать набор записей в Access VBA, который покажет мне все записи в таблице, связанной с текущей записью формы. Мой текущий код выглядит следующим образом:Создание набора записей в VBA с помощью инструкции SQL

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.« на первой строке.

Любая помощь будет оценена по достоинству.

ответ

7

Проблема заключается в том, что строка, которую вы видите, точно соответствует тому, что передается водителю.

Вы должны «создать» строку, например, так:

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

Часы, чтобы убедиться, что [Форма] [Порядок ввод данных заголовок] [ID] является безопасным содержанием, так как вы! создавая инструкцию SQL.

+1

То есть вам необходимо решить все ссылки на объекты Access перед передачей SQL в метод OpenRecordset. – 2008-10-11 20:50:59