• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Задержка добавления записи в базу Access из Dephi

  • Автор темы Zver
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

Zver

Добрый день.

Столкнулся со следующей проблемой:

В отдельной форме вводятся данные полей, затем добавляется запись в уже подключенную базу Access:

with ADOQuery1 do
begin
ConnectionString := Global_DBConnection_String;
SQL.Text := 'SELECT key FROM MainTable';
Open;
Last;
UniqueNumber := 1 + StrToInt(FieldByName('key').AsString);
Close;
SQL.Text := 'INSERT INTO MainTable Values (' +
QuotedStr(IntToStr(UniqueNumber)) + ',' +
QuotedStr(ObjectNameBox.Text) + ',' +
QuotedStr(AdressBox.Text) + ',' +
QuotedStr(COUFNS.Text) + ',' +
QuotedStr(PlkaUFNS.Text) + ',' +
QuotedStr(COInspection.Text) + ',' +
QuotedStr(PlkaInspection.Text) + ',' +
QuotedStr(TORM.Text) + ',' +
QuotedStr(OutsideObjects.Text) +
')';
ExecSQL;
Close;
end;


Затем на основной форме обновляем таблицу:


ADOTable1.Active := False;
ADOTable1.Active := True;


Но новая запись видна в таблице, только если обновить ADOTable спустя секунд 5. Пробовал по-разному, все равно такая задержка..

Подскажите, пожалуйста, если какой-то выход? Заранее спасибо)
 
L

LAW

По тексту программы никаких видимых заминок быть не должно, кроме метода Last().
Как вариант, можно попробовать получить значение с помощью запроса:
Код:
SELECT MAX(KEY) FROM MAINTABLE
Но скорее всего оперативной памяти не хватает или ещё почему-то серверная часть Access медленно отрабатывает.
Обновлять можно методом Refresh() немного быстрее.

Удачи!
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!