Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Закрывается приложение [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 выстави.

> Что посоветуете ?
Не открывать много запросов с большими объемами данных.


Наверх

Титульная страница Поиск, карта сайта Написать письмо