トップへ(mam-mam.net/)

MS-SQLのストアードプロシージャを実行する

検索:

「MS-SQLのストアードプロシージャを実行する」

MS-SQLのストプロを実行するには

回答

2種類の方法を記述します。
1つ目がADOです。
2つ目がDAOです。

ソース

Sub ストプロ実行ADO()
  Dim constr as string
  Dim cn As ADOCB.Connection
  Dim rs Ad ADODB.Recordset
  Dim cmd As ADODB.Command

  constr = "Provider=MSDASQL.1;Persist Security Info=False;" & _
           "Extended Properties=Driver={SQL SERVER};" & _
           "SERVER=サーバー名又はIPアドレス;" & _
           "UID=ユーザーID;" & _
           "PASSWORD=パスワード;" & _
           "DATABASE=データベース名" 
  Set rs = New ADODB.Recordset
  Set cn = New ADODB.Connection

  cn.ConnectionString = constr
  cn.CursorLocation = ad UseServer
  cn.Open

  Set cmd = New ADODB.Command
  cmd.CommandText = "ストプロの名前"
  cmd.CommandType = adCmdStoredProc
  cmd.ActiveConnection = cn
  'パラメーターが必要な場合はパラメーターを設定する
  'cmd.Parameters(1).Value=""  '1つめのパラメータ
  'cmd.Parameters(2)Value=""  '2めのパラメータ
  
  '戻り値が無い場合は以下
  cmd.Execute
  '戻り値がある場合は以下
  'Set rs = cmd.Execute

End Sub

Sub ストプロ実行DAO()
  Dim ws As DAO.Workspace, b as DAO.Database
  Dim rs As DAO.Recordset

  Set ws = DBEngine.Workspaces(0)
  Set db = ws.OpenDatabase("",False,False, _
           "ODBC;Driver={SQL Server};" & _
           "SERVER=サーバー名又はIPアドレス;" & _
           "UID=ユーザーID;" & _
           "PWD=パスワード;" ' _
           "DATABASE=データベース名"

  '第一引数は文字列で、半角スペース区切りで、"Exec ストプロ名 引数・・・"
  Set rs = db.OpenRecoedset("Exec ストプロ名 引数1,引数2" ,dbDynaset,dbSQLPassThrough)

End Sub