Lazarus 1.6 и MS Access

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
woodhead
новенький
Сообщения: 21
Зарегистрирован: 24.12.2014 11:23:20

Lazarus 1.6 и MS Access

Сообщение woodhead »

Приветствую.
Столкнулся с проблемой при работе с MS Access (mdb).
Например, есть такой код:

Код: Выделить всё

with DBForm.AccessSQLQuery do
    begin
 
      Close;
      SQL.Clear;
      SQL.Add(UTF8ToWinCP('SELECT TestField FROM TestTable WHERE TestField = ''Тест'''));
      Open;
 
      Close;
      SQL.Clear;
      SQL.Add(UTF8ToWinCP('INSERT INTO TestTable (TestField) VALUES (''Тест'')'));     
      ExecSQL;
 
    end;


Запрос SELECT работает и показывает ровно столько записей, сколько их есть со значением 'Тест' в поле TestField. Но вот INSERT не работает, хоть убей. То есть в БД запись не добавляется, но счётчик автоинкремента считает, что запись была добавлена. То есть, если счётчик последней записи в TestTable 5, то следующая запись добавляется (с помощью самого Access) со счётчиком 7 или больше (в зависимости, сколько раз я пытался выполнить из программы INSERT). Как быть, ума не приложу? Кто-нибудь, подскажите, пожалуйста.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 564
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

А какие компоненты доступа используются?
Вообще желательно маленький пример накидать.
woodhead
новенький
Сообщения: 21
Зарегистрирован: 24.12.2014 11:23:20

Сообщение woodhead »

Разобрался.
Нужно было у экземпляра AccessSQLQuery (компонент TSQLQuery) свойство Options -> sqoAutoCommit выставить в true
Ответить