Windows 10 Pro_x64 + Excel2013_x86 VBA で ADODB.Command を使って ストアドを試してみる

Windows 10 Pro_x64 + Excel2013_x86 VBA で ADODB.Command を使って ストアドを試してみる

 

簡単なストアドを書いて、ADODB.Command から使ってみる

Windows版、Linux版ともに同じコードの動作確認(ODBCの指定以外は同じ)

こちらの続きといえば続き

※クラスへの実装の追加はどうするか、検討中

 

参考にしたのは以下のサイト

Create a Stored Procedure

コマンドでストアド プロシージャを呼び出す

対象テーブルはこちら

Windows 10 Pro_x64 + Excel2013_x86 VBA DataBase Access クラスを使って書き込んでみる

 

以下をSSMSから実行する

USE DEMO; 
GO 
CREATE PROCEDURE GETZIPCODE @SEQ nchar(8) AS  
SELECT PREFCODE, POSTAL, CITIESKANJI, POADDRKANJI 
FROM ZIPCODE 
WHERE SEQ = @SEQ;
GO 

以下でテストしてみる

EXECUTE GETZIPCODE N'00000001'

サンプルコード

Option Explicit

Private Sub CommandButton1_Click()
On Error GoTo ERR_PROC
'
    Dim adoCon      As ADODB.Connection
    Dim adoRst      As New ADODB.Recordset
    Dim adoCmd      As New ADODB.Command
    Dim host        As String
    Dim user        As String
    Dim pass        As String
    Dim conn        As String
'
    host = "SQLSVODBC32"
'    host = "SQLSV2UBUNTU" ' Linux版
'
    user = "demo"
    pass = "demo"
'
    conn = "DSN=" & host & ";UID=" & user & ";PWD=" & pass
'
    adoCmd.CommandText = "GETZIPCODE"
    adoCmd.CommandType = adCmdStoredProc
'
    Set adoCon = New ADODB.Connection
'
    adoCon.ConnectionString = conn
    adoCon.CursorLocation = adUseClient
    Call adoCon.Open
'
    adoCmd.ActiveConnection = adoCon
'
    adoCmd.Parameters.Refresh
    adoCmd(1) = "00000001"
'
    Set adoRst = adoCmd.Execute
'
    While Not adoRst.EOF
        Debug.Print Trim(adoRst.Fields("PREFCODE")) & vbTab & _
                    Trim(adoRst.Fields("POSTAL")) & vbTab & _
                    Trim(adoRst.Fields("CITIESKANJI")) & vbTab & _
                    Trim(adoRst.Fields("POADDRKANJI"))
'
        adoRst.MoveNext
    Wend
'
    adoCon.Close
    Set adoCon = Nothing
    Set adoCmd = Nothing
'
    Exit Sub

ERR_PROC:
    adoCon.Close
    Set adoCon = Nothing
    Set adoCmd = Nothing
'
End Sub