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 ExplicitPrivate 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 SubERR_PROC:
adoCon.Close
Set adoCon = Nothing
Set adoCmd = Nothing
'
End Sub
Windows 10 Pro_x64 + Excel2013_x86 VBA で ADODB.Command を使って ストアドを試してみる
Windows 10 Pro_x64 + Excel2013_x86 VBA で ADODB.Command を使って ストアドを試してみる
簡単なストアドを書いて、ADODB.Command から使ってみる
※Windows版、Linux版ともに同じコードの動作確認(ODBCの指定以外は同じ)
こちらの続きといえば続き
※クラスへの実装の追加はどうするか、検討中
参考にしたのは以下のサイト
対象テーブルはこちら
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