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

Access DAOでMS SQLのストアドプロシージャの結果を取得するには

検索:

「Access DAOでMS SQLのストアドプロシージャの結果を取得するには」

Access DAOでMS SQLのストアドプロシージャの結果を取得するには

回答

use データベース名
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE dbo.ストアドプロシージャ名
  @in1 int,
  @in2 int
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
select @in1 * @in2
END
GO

ソース

以下のプロシージャでイミデイトウィンドウに結果セットが表示されます
Option Compare Database
Option Explicit
 
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" ( _
ByVal hwndParent As Long, _
ByVal fRequest As Long, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As Long
 
Private Const ODBC_ADD_DSN = 1
Private Const ODBC_ADD_SYS_DSN = 4
Private Const ODBC_REMOVE_SYS_DSN = 6
 
Sub odbc_connect_create()
  Dim SqlODBC As Boolean
  Dim Driver As String
  Dim Attributes As String
  Driver = "SQL Server" & vbNullChar
  Attributes = "DSN=データソース名" & vbNullChar & _
             "SERVER=サーバー名" & vbNullChar & _
             "Description=" & vbNullChar & _
             "DATABASE=データベース名" & vbNullChar
  SqlODBC = SQLConfigDataSource(0, ODBC_ADD_DSN, Driver, Attributes)
  If SqlODBC Then
    MsgBox "成功"
  Else
    MsgBox "失敗"
  End If
End Sub

Sub abc()
Dim db As Database
Dim rs As Recordset
  Set db = DBEngine.Workspaces(0).OpenDatabase("", False, False, "ODBC;DSN=データソース名;UID=ユーザー名;PWD=パスワード")
  Set rs = db.OpenRecordset("EXECUTE ストアドプロシージャ名 2,3", dbOpenSnapshot, dbSQLPassThrough)
  Debug.Print rs.Fields(0).Value
End Sub