
- Код: Выделить всё
Sub Database_Update()
Dim db As Database
Dim ws As Workspace
Dim rst As Recordset
Dim sConnection As String
Dim sAdr As String
Dim i As Integer
Dim iReplaceCount As Integer
Set ws = DBEngine.CreateWorkspace("myName", "UID", "", dbUseODBC)
sConnection = "ODBC;DSN=ORA;UID=lomaster;PWD=123;SERVER=oracle;"
Set db = ws.OpenDatabase("", False, False, sConnection)
Set rst = db.OpenRecordset("select code, adr from person where em = '28'")
i = 1
iReplaceCount = 0
With rst
Do
sAdr = .Fields("adr").Value
If IsNumeric(Left$(sAdr, 6)) Then
.Edit
.Fields("ps_adr_1").Value = Right$(sAdr, Len(sAdr) - 7)
iReplaceCount = iReplaceCount + 1
End If
.MoveNext
i = i + 1
Loop While Not .EOF
End With
rst.Update
rst.Close
db.Close
ws.Close
MsgBox "Обработано записей: " & i - 1 & vbNewLine & "Изменено полей: " & iReplaceCount
End Sub
Возникает ошибка в строчке с .Edit
Run-time error '3027'
Обновление невозможно. База данных или объект доступны только для чтения.
Как побороть ???
Пробовал подключить другую базу (не Oracle, а просто DBF) - результат аналогичный

Что я делаю не так ???