Имеется база данных в формате MS Access. Надо работать с ней, не используя визуальные "data-aware" компоненты. В базе имеются три таблицы (all_cards, editions, scripts) для работы с которыми я создал 3 TAAOTable и 1 TADOQuery, работающие с базой через один TADOConnection. Теперь, мне очень хочется вставить в таблицу scripts новую запись. Я делают это так:
DB_SCR->Insert();
DB_SCR->SetFields(...);
DB_SCR->Post();
(DB_SCR — это TADOTable, ответственный за работу с таблицей scripts).
Всё прекрасно работает, запись добавляется в базу данных, но: при попытке в дальнейшем изменить эту запись показывается ошибка "Не удаётся найти строку для обновления. Некоторые значения могли быть изменены со времени последнего чтения" (при использовании DB_SCR->Locate). Зато после перезапуска программы всё работает без запинку. OK. Похоже, я просто забыл освежить набор данных в таблице. Изменяем код:
А вот теперь всё гораздо интереснее. Запись в базу данных добавляется, но на строке "DB_SCR->Refresh();" раздаётся ошибка "Источник данных изменил или удалил значение ключа для данной строки в хранилище данных. Теперь удалена и локальная строка". Объясните мне, пожалуйста, в чём я неправый.