0

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
4

1 に答える 1

0

やっと頭に入ってきました。いくつかのこと - 1. 数式エラーのため、配列 1 は空でした。それを修正したら、クエリを実行することができました。次に、ループ内の構造に従います。

cn.open
 for i=lbound(array1) to rbound(array2)
    sql="SELECT name, address, state, zip FROM XYZ WHERE fname='" & Array1(i) & "' AND lname= '" & Array2(i) &"'""
    rs.open sql, cn
    sheets(1).range("A2").copyfromrecordset rs
    rs.close
 next i
cn.close
于 2013-08-14T03:47:49.340 に答える