我試圖在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
我已經驗證了所有領域(當然比[報告日期]等)存在和查詢本身作爲訪問查詢運行(彈出詢問[報告日期])。
幫助!
編輯1: 按此處要求將DB文件作爲ZIP文件。它是一個Access 2007.accdb文件
DB File
我會注意到,你不應該在每行中都需要'&vbCrLf'。編譯器不關心新行。除非你真的需要打印查詢來查看。無論如何,vbNewLine無論如何都是首選。 – BIBD
@codeslave:vbcrlf使查詢字符串對於我和任何未來的程序員來說更具可讀性和可理解性。我會修改我的代碼並使用vbnewline ... – 147
@CodeSlave爲什麼你更喜歡'vbNewLine'而不是'vbCrLf'? – HansUp