Создание набора записей в VBA с оператором SQL - PullRequest
4 голосов
/ 10 октября 2008

Я пытаюсь создать набор записей в 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». на первой строке.

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

1 Ответ

9 голосов
/ 10 октября 2008

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

Вам нужно «собрать» строку, например:

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

Убедитесь, что [Forms]! [Order Header Entry Header]! [ID] является безопасным содержимым, поскольку вы создаете оператор SQL.

...