2015-04-12 3 views
3

Я использую MS Access 2013 и SQL Server 2012. Я подключил базу данных SQL Server к MS Access. Я подключаюсь к SQL Server с помощью проверки подлинности SQL Server. Я хочу выполнить хранимую процедуру со значением, введенным в текстовое поле в одной из моих форм. Я пытался это сделать уже давно, но ничего, что я нашел на этом сайте, не работает для меня. Может ли кто-нибудь помочь мне и дать мне несколько советов о том, как написать базовый код VBA для выполнения процедуры? Пожалуйста помоги!!!Выполнение хранимой процедуры SQL Server из MS Access

+0

Вы пытались создать сквозной запрос с использованием объекта DAO.QueryDef? –

+0

@gord thompson Нет, я этого не сделал, и я понятия не имею, как это сделать ... – Joanna

ответ

3

Возможно, наиболее простым способом является создание временного сквозного запроса с использованием объекта 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' 
+0

Спасибо! Он отлично работает! Ты замечательный! Имейте большой понедельник !!! – Joanna

1

После проб и ошибок это один работал 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