3

オブジェクトを作成しました。そこからクエリを実行したことがわかります。エラーの場所を誰か教えてもらえますか?

エラー文は

“Run time error ‘3704’ operation is not allowed when the object is closed” 

そしてそれはこの行で発生します

ActiveWorkbook.Worksheets("SQL").Range("A1").CopyFromRecordset rspubs

私のコードは

Sub sqlTest()

Dim Sqlquery As String
Dim cnpubs As ADODB.Connection
Dim rspubs As ADODB.Recordset

' Create a connection object.
Set cnpubs = New ADODB.Connection
' Create a recordset object.
Set rspubs = New ADODB.Recordset
' Provide the connection string.
Dim strConn As String


'Construct query
Sqlquery = " sql query;”

'Use the SQL Server OLE DB Provider.

strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=XXXX;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=XXXX;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=Prospects" 

'Now open the connection.
cnpubs.Open strConn

With rspubs
' Assign the Connection object.
.ActiveConnection = cnpubs
' Extract the required records.
'.Source = Sqlquery
.Open Sqlquery
' Copy the records into cell A1 on Required Sheet
ActiveWorkbook.Worksheets("SQL").Range("A1").CopyFromRecordset rspubs
End With

' Tidy Up
cnpubs.Close
rspubs.Close

Set cnpubs = Nothing

Set rspubs = Nothing


End Sub
4

1 に答える 1

0

実行するクエリを指定する必要があります。Sqlqueryに必要なのは、「sqlquery」だけです。これはレコードセットを返しません。文字列をに変更して、Select 1 as testvalue何かをテストしてみてください。

于 2012-11-05T16:45:33.220 に答える