Mam's WebSite
建築CGパース住宅CGパース

Mamの覚書Q&A検索

トップページMamの覚書Q&A検索Access(VBA)⇒Q&A


大項目:「 Access 」 - 中項目:「 VBA 」

「 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


Mam's WebSite