Ошибка во время выполнения «3061».Слишком мало параметров.Ожидаемый 3 - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь использовать VBA для извлечения данных из доступа в Excel.Я могу использовать этот скрипт для других запросов, но когда для этого конкретного запроса, я получаю этот параметр ошибки.Здесь происходит разрыв:

Set rs = A.CurrentDb().QueryDefs("Query1").OpenRecordset()

Sub test()

Dim ws As Worksheet
Dim A As Object
Dim rs As Object

Application.DisplayAlerts = False

Set A = CreateObject("Access.Application")
Set ws = ThisWorkbook.Sheets("Sheet1")

A.Visible = True
A.OpenCurrentDatabase ("Y:\UW\B\201811.accdb")
A.DoCmd.OpenQuery ("Query1")

Set rs = A.CurrentDb().QueryDefs("Query1").OpenRecordset()

If Not rs.EOF Then
ws.Range("A2").CopyFromRecordset rs
End If

For iCols = 0 To rs.Fields.Count - 1
Worksheets("Sheet1").Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
rs.Close

 Application.DisplayAlerts = True

End Sub

Вот запрос1:

SELECT W.MED, W.RX, W.HSAHRA, W.ACR, W.ML, Sum(W.MBRS) AS             
SumOfMBRS, Sum(W.PREM) AS SumOfPREM, Sum(W.CLMSTAT) AS SumOfCLMSTAT
FROM W
WHERE (((W.[DATE]) Between [Enter Start Date:] And [Enter End Date:]) AND 
((W.[ST])=[Enter State:]))
GROUP BY W.MED, W.RX, W.HSAHRA, W.ACR, W.ML
ORDER BY W.MED, W.RX, W.HSAHRA, W.ACR, W.ML;

Кроме того, как мне преобразовать query1 в строку sqlstring?

1 Ответ

0 голосов
/ 25 декабря 2018

Пользователь должен ввести критерии в элементы управления в форме, а затем ссылаться на эти элементы управления как на входные параметры:

strSQL = "SELECT MED, RX, HSAHRA, ACR, ML, Sum(MBRS) AS SumOfMBRS, Sum(PREM) AS SumOfPREM, Sum(CLMSTAT) AS SumOfCLMSTAT
FROM W " & _
"WHERE [DATE] Between #" & Me.tbxStart & "# And #" & Me.tbxEnd & "# AND [ST]='" & Me.tbxState & "' " & _
"GROUP BY MED, RX, HSAHRA, ACR, ML " & _
"ORDER BY MED, RX, HSAHRA, ACR, ML;"

Или, в вашем случае, ссылаться на ячейки таблицы.Если вы хотите использовать всплывающие окна для пользовательского ввода, придется использовать функцию InputBox ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...