Хобрук: Ваш путь к мастерству в программировании

Доступ к VBA — набор записей ADO — для одного или нескольких обязательных параметров не задано значение

Я столкнулся с этой ошибкой при попытке запросить базу данных с помощью ADO. Из поиска я обнаружил, что это, вероятно, означает, что есть проблема с SQL, который я использую.

    Dim rs As Object
    Dim varGetRows As Variant
    Dim sqlStr As String

    sqlStr = "SELECT qryEmpRewardsDetail.PBRID, qryEmpRewardsDetail.ActualReward, qryEmpRewardsDetail.ProratedActual, qryEmpRewardsDetail.Adjust, qryEmpRewardsDetail.Total, qryEmpRewardsDetail.Prorated FROM qryEmpRewardsDetail WHERE qryEmpRewardsDetail.ReviewYearID=8 AND qryEmpRewardsDetail.EmployeeID=30 AND qryEmpRewardsDetail.TypeID=1;"

    Set rs = CreateObject("ADODB.Recordset")
        rs.Open sqlStr, CurrentProject.Connection
    varGetRows = rs.GetRows()

Я переписал его несколькими способами, сто раз проверил орфографию, скопировал и вставил в запрос доступа, который работал нормально.

В жизни не могу понять, что с ним может быть не так. Любые идеи о том, что это может быть или некоторые предложения о том, как сузить проблему?

Спасибо!


  • Если предположить, что qryEmpRewardsDetail является сохраненным запросом, может ли это быть причиной отсутствия параметра? Если вы временно измените свой код для использования этого запроса, вы все равно получите жалобу на отсутствующий параметр? SELECT * FROM qryEmpRewardsDetail; 04.08.2015
  • Да, это дает мне ту же ошибку, но она отлично работает, когда я создаю с ней сохраненный запрос. Любая идея, почему это было бы? 04.08.2015
  • Возможно, мы сможем решить проблему, если вы покажете нам SQL из qryEmpRewardsDetail. 04.08.2015
  • Ладно, думаю, я понял. Это была проблема с сохраненным запросом, на который я ссылался. Это было излишне сложно, и его упрощение устранило проблему. 05.08.2015

Ответы:


1

Это работает?

SELECT * FROM qryEmpRewardsDetail WHERE qryEmpRewardsDetail.ReviewYearID=8 AND qryEmpRewardsDetail.EmployeeID=30 AND qryEmpRewardsDetail.TypeID=1

Если это так, то вы, вероятно, неправильно написали поле, добавляйте одно за другим, пока не будете счастливы.

В противном случае попробуйте удалить каждое условие WHERE и протестировать каждое из них.

На всякий случай полностью определите свой набор записей:

Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.ActiveConnection = CurrentProject.Connection
rst.CursorType = adOpenDynamic
rst.LockType = adLockReadOnly

rst.Open sqlStr

If rst.BOF and rst.EOF Then
    'no records returned
End If

Do While Not rst.EOF
    'Doing stuff with row
    rst.MoveNext
Loop
04.08.2015
Новые материалы

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..

Расистский и сексистский робот, обученный в Интернете
Его ИИ основан на предвзятых данных, которые создают предрассудки. Он словно переходит из одного эпизода в другой из серии Черное зеркало , а вместо этого представляет собой хронику..

Управление состоянием в микрофронтендах
Стратегии бесперебойного сотрудничества Микро-фронтенды — это быстро растущая тенденция в сфере фронтенда, гарантирующая, что удовольствие не ограничивается исключительно бэкэнд-системами..

Декларативное и функциональное программирование в стиле LINQ с использованием JavaScript с использованием каррирования и генератора ...
LINQ - одна из лучших функций C #, которая обеспечивает элегантный способ написания кода декларативного и функционального стиля, который легко читать и понимать. Благодаря таким функциям ES6,..

Структуры данных в C ++ - Часть 1
Реализация общих структур данных в C ++ C ++ - это расширение языка программирования C, которое поддерживает создание классов, поэтому оно известно как C с классами . Он используется для..

Как я опубликовал свое первое приложение в App Store в 13 лет
Как все началось Все началось три года назад летом после моего четвертого класса в начальной школе. Для меня, четвертого класса, лето кажется бесконечным, пока оно не закончится, и мой отец..