Я использую MS Access 2013 и SQL Server 2012. Я подключил базу данных SQL Server к MS Access. Я подключаюсь к SQL Server с помощью проверки подлинности SQL Server. Я хочу выполнить хранимую процедуру со значением, введенным в текстовое поле в одной из моих форм. Я пытался это сделать уже давно, но ничего, что я нашел на этом сайте, не работает для меня. Может ли кто-нибудь помочь мне и дать мне несколько советов о том, как написать базовый код VBA для выполнения процедуры? Пожалуйста помоги!!!Выполнение хранимой процедуры SQL Server из MS Access
ответ
Возможно, наиболее простым способом является создание временного сквозного запроса с использованием объекта DAO.QueryDef. Если у вас есть существующая связанная таблица в Access, вы можете использовать ее свойство .Connect
(информация о подключении ODBC). Все, что вам нужно сделать, это установить .SQL
свойство QueryDef позвонить (EXEC) хранимой процедуры, например:
Option Compare Database
Option Explicit
Private Sub Command2_Click()
Dim cdb As DAO.Database, qdf As DAO.QueryDef
Set cdb = CurrentDb
Set qdf = cdb.CreateQueryDef("")
' get .Connect property from existing ODBC linked table
qdf.Connect = cdb.TableDefs("dbo_myContacts").Connect
qdf.sql = "EXEC dbo.addContact N'" & Replace(Me.Text0.Value, "'", "''") & "'"
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError
Set qdf = Nothing
Set cdb = Nothing
End Sub
Так, например, если текстовое поле Text0 содержит Thompson
то QueryDef выполнит
EXEC dbo.addContact N'Thompson'
и если текстовое поле содержит O'Rourke
то QueryDef выполнит
EXEC dbo.addContact N'O''Rourke'
Спасибо! Он отлично работает! Ты замечательный! Имейте большой понедельник !!! – Joanna
После проб и ошибок это один работал for me
> Private Sub UpdateItems_Click()
> Dim cdb As DAO.Database, qdf As DAO.QueryDef
> Set cdb = CurrentDb
> Set qdf = cdb.CreateQueryDef("")
> ' get .Connect property from existing ODBC linked table
> qdf.Connect = cdb.TableDefs("dbo_AccesLinkedTable").Connect
> qdf.SQL = "EXEC dbo.YourStoreProcedure"
> qdf.ReturnsRecords = False
> qdf.Execute dbFailOnError
> Set qdf = Nothing
> Set cdb = Nothing
>
> MsgBox "Records Updated!"
>
> End Sub
Вы пытались создать сквозной запрос с использованием объекта DAO.QueryDef? –
@gord thompson Нет, я этого не сделал, и я понятия не имею, как это сделать ... – Joanna