Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];
ВнизОбработка запроса к БД Найти похожие ветки
← →
Андрей (начинающий) (2009-03-04 11:55) [0]При обращении к таблице БД файл с этой таблицей может быть занят, но освобождается довольно быстро. В предоставленном коде запрос нормально срабатывает где-то от 1-й до 20-й итерации цикла. Но гложат меня сильные сомнения, что я правильно обращаюсь к БД. Подскажите, пожалуйста, что я делаю не так и как правильно обратиться к таблице сразу после ее освобождения если она в данный момент времени занята.
// ...
close;
i:=1; sql.Clear; sql.Add("...");
while (i>0) and (i<100) do
try
inc(i); open; i:=0;
except
end; // *** try..except..end
first;
while not Eof do begin
//...
next;
end; // *** while not Eof do
close;
//...
← →
Сергей М. © (2009-03-04 12:04) [1]А кто и при каких условиях захватывает таблицу в монопольное использование ?
← →
Андрей (начинающий) (2009-03-04 12:09) [2]
> Сергей М. © (04.03.09 12:04) [1]
Другой запрос на выборку данных из другой процедуры
← →
Сергей М. © (2009-03-04 12:14) [3]
> Андрей (начинающий) (04.03.09 12:09) [2]
Запрос на выборку не может быть причиной "занятия" файла таблицы.try
..
open;
..
except
on e:Exception do ShowMessage(e.ClassName + " " + e.Message);
end;
Какое дословно сообщение видишь ?
← →
Андрей (начинающий) (2009-03-04 12:47) [4]
> Сергей М. © (04.03.09 12:14) [3]
</I
> Какое дословно сообщение видишь ?
>
Дело в том, что ошибка доступа вылетает не постоянно. Сейчас вставил вывод сообщения, потестил несколько минут. Ничего не вылетело :) Для отлова нужно более длительное время. Меня интересует сам принцип - допустим ли такой код, что я привел? Мне не хочется выводить сообщение об ошибке во время работы (не отладки) программы. В крайнем случае можно вести лог ошибок, но не диалоговое окно. Скорее всего таблицу занимает операция записи другой процедурой.
← →
Сергей М. © (2009-03-04 13:09) [5]
> таблицу занимает операция записи другой процедурой
СУБД какая ?
← →
Сергей М. © (2009-03-04 13:10) [6]С чего вообще ты взял, что проблема в "занятости" файла таблицы ?
← →
Андрей (начинающий) (2009-03-04 13:54) [7]
> Сергей М. © (04.03.09 13:10) [6]
А в чем еще может быть ошибка при открытии запроса на выборку данных по таблице? БД на основе "VolgaDB".
← →
Сергей М. © (2009-03-04 14:01) [8]
> в чем еще может быть ошибка при открытии запроса на выборку
> данных по таблице?
Ты давай лови ошибку)
Если это будет именно "Table is busy", вот тогда поверю что она занята
← →
Труп Васи Доброго © (2009-03-04 14:19) [9]Первый раз слышу про эту Волгу, посмотрел краткое описание: VolgaDB Engine 5.10 - это набор компонент для работы с "плоскими" таблицами (single-user engine). Может в этом "single-user" и кроется тайна?
← →
Сергей М. © (2009-03-04 14:19) [10]
> БД на основе "VolgaDB"
"VolgaDB" - это что за зверь ?)
← →
Андрей (начинающий) (2009-03-04 15:47) [11]
> Сергей М. © (04.03.09 14:19) [10]
:)
VolgaDB Engine is a small and fast data engine for working with flat files in special Volga format (files with *.d extension) and as Volga client for MS SQL, MySQL and MS Access (Jet) databases in Delphi and C++Builder applications without using BDE. For flat files it has no multi-user or client-server support. All necessary code is included in your application (~130-140 Kb) without additional DLLs. No any registry settings! It works with Delphi 4.0, 5.0, 6.0, 7.0 and C++Builder 4.0, 5.0, 6.0. Code examples are emphasized with color.
Главное для меня - не требуют установки BDE и всяких библиотек клиенту. Скопировал сами таблицы и работай с ними. По сути, это обычные таблицы типа Paradox. Можно работать с ними напрямую или через SQL запросы.
← →
Сергей М. © (2009-03-04 16:45) [12]
> Андрей (начинающий) (04.03.09 15:47) [11]
Понятно.
Ну тогда у меня те же подозрения, что и в [9]
> Другой запрос на выборку данных из другой процедуры
Тогда что мешает по завершению этой процедуры освободить таблицу, с тем чтобы без проблем обращаться к ней в последующих вызываемых тобой процедурах ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.19;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.059 c