powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает отключение от базы пока не закрыта форма.
25 сообщений из 99, страница 1 из 4
Не срабатывает отключение от базы пока не закрыта форма.
    #39497151
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не срабатывает отключение от базы пока не закрыта форма. Код такой, выполняется в потоке:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 begin
                           db3:=TpFIBDatabase.Create(nil);
                            trans3:= TpFIBTransaction.Create(nil);
                            query3:= TpFIBQuery.Create(nil);
                            db3.connectparams.Username:='SYSDBA';
                            db3.connectparams.Password:='masterkey';
                            db3.DatabaseName:='d:\fdbase\fb_log_database.fdb';
                            db3.DefaultUpdateTransaction:=trans3;
                            db3.LibraryName:= 'fbclient.dll';
                            trans3.DefaultDatabase:=db3;
                            query3.Database:=db3;
                            query3.Transaction:=trans3;
                            db3.connected:=True;
                                FindClose(tsr1);
                                query3.SQL.Clear;
                                query3.SQL.Add('insert into IMPORT_EXISTS_LOG (WRITE_TIME,KIND,USER_ID) values (current_timestamp,:KIND,:USER_ID)');
                                trans3.StartTransaction;
                                query3.ParamByName('KIND').Value:= Fkind;
                                query3.ParamByName('USER_ID').Value:= Fuser;
                                query3.ExecQuery();
                                trans3.Commit;
                                trans3.Free;
                                query3.Free;
                                 db3.connected:=False;
                                db3.Close;
                                  db3.Free;
                                    end;

...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497166
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497191
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

как понял, что не срабатывает? На форме тоже есть подключение?
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497193
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanGallemar,

как понял, что не срабатывает?


В mon$attachments коннекты висят, пока форму не закрою.
wadman На форме тоже есть подключение?
в том то и дело, что нету. Давай кину проектом, так проще будет.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497202
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

х.з. может, мониторинг где-то в fibplus включен, и это конфликтует с открытием и закрытием коннекта в треде. "В старину" даже коннект в треде глючил, поэтому коннект-дисконнект делался в основном потоке.
Но это все мои домыслы.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497211
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemarwadman На форме тоже есть подключение?
в том то и дело, что нету. Давай кину проектом, так проще будет.
Я у компа сегодня вряд-ли буду. Выкладывай, кто-то еще посмотрит. :-)
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497218
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497219
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvGallemar,

х.з. может, мониторинг где-то в fibplus включен, и это конфликтует с открытием и закрытием коннекта в треде.
Вряд ли, я всё прописывал в run-time, не помню ничего такого в fibplus, что могло по умолчанию быть.
kdv"В старину" даже коннект в треде глючил, поэтому коннект-дисконнект делался в основном потоке.
На фибах?
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497314
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

Попробуй фибам делать FreeAndNil вместо free
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497342
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,
С точки зрения фибов это не изменит ничего.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497343
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

А если вот так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
                  
trans3.Commit;
db3.Close;
db3.Сonnected := False;
query3.Free;
trans3.Free;
db3.Free;
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497344
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,
И ещё
Код: pascal
1.
query3.Close


сразу после коммита.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497372
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpС точки зрения фибов это не изменит ничего.
ага, а два контрольных выстрела
Код: pascal
1.
2.
db3.Close;
db3.Сonnected := False;


уж точно изменит
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497380
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокalekcvpС точки зрения фибов это не изменит ничего.
ага, а два контрольных выстрела
уж точно изменит
Заметь, я просто поменял местами строчки оригинального кода
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497406
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpGallemar,

А если вот так:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
                  
trans3.Commit;
db3.Close;
db3.Сonnected := False;
query3.Free;
trans3.Free;
db3.Free;



alekcvpЗаметь, я просто поменял местами строчки оригинального кода


5 строк кода после коммита можно переставить 120 способами. Не все из них корректные, но все же...
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497407
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schi5 строк кода после коммита можно переставить 120 способами. Не все из них корректные, но все же...
В оригинале там транзакция уничтожается раньше, чем закрывается запрос, её использующий.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497413
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpschi5 строк кода после коммита можно переставить 120 способами. Не все из них корректные, но все же...
В оригинале там транзакция уничтожается раньше, чем закрывается запрос, её использующий.

В оригинале там трэш, угар и содомия. От людей, вкладывающих exeшники и dcu в архивы проекта, я не жду ничего хорошего.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497458
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокGallemar,

Попробуй фибам делать FreeAndNil вместо free
Привет. Это я пробовал ещё до обращения на форум,не помогло.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497459
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpДокпропущено...

ага, а два контрольных выстрела
уж точно изменит
Заметь, я просто поменял местами строчки оригинального кода
Не помогло. Решил пока в качестве эксперимента переписать всё на ibx.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497515
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ыыы. интересный выстрел)
Если вас это утешит, то на FIB все закрывается корректно у меня вплоть до версии Berlin.
Единственная найденная проблема тянется еще из дремучих времен и относится к FibAlerter
Поэтому пришлось отказаться от событий. Но в целом нужно просто найти проблему и решить.
А "переписать на ibx" это выглядит как-то чрезмерно )
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497523
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar,

у тебя в потоке запускаются процессы, с которыми нет обратной связи до определенного момента. Я вижу два варианта решения проблемы:
1. можно завести какой-нибудь булев флаг и перед запуском очередного процесса в потоке проверять, нет ли команды прикончить поток(флаг взводить в OnCloseQuery формы), типа
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
procedure TMyThread.Execute
try
  if IsThreadTerm then exit;
  //запуск какого-то процесса

  if IsThreadTerm then exit;
  //запуск какого-то процесса

  if IsThreadTerm then exit;
  //запуск какого-то процесса

finally
  //всяческие FreeAndNil
end;



2. завести булев флаг, но сигнализирующий о продолжении или окончании потока, и и не давать закрываться форме (так же , в OnCloseQuery), пока поток не помрет естественной смерьтю.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497524
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinПоэтому пришлось отказаться от событий. Но в целом нужно просто найти проблему и решить.

Пока, увы, не получается.
krapotkinА "переписать на ibx" это выглядит как-то чрезмерно )
Почему? Программа простая.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497526
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДокЯ вижу два варианта решения проблемы
кстати, эти два варианта можно объединить в третий: взвести флаг потоку, что ему нужно помереть при первой возможности, но форме не давать закрыться до смерти потока.

зы. это при условии, что у тебя проблема НЕ из-за неправильной логики в коде :)
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497530
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,хм, Эдик, а у меня в потоке формы не открываются, никакие. Есть одна, на которой кнопка для ручного запуска и кнопка для запуска таймера. Всё.
...
Рейтинг: 0 / 0
Не срабатывает отключение от базы пока не закрыта форма.
    #39497531
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все таки не "пока не закрыта форма", а "пока не закрыто приложение".
И нет строки db4.free. В общем, ищи соединение, которое остается открытым в потоке.

Ну и лапшу-бы прибрать: вынести создание базы, транзакции и запроса и их уничтожение в отдельные процедуры.
...
Рейтинг: 0 / 0
25 сообщений из 99, страница 1 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Не срабатывает отключение от базы пока не закрыта форма.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]