vba を使用して Excel から SQL ステートメントを実行しようとしています。あとは、select ステートメントを実行して、配列 Array1 と Array2 の値を使用するだけです。Array1 と Array2 には、2 つの列の WHERE 条件が格納されます。
例えば
for i=0 to UBOUND(Array1) 'UBOUND for Array2 will always be equal to UBOUND for Array1
sql = "SELECT name, address, state, zip WHERE
fname='" & Array1(i) & "' AND lname= '" & Array2(i) &"'"
open rs.sql
sheets(1).range("A1").CopyFromRecordset rs
Next
うまくいかないようです。ループを正しく使用していないと思います。ここで私が間違っていることを誰かが提案できますか?
調べていただきありがとうございます。
編集1:
接続パラメータ:
以下はコードです:
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
'database credentials
Dim uName As String, uPass As String
Dim strConnect As String
strConnect = "Driver={SQL Server Native Client 10.0};" & "Server=[servername]" & "Database=[dbname] ;Uid=" & uname & ";Pwd=" & upass & ";trusted connection=yes"
cn.ConnectionString = strConnect
cn.Open
for i=0 to UBOUND(Array1) 'UBOUND for Array2 will always be equal to UBOUND for Array1
sql = "SELECT name, address, state, zip FROM XYZ WHERE
fname='" & Array1(i) & "' AND lname= '" & Array2(i) &"'"
With rs
.ActiveConnection = cn
.Open sql
...[code to check for EOF/BOF, if not EOF or BOF then paste in pre defined cells]
sheets(1).range("A1").CopyFromRecordset rs
Next
end with
rs.close
cn.close