Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 14:56   #1
Gurt87
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 24
По умолчанию Работа с БД после нестандартного завершения программы

При закрытии формы в БД FireBird я записываю некоторые данные, то есть по событию FormClose;

А как записать эти данные если форма была закрыта не корректно, то есть событие onFormClose не сработало...Когда например диспетчером сняли задачу или как то по другому..

Заранее благодарен!
Gurt87 вне форума Ответить с цитированием
Старый 16.02.2010, 15:03   #2
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

В транзакции есть свойство автокомментирование.

Но чесно на 3 волшебные кнопки реакцию не знаю..проверьте и скажите
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 16.02.2010, 15:11   #3
Gurt87
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
В транзакции есть свойство автокомментирование.

Но чесно на 3 волшебные кнопки реакцию не знаю..проверьте и скажите
Так дело же не доходит до транзакции...так как не срабатывает FormClose

Код:
procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Data.sql.SQL.Clear;
  Data.sql.SQL.Add('UPDATE LOGIN SET STATE='OUT'');
  Data.sql.ExecSQL;
  Data.sql.Transaction.Commit;
end;
Gurt87 вне форума Ответить с цитированием
Старый 16.02.2010, 15:16   #4
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Через winapi. Вроде - RegisterWindowMessage('WM_DIE')
danekne вне форума Ответить с цитированием
Старый 16.02.2010, 15:28   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну не много не по теме, а кто мешает со стороны сервера опрашивать клиента и делать этот запрос.... Просто логики в нём не вижу. И какую роль он вообще играет.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 16.02.2010, 15:38   #6
Gurt87
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
ну не много не по теме, а кто мешает со стороны сервера опрашивать клиента и делать этот запрос.... Просто логики в нём не вижу. И какую роль он вообще играет.
Под словом "сервер" имеется ввиду FireBird SQL Server ???
Если да, то как это сделать?

Есть приложение - клиент
FireBird SQL Server - сервер

Когда запускается клиент то идет запись в БД что клиент подключен
Когда клиент закрывается то идет запись об отключении.

Делается с целью предотвратить повторный вход одного и того же пользователя..
Gurt87 вне форума Ответить с цитированием
Старый 16.02.2010, 15:55   #7
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну из выходов..опять же не по теме....
1) по моему проще запретить запуск одного приложения дважды на 1 компьютере + в базе создать пользователей паролем и раздать их пользователям....
2) завтра ещё подумаю... вечером уже голова не варит...
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 16.02.2010, 17:59   #8
Gurt87
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 24
По умолчанию

Цитата:
Сообщение от BARNEY Посмотреть сообщение
ну из выходов..опять же не по теме....
1) по моему проще запретить запуск одного приложения дважды на 1 компьютере + в базе создать пользователей паролем и раздать их пользователям....
2) завтра ещё подумаю... вечером уже голова не варит...
1) Запуск и так запрещен

Все это делается для того что бы когда на одной машине заходил пользователь (вводя пароль и логин) то на другой машине нельзя было зайти под таким же паролем и логином.
Gurt87 вне форума Ответить с цитированием
Старый 17.02.2010, 15:14   #9
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

по моему проще на сервере повесить прогрумульку , которой каждые 5 сек клиентская часть говорила что Иванов Сети.... иванова нет 30 сек...всё значит он офф...и авторизицию через неё проводить. нежели на БД свешивать.... Возможно в оракле и есть такие фишки..можно и фаербёрд покопать... но этот вариант ИМХО проще.
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как закрыть форму индикатора процесса после завершения цикла? SkAndrew Общие вопросы Delphi 11 03.02.2010 07:39
Форма нестандартного вида. Ярослав Помощь студентам 15 17.12.2009 06:55
Восстановление видеорежима после завершения программы Marsel737 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.12.2009 23:11
Определение завершения сторонней программы Хамяг Общие вопросы Delphi 3 26.11.2008 18:12
Использование метода free после завершения потока Denager Общие вопросы Delphi 4 29.08.2008 10:13