0
0

More than 5 years have passed since last update.

Windows 10 Pro x64 + Excel2016 x86 VBA + ADODB.Command を使って SQL Server 2016 Express でストアドを試してみる

Last updated at Posted at 2019-02-06

目的

簡単なストアドを書いて、ADODB.Command から使ってみる
※Windows版、Linux版ともに同じコードの動作確認(ODBCの指定以外は同じ)
※クラスへの実装の追加はどうするか、検討中
 adoCmd.ActiveConnection = adoCon 実行後
 adoCmd(1) = "00000001" が正常に動くため
対象テーブルはこちらで作成したものを対象とする

ストアドの作成

以下を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'

サンプルコード


'=================================================================
'
'   DBCtrlクラスを使用した
'   Excel2016 VBA -> SQLServer からストアドを使った読込サンプル
'
'=================================================================
Private Sub ReadSQLSVDBCtrl()
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.ActiveConnection = adoCon
    '   を実行しないとエラーになる
    '   adoCmd のクラスの実装は要検討
    '
    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
'
End Sub

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0