2014-09-04 4 views
1

이 코드에서 작업 중이므로 코드에 무엇이 문제가 있는지 알 수 없습니다.SQL 실행시 VBA 개체 변수가 설정되지 않음

쿼리가 실행될 때까지 모든 것이 제대로 작동합니다.

여기에 코드입니다 :

Dim i As Integer 

ConnectDB 
lastrow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "H").End(xlUp).Offset(0, 0).Row 
MsgBox (lastrow) 

For i = 2 To lastrow 
    get_id = Sheet1.Cells(i, 8).Value 
    col1 = Sheet1.Cells(i, 9).Value 
    col2 = Sheet1.Cells(i, 10).Value 
    col3 = Sheet1.Cells(i, 11).Value 
    mySQL = "UPDATE pegawai SET nama = '" & col1 & "', alamat = '" & col2 & "', tlp = " & col3 & " where id = " & get_id & "" 
    MsgBox (mySQL) 
    oConn.Execute (mySQL) <---- ERROR HERE 
    Set oConn = Nothing 
Next i 
oConn.Close 

내가 오류 개체 변수 또는 With 블록 변수가 설정되지 않았습니다 얻을이 코드를 실행합니다. 내가

Set oConn = New ADODB.Connection 

를 추가 할 때 그리고 그것은

작동이 객체가

을 닫을 때 허용이 코드 내 연결되지 않는 오류가 발생

Dim oConn As ADODB.Connection 
Dim rs As ADODB.Recordset 

Public Sub ConnectDB() 
    Set oConn = New ADODB.Connection 
    oConn.Open "DRIVER={MySQL ODBC 3.51 Driver};" & _ 
    "SERVER=localhost;" & _ 
    "DATABASE=belajar;" & _ 
    "USER=root;" & _ 
    "PASSWORD=;" 
End Sub 

왜 잘못 됐어? 모두 도와 주시면 감사하겠습니다.

+2

루프의 Nothing으로 설정하지 마십시오. –

+0

예. @MikeCheel에 동의하십시오. 또한 나중에 코드에 넣기 전에 먼저 코드를 닫아야합니다. – L42

+0

나는 L42에 동의한다. –

답변

2

FOR 루프에서 Set oConn = Nothing을 제거하십시오.

Dim i As Integer 

ConnectDB 
lastrow = Sheets("Sheet1").Cells(Sheets("Sheet1").Rows.Count, "H").End(xlUp).Offset(0, 0).Row 
MsgBox (lastrow) 

For i = 2 To lastrow 
    get_id = Sheet1.Cells(i, 8).Value 
    col1 = Sheet1.Cells(i, 9).Value 
    col2 = Sheet1.Cells(i, 10).Value 
    col3 = Sheet1.Cells(i, 11).Value 
    mySQL = "UPDATE pegawai SET nama = '" & col1 & "', alamat = '" & col2 & "', tlp = " & col3 & " where id = " & get_id & "" 
    MsgBox (mySQL) 
    oConn.Execute (mySQL) <---- ERROR HERE 

Next i 
oConn.Close 
관련 문제