1
아래 코드를 사용하여 현재 셀을 가져 와서 SQL Server에서 테이블을 업데이트하려고합니다.Excel VBA에서 SQL Server 테이블을 업데이트하십시오.
Sub UpdateTable()
Dim rngName As Range
cnnstr = "Provider=SQLOLEDB; " & _
"Data Source=MyServer; " & _
"Initial Catalog=Mydb;" & _
"User ID=User;" & _
"Password=Pwd;" & _
"Trusted_Connection=No"
Set rngName = ActiveCell
'Debug.Print (rngName)
Set cnn = New ADODB.Connection
Application.ScreenUpdating = False
cnn.Open cnnstr
Set rs = New ADODB.Recordset
uSQL = "UPDATE MyTable SET FieldNameX = 1 WHERE FieldNameY = '" & rngName & "' "
rs.CursorLocation = adUseClient
rs.Open uSQL, cnn, adOpenStatic, adLockOptimistic, adCmdText
rs.Close
Set rs = Nothing
cnn.Close
Set cnn = Nothing
Exit Sub
End Sub
내가 설정하고 코드에서 설정 한 기록을 연 Operation is not allowed when the object is closed
왜이 폐쇄 될 코드를 단계별로 때, 라인 rs.close에 시간 오류를 실행 말한다?
문제를 해결하고 활성 셀이 쿼리를 채우고 SQL Server에서 테이블을 업데이트하도록하려면 어떻게해야합니까?
'rs'레코드 세트가 성공적으로 열렸 음을 확인할 수 있습니까? 직접 실행 창에서'? rs.recordcount'를 시도하십시오 (CTRL_G 사용). 라인 'rs.Open'에서 오류가 발생하면 회의가 열려 있지 않은 것 같습니다. –
어디에 rs.recordcount 줄을 써야합니까? 내 줄 rs.open 후 그것을 배치하고 인수가 잘못되었거나 잘못된 속성 할당을 사용하여 시간 오류가 발생했습니다 – Jez
업데이트 SQL이 레코드를 반환하지 않으므로 레코드 집합이 비어있을 것으로 예상됩니다. 업데이트의 경우 Connection.Execute 접근법을 사용하는 것이 훨씬 낫습니다. 업데이트로 영향을받는 행 수를 결정하는 데 사용할 수있는 'RecordsAffected'매개 변수가 있습니다. http://msdn.microsoft.com/en-us/library/windows/desktop/ms675023(v=vs.85).aspx –