MS Accessデータベースに複数のクエリがあります。これらのパラメータのいくつかはパラメータを使用します。私は、これらのパラメータでクエリを提供するために、VBAで次のコードを使用しますSQL ServerへのパススルークエリでのVBAパラメータへのアクセス
VBA
Dim startDate As Date
Dim endDate As Date
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
If IsNull(Me.dpFrom) Or IsNull(Me.dpTo) Then
MsgBox "Please select a date!"
ElseIf (Me.dpFrom.Value > Me.dpTo.Value) Then
MsgBox "Start date is bigger than the end date!"
Else
startDate = Me.dpFrom.Value
endDate = Me.dpTo.Value
Set dbs = CurrentDb
'Get the parameter query
Set qdf = dbs.QueryDefs("60 Dec")
'Supply the parameter value
qdf.Parameters("startDate") = startDate
qdf.Parameters("endDate") = endDate
'Open a Recordset based on the parameter query
Set rst = qdf.OpenRecordset()
'Check to see if the recordset actually contains rows
If Not (rst.EOF And rst.BOF) Then
rst.MoveFirst 'Unnecessary in this case, but still a good habit
Do Until rst.EOF = True
'Save contact name into a variable
Me.tbBUDdec.Value = rst!Som
rst.MoveNext
Me.tbLEYdec.Value = rst!Som
rst.MoveNext
Me.tbMDRdec.Value = rst!Som
rst.MoveNext
Me.tbODCdec.Value = rst!Som
rst.MoveNext
Loop
Else
MsgBox "There are no records in the recordset."
End If
rst.Close 'Close the recordset
Set rst = Nothing 'Clean up
これが正常に動作している
PARAMETERS startDate DateTime, endDate DateTime;
SELECT WarehouseCode, COUNT(DeliveryPoint) AS Som
FROM [50 resultaat]
WHERE EntryDate between [startDate] and [endDate]
GROUP BY WarehouseCode;
アクセスのクエリ。しかし、私は現在、同じコードを使用してSQL Serverにパススルークエリを呼び出そうとしています。このクエリは、パラメータを宣言し、設定する別の構文を使用します。
SQL Serverクエリ
DECLARE @InvLineEntryDateBegin AS date
DECLARE @InvLineEntryDateEnd AS date
SET @InvLineEntryDateBegin = '2017-01-01'
SET @InvLineEntryDateEnd = '2017-05-31'
Select WarehouseCode, Count(PickOrderNr) as Som
FROM (bla bla bla ...
私は私のVBAコードは異なるSQL構文で動作させることはできません。私はいくつかの選択肢を読んだが、具体的なものは見つけられなかった。誰もこのクエリ構造についての経験はありますか?
他の言葉:VBAでは、SQLサーバーでクエリを実行するストアドプロシージャにどのようにパラメータを挿入できますか?
で
CurrentDb.QueryDefs("q_PTO_SubmitNewRequest")
エンドに含めるでしたか?それは貧弱なアプローチのようです。 –
このソリューションを参照してください:https://stackoverflow.com/questions/24248870/calling-stored-procedure-while-passing-parameters-from-access-module-in-vba –