오라클 데이터베이스에서 레코드 세트를 가져와 액세스 데이터베이스에 기록해야하는 다음 코드가 있습니다. 약 2000 개의 행이 있으며 예상하고 있습니다. 같은 액세스를 전송 참조하십시오. 문제는 데이터의 첫 번째 행만 무한 루프로 데이터베이스에 기록된다는 것입니다. getconnection 함수는 Access에 연결하는 사용자 정의 함수입니다.Excel VBA ADO - 데이터베이스에 쓰기 - 반복적으로 쓰여진 레코드의 첫 번째 행만
코드를 작동 시키려면 무엇을 변경해야합니까? 감사
Sub InsertLine(rS As ADODB.recordset)
Dim adoConn As ADODB.Connection, adoComm As ADODB.Command
Set adoConn = GetConnection("access")
Set adoComm = New ADODB.Command
With adoComm
Set .ActiveConnection = adoConn
Do Until rS.EOF
.CommandText = "INSERT INTO Products ([Product], [Category]) " & _
"VALUES(?,?)"
.Parameters.Append .CreateParameter(Type:=adVarWChar, Value:=rS![ITMDSC], Size:=255)
.Parameters.Append .CreateParameter(Type:=adVarWChar, Value:=rS![GRPDSC], Size:=255)
.Execute
rS.MoveNext
Debug.Print rS![ITMDSC]
Loop
End With
adoConn.Close
최종 하위 답변들에 대한
감사합니다. 필자는 다음과 같이 코드를 편집했지만 여전히 동일한 문제가 발생했습니다. 아니면 네가 의미하는 것을 이해하지 못 했니? 죄송합니다. 디버그 라인에 올바른 다음 레코드가 표시됩니다. 환호
Sub InsertLine(rS As ADODB.recordset)
Dim adoConn As ADODB.Connection, adoComm As ADODB.Command, S As String, S2 As String
Set adoConn = GetConnection("access")
Set adoComm = New ADODB.Command
With adoComm
Set .ActiveConnection = adoConn
.CommandText = "INSERT INTO Products ([Product], [Category]) " & _
"VALUES(?,?)"
.Parameters.Append .CreateParameter(Type:=adVarWChar, Value:=rS![ITMDSC], Size:=255)
.Parameters.Append .CreateParameter(Type:=adVarWChar, Value:=rS![GRPDSC], Size:=255)
S = rS![ITMDSC]
S2 = rS![GRPDSC]
Do Until rS.EOF
.CommandText = "INSERT INTO Products ([Product], [Category]) " & _
"VALUES(S , S2)"
.Execute
rS.MoveNext
Debug.Print rS![ITMDSC]
Loop
End With
adoConn.Close
종료 하위
이 보이는 현재의 매개 변수를 지워야합니다 ... 그것은 overcomplicated 만들고있다 각 루프 반복, 그래서 무시되는 추가 매개 변수 추가. 루프 외부에 두 개의 매개 변수를 작성하고 각각에 대한 참조를 저장해야합니다. 그런 다음 루프에서 이미 작성한 매개 변수의 값을 설정하십시오. – Joe
문제는 각 루프에서 레코드 세트를 다시 생성한다는 것입니다. 루프 외부에서'Execute' 라인을 통해'CommandText'를 이동하십시오. –
테이블에 새 레코드를 추가하거나 필드를 기존 레코드에 추가하려고합니까? –