![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Закрывается приложение [D7, XP]
IgorMish © (2007-04-16 15:41:00)Уважаемые, подскажите. Есть приложение, заношу данные в базу (парадокс), и в один прекрасный момент при нахатии кнопки "сохранить" приложение закрывается без каких либо сообщений. Процедура заключается в записи данных из TQuery в TTable. При работе приложения в каталоге программы образуются файлы типа _QSQ1.DB и QSQ1.MB. На сколько мне известно это от SQL-запросов. Но вроде все запросы закрываю, а файлов образуется порядка 100-150. Может происходит какое-то переполнение и сброс программы из-за них. Что посоветуете ?
Спасибо.
IgorMish (2007-04-17 09:49:00) [1]СПАСИБО.
ЮЮ (2007-04-17 09:40:00) [2]Для запросов, не возвращающих набор данных. Чаще всего это INSERT, DELETE и UPDATE предложения.
Для запросов, возвращающих НД, используют метод Open (или Active := true).
IgorMish (2007-04-17 09:28:00) [3]СПАСИБО, ЮЮ. Файлы перестали появляться и приложение вроде не выскакивает.
P.S. Для общего развития: а в каких случаях нужен Query.ExecSQL ?
ЮЮ (2007-04-17 08:52:00) [4]Query.ExecSQL; Убери совсем, не для этого этот метод. Кстати может быть причиной появления неуправляемых _QSQ1.DB
первый Query.Close; лишний, т.к.
1) в конце метода он закрыт
2) Изменение SQL (Clear, Append) закроет открытый НД автоматически
IgorMish (2007-04-17 08:45:00) [5]Вот код, 4 таких запроса, только меняется услове WHERE и присваивается значение разным переменным: SB и т.д.:
Query.Close;
Query.SQL.Clear;
Query.SQL.Append('SELECT TipOb, COUNT(*) FROM ''Oborud2.db'' WHERE Raion='''+Raion.FieldByName('Raion').AsString+''' GROUP BY TipOb, Raion');
Query.ExecSQL;
Query.Active := True;
SB := Query.FieldByName('Count(*)').AsInteger;
Query.Close;
ЮЮ (2007-04-17 08:24:00) [6]> подскажите в чем может быть дело, что можно предпринять,
> в чем ошибка ???
Ошибка исключительно в твоём коде, которого мы ек видим.
> подскажите в чем может быть дело, что можно предпринять
Выполнить всё то же под IDE c включенным Stop on Delphi Exceptions
IgorMish (2007-04-17 08:04:00) [7]Никаких исключений в этой процедуре не подавляется, только Append и Post. Я нашел, что сброс программы происходит после запросов подсчета записей. Есть кнопка, по которой выполняются по два запроса для двух таблиц, все запросы закрываются (Query.Close). Я отключил все TQuery, но после 50-го нажатия на эту кнопку (данные не вносятся и не меняются, только пересчитываются) начинают появлятся вышеописанные файла (по 4) , а после 60-го нажатия программа закрывается.
ПЛИЗ , подскажите в чем может быть дело, что можно предпринять, в чем ошибка ???
ЮЮ (2007-04-17 06:07:00) [8]>и в один прекрасный момент при нахатии кнопки "сохранить" приложение закрывается без каких либо сообщений.
Вот что значит бездумно подавлять исключения.
Desdechado (2007-04-16 16:10:00) [9]> но после каждого запроса прибавляются по 5-6 новых файлов а старые не пропадают
1 запрос - 1 файл (или 2, если с индексом).
> Может что-то не так закрываю?
Ctrl-F2 забудь.
IgorMish (2007-04-16 16:01:00) [10]>А ты у Session.PrivateDir выстави.
Это где такое ? Можно поподробнее.
А запросов много вроде и не должно быть, выполняется запрос подсчета данных, после запроса пишу Query.Close, но после каждого запроса прибавляются по 5-6 новых файлов, а старые не пропадают. Может что-то нетак закрываю?
Desdechado (2007-04-16 15:51:00) [11]> приложение закрывается без каких либо сообщений
Исключительные ситуации подавляешь, имхо.
> в каталоге программы образуются файлы типа _QSQ1.DB
А ты у Session.PrivateDir выстави.
> Что посоветуете ?
Не открывать много запросов с большими объемами данных.