「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