사용자가 선택한 항목에 따라 데이터베이스의 다른 테이블을 업데이트하는 매우 동적 인 매크로를 만들려고합니다. 물론 각 테이블에는 고유 한 제목과 정보가 있습니다. 업데이트에 문제가 있습니다 (사용자가 이전 테이블에 새 레코드를 추가 할 때). 이것은 코드의 일부입니다. 문제는 ".update"에 도달하면 "Operation must use an Updateable Query"오류가 발생합니다.
Dim DBCnn As ADODB.Connection
Dim RecSet As ADODB.Recordset
Dim sQRY As String
Dim FilePath, Titulo, Tabla As String
Dim LastRow, LastColumn, TotalRecords, Id As Long
Set DBCnn = New ADODB.Connection
Set RecSet = New ADODB.Recordset
DBCnn.Mode = adModeReadWrite
DBCnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & FilePath & ";"
sQRY = "SELECT * FROM Customers" & Tabla ' & " WHERE PopID = " & lngid
RecSet.CursorLocation = adUseClient
RecSet.Open _
Source:=sQRY, _
ActiveConnection:=DBCnn, _
CursorType:=adOpenDynaset, _
LockType:=adLockOptimistic
Do While Range("A" & LastRow).Value <> ""
' repeat until first empty cell in column A
With RecSet
.AddNew
.Fields("Id") = Range("A" & LastRow).Value
.Fields("Name") = Range("B" & LastRow).Text
.Fields("Age") = Range("C" & LastRow).Value
.Update '(Here's my error)
End With
LastRow = LastRow + 1
Loop
이 줄을 버리십시오.
RecSet.CursorLocation = adUseClient
또는 대신 다음과 같이 시도하십시오.
RecSet.CursorLocation = adUseServer
MSDN의 CursorLocation 속성 (ADO) 에서 설명 섹션을 참조하십시오 .
" CursorLocation 속성이 adUseClient 로 설정된 경우 레코드 세트에 읽기 전용으로 액세스 할 수 있으며 호스트에 대한 레코드 세트 업데이트가 불가능합니다."
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다