Lazarus 1.6 и MS Access

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

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

Lazarus 1.6 и MS Access

Сообщение woodhead » 27.03.2016 18:06:13

Приветствую.
Столкнулся с проблемой при работе с 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). Как быть, ума не приложу? Кто-нибудь, подскажите, пожалуйста.
woodhead
новенький
 
Сообщения: 21
Зарегистрирован: 24.12.2014 12:23:20

Re: Lazarus 1.6 и MS Access

Сообщение WAYFARER » 27.03.2016 20:19:28

А какие компоненты доступа используются?
Вообще желательно маленький пример накидать.
Аватара пользователя
WAYFARER
энтузиаст
 
Сообщения: 537
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Re: Lazarus 1.6 и MS Access

Сообщение woodhead » 18.04.2016 09:46:14

Разобрался.
Нужно было у экземпляра AccessSQLQuery (компонент TSQLQuery) свойство Options -> sqoAutoCommit выставить в true
woodhead
новенький
 
Сообщения: 21
Зарегистрирован: 24.12.2014 12:23:20


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 228

Рейтинг@Mail.ru