2016-10-05 381 views
1

Excelフォームにデータがあり、データベースにインポートしたいのですが、私はまた、データベースからいくつかのデータを取得したい。私はデータベースに接続するためにVBAを使用しています。私のコードでエラーが出ています。ここで 3705オブジェクトが開いているときに操作が許可されていません

はコードです:

Sub Button1_Click() 


    Dim conn As New ADODB.Connection 
    Dim rs As New ADODB.Recordset 


     'Open a connection to SQL Server 
     conn.Provider = "sqloledb" 
     conn.Properties("Prompt") = adPromptAlways 
     conn.Open "Data Source=localhost;Initial Catalog=bank;" 

     'conn.Open "Provider=SQLOLEDB;Data Source=ASUSBOOK\SQL2012;Initial Catalog=ExcelDemo;Integrated Security=SSPI;" 
     Set rs.ActiveConnection = conn 
      rs.Open "select code from info" 
      startrow = 2 

      Do Until rs.EOF 
      Cells(startrow, 5) = rs.Fields(0).Value 


      rs.MoveNext 
      startrow = startrow + 1 

      Loop 

      rs.Close 
      Set rs = Nothing 


    Dim iRowNo As Integer 
    Dim accountno, Amount, code As String 
    Dim Rowcount As Integer 
    Rowcount = 1 


    With Sheets("Sheet1") 


     iRowNo = 2 

      Do Until .Cells(iRowNo, 1) = "" 
      accountno = .Cells(iRowNo, 1) 
      Amount = .Cells(iRowNo, 2) 
      .Cells(iRowNo, 3) = "OK" 
      .Cells(iRowNo, 4) = Rowcount 
      .Cells(iRowNo, 5) = Post_Date 

      'Generate and execute sql statement to import the excel rows to SQL Server table 
      conn.Provider = "sqloledb" 
      conn.Properties("Prompt") = adPromptAlways 
      conn.Open "Data Source=localhost;Initial Catalog=bank;" 
      conn.Execute "insert into dbo.Customers (AccountNo,Amount,code) values ('" & accountno & "', '" & Amount & "', '" & code & "')" 

      iRowNo = iRowNo + 1 
      Rowcount = Rowcount + 1 
      DoEvents 

     Loop 

     MsgBox "Customers imported." 

     conn.Close 
     Set conn = Nothing 

    End With 




End Sub 
+0

あなたが得るエラーとは何で、どのラインがそれに責任がありますか? –

+0

プロパティをリセットしようとする前に 'conn'を終了していません。 – Rory

+0

この行は責任がありますconn.provider = "sqloledb" エラーは3705操作はオブジェクトが開いているときに許可されていませんLajo Arpad –

答えて

0

adUseClientへのADOレコードセットのCursorLocationプロパティを設定:

conn.CursorLocation = adUseClient 
+0

完了ありがとう –

関連する問題