|
|
|
| Dim fld As ADODB.Field
Dim i As Integer
Dim ctl As Control
Dim frmCurr As Form
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
Dim prm As ADODB.Parameter
Set cnn = New ADODB.Connection
cnn.Open "file Name=" & CurrentProject.Path & "\соединение.udl"
Set рекодсет = New ADODB.Recordset
рекодсет.CursorLocation = adUseClient
рекодсет.LockType = adLockOptimistic
Rem рекодсет.Open "ХанимаяПроцедура", cnn, adOpenKeyset, adLockBatchOptimistic
Set cmd.ActiveConnection = cnn
cmd.CommandText = "ХанимаяПроцедура"
cmd.CommandType = adCmdStoredProc
Set рекодсет = cmd.Execute
из рекодсет (данные хран проц) заношу значен полей в свободную форму
Set frmCurr = Form_Свободная
For Each fld In рекодсет.Fields
For Each ctl In frmCurr
If ctl.Name = fld.Name Then
frmCurr(ctl.Name).Value = fld.Value
End If
Next ctl
Next fld
далее изменяю знач полей свободной формы и пытаюсь записать измененные данные в рекордсет
For Each fld In рекодсет.Fields
For Each ctl In frmCurr
If ctl.Name = fld.Name And ctl.Name <> "код" Then
рекодсет(ctl.Name).Value = frmCurr(ctl.Name).Value
рекодсет.UpdateBatch
End If
Next ctl
Next fld
Подскажите, почему если использовать
рекодсет.Open "ХанимаяПроцедура", cnn, adOpenKeyset, adLockBatchOptimistic
далее обновление рекодсет происходит нормально,
а если Set рекодсет = cmd.Execute, то выдается сообщение текущий объект не поддерживает обновление. Это связано с ограничением поставщика или с выбранным типом блокировки | |
|
| |
|
|
|
|
Execute Method (ADO Connection)
The returned Recordset object is always a read-only, forward-only cursor. If you need a Recordset object with more functionality, first create a Recordset object with the desired property settings, then use the Recordset object's Open method to execute the query and return the desired cursor type.
| ИМХО, это справедливо и для Command.Execute, хотя в справке явно не указано.
Проверьте, что возвращает св-во CursorType полученного Recordset-а. | |
|
| |
|
|
|
| MsgBox Рекордсет.RecordCount возвращает -1
MsgBox Рекордсет.CursorType возвращает 0 | |
|
| |
|
|
|
|
Constant: adOpenForwardOnly = 0
Default. Uses a forward-only cursor. Identical to a static cursor, except that you can only scroll forward through records.
|
| |
|
| |