- Код: Выделить всё
1)
cn.Open "driver={Microsoft access driver (*.mdb)};Extended Properties=""DBQ=" & App.Path & "\Universys.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;"""
2)
cn.Provider = "Microsoft.Jet.OLEDB.4.0"
cn.Properties("Data Source") = App.Path & "\Universys.mdb"
cn.Open
Еще есть процедура отрытия рекордсета
- Код: Выделить всё
Private Function GetRecordset(cmd As String) As ADODB.Recordset
Dim rs As ADODB.Recordset
On Error GoTo ErrorHandler
Set rs = New ADODB.Recordset
rs.Open cmd, cn, adOpenStatic, adLockBatchOptimistic
Set rs.ActiveConnection = Nothing
Set GetRecordset = rs
Set rs = Nothing
Exit Function
ErrorHandler:
MsgBox Err.Description, vbCritical, "Êðèòè÷åñêàÿ îøèáêà"
End Function
и процедура апдейта
- Код: Выделить всё
Public Sub UpdateRS(rs As ADODB.Recordset)
On Error GoTo ErrorHandler
Set rs.ActiveConnection = cn
rs.UpdateBatch
Set rs.ActiveConnection = Nothing
Exit Sub
ErrorHandler:
MsgBox Err.Description, vbCritical, "Êðèòè÷åñêàÿ îøèáêà"
End Sub
Первый вариант соединения не работает под юзером с ограниченными правами, в остальном все в порядке. При втором варианте во время апдейта выходит ошибка "Попытка присвоить значение null переменной, не принадлежащей к типу variant". Этой "переменной" является ключевое поле таблицы, и оно - счетчик. Если проставить id от балды, то нормально проапдейтится. Причем это происходит только с одной таблицей. Пробовал удалить ключевое поле и создать заново - результат тот же. Сабж.