Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Recordset can’t be updated  [new]
MVS_L
Guest
Здравствуйте!
Нетрудный вопрос:
Имею Grid и

Set adb = New ADODB.Connection
 With adb
      .Provider = "Microsoft.Jet.OLEDB.4.0"
      .Properties("Data Source").VALUE = Ph & "FFX_Tmpr.mdb"
      .Open
   End With
'Set ar.re ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Ph & "FFX_Tmpr.mdb"

Set ar = New ADODB.Recordset
   With ar
       Set .ActiveConnection = adb
      .SOURCE = "SELECT * FROM Tmpr"
      .LockType = adLockOptimistic
      .CursorType = adOpenKeyset
      .Open
   End With
VSFlexGrid1.DataMode = flexDMBound
Set VSFlexGrid1.DataSource = ar


Т.е. Grid заполняется из рекордсета. Если вношу изменения в Grid, эти изменения сразу происходят в таблице. Все что написал до этого, работает отлично.

Но когда питаюсь сделать изменения в таблице программно, выходит ошибка
“1003 Recordset can’t be updated”
12 апр 06, 13:28    [2552667]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
1. Какой грид?
2. Как меняете данные программно? В таблице или в гриде?
12 апр 06, 15:10    [2553532]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
MVS_L
Guest
Спасибо за ответ!

1. Grid = VSFlexGrid 7.0

как DataSource имеет мой рекордсет.
Плюс:VSFlexGrid1.DataMode = flexDMBound
и как следствие, любые изменения в ручную, хоть в таблице хоть в FlexGrid-е отображаются взаимно. Это все работает.
Но кодом не дает изменить содержимое FlexGrid-а

2. как не меняй, не имеет значение:
а)
VSFlexGrid1.TextMatrix(1, 7) = "ххх"
в)
VSFlexGrid1.Cell(flexcpText, 1, 7, 1, 7) = "ххх"
г)
VSFlexGrid1.Row = 1
VSFlexGrid1.Col = 7
VSFlexGrid1.Text = "ххх"
SOS!
12 апр 06, 15:57    [2553881]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
после ar.Open попробуй обновить какую-нить запись в рекордсете:
ar("Field1") = "что-нибудь"
ar.Update
12 апр 06, 18:03    [2554891]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
MVS_L
Guest
...
   .Fields(1) = “что-нибудь"
   .Update
End With

VSFlexGrid1.DataMode = flexDMBound
Set VSFlexGrid1.DataSource = ar
Обновляет данные и FlexGride и в Таблице.

...
      .Open
   End With
VSFlexGrid1.DataMode = flexDMBound
Set VSFlexGrid1.DataSource = ar

      ar.Fields(1) = что-нибудь "
      ar.Update 
Обновляет данные и FlexGride и в Таблице.


Чувствую, вы мне скажете “Тогда сам разбирайся со своим FlexGride-ом, причина там! ”
12 апр 06, 18:31    [2555038]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
nibbles
Member

Откуда: Moscow
Сообщений: 2378
а так?
ar.CursorLocation = adUseClient
12 апр 06, 19:28    [2555273]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
MVS_L
Guest
“Recordset can’t be updated”
12 апр 06, 19:56    [2555380]     Ответить | Цитировать Сообщить модератору
 Re: Recordset can’t be updated  [new]
MVS_L
Guest
Кто пользуется VSFlexGrid 7.0, пожалуйста отзовитесь, это свойство VSFlexGrid-а?
Т.е. когда он завязан на рекордсет, его нельзя изменять программно.
Практически проверил все его свойства, все работают, даже Combobox создаются для каждой ячейки свой, и заполняется ComboList или ColComboList, а вот убейте, редактировать программно, не дает .
12 апр 06, 22:17    [2555795]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить