|
Вопрос # 5 220/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Помогите пожалуйста разобраться с проблемой двух соединений ADOConnection1 к одной базе данных Access
Есть две разные программы на delphi 7.
Обе они подключаются к базе данных Access.
Подключение идет посредством ADOConnection1, далее связка ADOQuery1 DataSource1 DBGrid1 ничего сложного.
В первой программе при нажатии на кнопку выполняется добавление записей в Базу данных:
// Добавление записей в БД
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('INSERT INTO test (field1,field2) VALUES (123,"text" ) ; ');
ExecSQL;
end;
end;
Во второй программе при нажатии на кнопку выполняется считывание таблицы:
// Чтение
procedure TForm1.Button1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Add('SELECT * FROM test ;');
Active:=True;
end;
end;
Возникает следующая проблема.
После добавления записей в таблицу из первой программы,
при нажатии кнопки "считать данные" во второй программе,
SQL-запрос не вытаскивает последние добавленные записи.
Причем заметил, что если через пару секунд снова попробовать считать данные,
то все считывается. Данный тайм-аут составляет в среднем от 2 - 5 сек
С чем это связано? Как решить эту проблему?
Это блокировка записи или проблема с ADOQuery1?
(файлы прилагаются)
Спасибо.
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
 |
Вопрос задал: neon (статус: Посетитель)
Вопрос отправлен: 22 апреля 2011, 09:10
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 3; последнее сообщение — 22 апреля 2011, 11:52; участников в обсуждении: 2.
|
Вадим К (статус: Академик), 22 апреля 2011, 10:24 [#1]:
Это проблема того, что Access не является серверной базой данных. Она рассчитана на одно подключение, с которым работает хорошо.
И сама база сохраняет данные на диск тогда, когда она это считает правильным (часть данных кешируется, поэтому для пользователя это абсолютно прозрачно).
Решить эту проблему правильно можно только переходом на правильную базу - Firebird, MySQL, MSSQL.
Но если сильно-сильно нужен именно Access, то придется строить трехзвенку. То есть, одно приложение, которое работает с базой напрямую, а два (или более других) обращаются к нему за необходимостью записать/прочитать данные.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
neon (статус: Посетитель), 22 апреля 2011, 11:09 [#2]:
Вадим К:
Из бесплатных Баз данных, где не будет такой проблемы, что посоветуете?
Ничего такого серьезного на них крутиццо не будет.
|
|
Вадим К (статус: Академик), 22 апреля 2011, 11:52 [#3]:
я уже выше написал - Firebird, MySQL.
Также можно заюзать MSSQL express (это будет удобно, так как практически не придется переделывать программу, только настроить ADOConnect правильно), но это не такая уж и маленькая база и у некоторых людей бывают проблемы с настройкой ее.
Галочка "подтверждения прочтения" - вселенское зло.
|
23 апреля 2011, 20:57: Статус вопроса изменён на решённый (изменил автор вопроса — neon)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|