Хранимая процедура SQL Server вызова MS Access
у меня есть приложение MS Access, которое содержит все таблицы, связанные с SQL Server, поэтому в коде MS Access VBA или запросе я работаю с этими таблицами очень просто, я обращаюсь к ним по имени, например [Customers]
.
также у меня есть хранимая процедура в SQL Server под названием sp_CopyData
который мне нужно вызвать из моего кода VBA. Как я могу это сделать без создания нового подключения к SQL Server (у меня уже есть где-то!? потому что у меня есть доступ к таблицам)?
или это невозможно? Ценить любая помощь. Спасибо!
4 ответов
правильный ответ выяснил, это должно быть похоже:
Dim qdef As DAO.QueryDef
Set qdef = CurrentDb.CreateQueryDef("")
qdef.Connect = CurrentDb.TableDefs("[ANY LINKED TABLE TO MS SQL SERVER]").Connect
qdef.SQL = "EXEC sp_CopyData"
qdef.ReturnsRecords = False ''avoid 3065 error
qdef.Execute
создайте запрос pass-though, и вы можете использовать его во всем приложении в любое время, когда вам нужно выполнить некоторый T-SQL.
в коде это выглядит так:
With CurrentDb.QueryDefs("qPass")
.SQL = "exec sp_copydata"
.ReturnsRecords = False ''avoid 3065 error
.Execute
End With
попробуй:
CurrentProject.Connection.Execute "EXEC sp_CopyData"
ссылки:http://msdn.microsoft.com/en-us/library/office/ff821478 (v=офис.14).aspx
код в MS Access работает для меня:
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=[DB];Data Source=[PC];Integrated Security=SSPI;"
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "sp_CopyData"
cmd.Parameters.Append cmd.CreateParameter("@param", adVarChar, adParamInput, 255, param)
cmd.Execute