Я пытаюсь запустить следующий запрос в функции VBA. Я продолжаю получать «Слишком мало параметров. Ожидаемый 1.»Запуск запроса параметра в Access VBA
strSQL = "Parameters [Report Date] DateTime;" & vbCrLf & _
"SELECT SCF.code AS [Stock Code], " & vbCrLf & _
"SCF.desc AS [Description], " & vbCrLf & _
"SCF.grp AS [Product Group]," & vbCrLf & _
"SCF.qCurr AS [Closing Stock], " & vbCrLf & _
"SCF.abp AS [Avg Price], " & vbCrLf & _
"Sum(([Closing Stock]*[Avg Price])) AS [STOCK VALUE], " & vbCrLf & _
"MaxDate.tDate AS [Last Transaction Date], " & vbCrLf & _
"Sum(IIf(([Last Transaction Date]>[Report Date]),([Closing Stock]*[Avg Price]),0)) AS [After Report Date], " & vbCrLf & _
"DateDiff(""d"",[Last Transaction Date],[Report Date]) AS [Days since Last Transaction], " & vbCrLf & _
"[Report Date]" & vbCrLf & _
"INTO [FinReport] " & vbCrLf & _
"FROM SCF RIGHT JOIN MaxDate ON MaxDate.parent = SCF.this "
strSQL = strSQL & _
"WHERE (SCF.qCurr <> 0) " & vbCrLf & _
"GROUP BY SCF.code, " & vbCrLf & _
"SCF.desc, " & vbCrLf & _
"SCF.grp, " & vbCrLf & _
"SCF.qCurr, " & vbCrLf & _
"SCF.abp, " & vbCrLf & _
"MaxDate.tDate" & vbCrLf & _
"ORDER BY MaxDate.tDate;"
Set qdf = db.CreateQueryDef("", strSQL)
qdf.Parameters("[Report Date]").Value = Form_IO_Form.ReportDate_TB.Value
qdf.Execute
Я проверил, что все поля (кроме [Report Date], конечно) существуют и запрос выполняется сам по себе в качестве запроса доступа (всплывают просит [Report Date]).
Помощь!
Редактировать 1: Как запрошено здесь файл DB как ZIP. Это файл Access 2007. .accdb
DB File
Замечу, что вы не должны действительно требовать '& vbCrLf' в каждой строке. Компилятор не заботится о новых строках. Если, конечно, вам не нужно распечатывать запрос для просмотра. В любом случае, vbNewLine будет предпочтительным в любом случае. – BIBD
@codeslave: vbcrlf должен сделать строку запроса более понятной и понятной для меня и любого будущего программиста. Я буду изменять свой код и использовать vbnewline ... – 147
@CodeSlave Почему вы предпочитаете 'vbNewLine' вместо' vbCrLf'? – HansUp