Допустим, на серевере есть ХП:
CREATE PROCEDURA TEST
@Param AS VARCHAR(10)
AS
SELECT * FROM Tbl WHERE DateBuy = @Param
GO |
В Аксе создаем Pass-Rtough Query. Я пользуюсь такой функцией:
Private Function DelCreateConnectedQuery(qName As String, cnt As String, Source As String) As Boolean
On Error GoTo err_DelCreateConnectedQuery
Dim db As DAO.Database: Set db = CurrentDb
Dim qd As DAO.QueryDef
--проверить, что запрос не существует
Set qd = db.CreateQueryDef(qName)
qd.Connect = cnt
qd.ODBCTimeout = 0
qd.ReturnsRecords = True
qd.SQL = Source
db.QueryDefs.Refresh
DelCreateConnectedQuery = True
exit_DelCreateConnectedQuery:
Exit Function
err_DelCreateConnectedQuery:
MsgBox Err.Description, vbExclamation, ApplName
Resume exit_DelCreateConnectedQuery
End Function |
Где
qName - name of query
cnt - connection string
Source - текст запроса, например:
Source = "Execute TEST " & Var1
Var1 - переменная задаваемая, например, с формы.
Построив однажды таким образом query, можно пользоваться им постоянно,
меняя только текст
Dim db As DAO.Database: Set db = CurrentDb
Dim qd As DAO.QueryDef: Set qd = db.QueryDefs("MyQuery")
qd.SQL = "Execute TEST '2005-09-01'"
DoCmd.OpenReport ...