Хранимая процедура 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