Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

Поймать того кто неправильно выходит из программы :-))   Найти похожие ветки 

 
Evyshka   (2003-01-27 09:48) [0]

Здраствуйте! Подскажите как сделать так что бы проследить кто неправильно выходит из программы
Проблема в том чтоиспользуются БД Paradox, 12 пользователей и куча индексов ;-)) При выключение ПК без закрытия программы летят индексы Может кто нибудь встрачался с данной проблемой ?


 
ZeroDivide   (2003-01-27 10:04) [1]

Элементарно: Пусть ваша прога, при ее загрузке, куда-то(реестр, файл) пишет флаг того, что юзер загрузил прогу. И при выходе пишет флаг что вышел. Юзер грузит прогу, прога смотрит "ага гад, флаг то что ты вышел не установлен. Штраф тебе 1000$. Беги к админам запускаться не буду".


 
Evyshka   (2003-01-27 10:11) [2]

Большое спасибо так и сделаю :-))
Если программа долго выходит то так получится?


 
Anatoly Podgoretsky   (2003-01-27 10:24) [3]

И будешь бегать постоянно к пользователю.
Бороться надо в первуб очередь с порчей индексов.


 
sniknik   (2003-01-27 10:54) [4]

Еще решение, очень простое!

Береш компонент TNMUDP с закладки FastNet ложиш на главную форму, все, проблема решена. Никто не сможет перегрузится/выключить компьютер предварительно не выйдя из вашей программы. (не считая кнопочек на корпусе или отключения питания, рассматриваем нормальное завершение какое у юзеров должно быть отработано до рефлексов :-)).

Но гораздо лутше конечно по оповещению системы WM_QUERYENDSESSION закрыть таблицы и нормально завершится, и никому никуда бегать не придется. :-)



 
Anatoly Podgoretsky   (2003-01-27 11:07) [5]

Ты знаешь как в этом случае выходят, если программа не позволяет?


 
sniknik   (2003-01-27 11:15) [6]

Догадываюсь :о)) и догадки подтверждабтся практикой, поэтому и считаю второе решение гораздо лутшим.


 
Evyshka   (2003-01-27 14:49) [7]

Но гораздо лутше конечно по оповещению системы WM_QUERYENDSESSION закрыть таблицы и нормально завершится, и никому никуда бегать не придется. :-)
Это как По подробнее Очень нужно:-))


 
sniknik   (2003-01-27 15:06) [8]

в главной форме определяеш
procedure OnCloseSession(var Mess: TMessage); message WM_QUERYENDSESSION;
возможно понадобится и
procedure OnEndSession(var Mess: TMessage); message WM_ENDSESSION;

в описании процедур
procedure TMainForm.OnCloseSession(var Mess: TMessage); //WM_QUERYENDSESSION
begin
try
inherited;
//сдесь действия по закрытию таблиц
Mess.Result:= 1;
except
end;
end;

подробнее посмотри хелп в дельфях, (курсор на WM_QUERYENDSESSION + Ctrl+F1)


 
MsGuns   (2003-01-27 15:13) [9]

sniknik © (27.01.03 15:06)

И от "RESET" помогает ? ;))


 
sniknik   (2003-01-27 15:18) [10]

MsGuns © (27.01.03 15:13)
ага ты еще про выключение рубильника вспомни. :о))

нет конечно. только штатные выключения прописанные регламентом виндовс.


 
sniknik   (2003-01-27 15:20) [11]

вот от чего точно помогает
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1040751450&n=2


 
MsGuns   (2003-01-27 15:32) [12]

Вопрос не в том, чтобы "реагировать" на каждый нерегламентированный аборт проги (это в принципе невозможно), а в том, чтобы отделить ядра от скорлупы, т.е. челов, которые УМЫШЛЕННО или ПО ЛЕНИ не выполняют все необходимые действия по закрытию программы, от ситуаций, когда вылетыпроисходят не по вине человека (отключение питания, сбой в компьютере, повреждение БД и т.д.) За 10 лет работы с сетевыми Парадокс-приложениями ничего лучше СПЕЦИАЛЬНОЙ ТАБЛИЦЫ СОСТОЯНИЙ, доступной только администратору БД и расположенной на ФАЙЛ-СЕРВЕРЕ, не видел. Эту систему когда-то подсмотрели мои коллеги по фирме у разработчиков "Галактики". Система не очень трудоемкая, зато достаточно надежна и эффективна. Главная ее задача - определение "пропавших" юзеров и фиксация логинов-логаутов КАЖДОГО узера. Мы разработали подобную для одного крупного заказчика (больше 20 станций),- через пару месяцев ее работы "абортов" стало на два порядка меньше,- администрация конторы быстренько разобралась с ленивыми и вредителями.


 
Anatoly Podgoretsky   (2003-01-27 15:44) [13]

Административный метод, самый действенный.


 
sniknik   (2003-01-27 15:59) [14]

Задачи разные, у меня главное "сидеть и не отсвечивать", в идеале чтобы юзер про меня вообще не знал но данные передавались лог велся и .т.д.
И потом не вижу ничего криминального в перезагрузке без завершения всех программ, все так делают.

Можно конечно и юзеров попинать, но есть и другие поводы, более понятные для них (ну почему ворд предлагает сохранится при перезагрузке а вот ваша прога это не отслеживает?).

ладно хватит, а то это уже на флейм похоже. (и все одно никто никого не убедит ;о))


 
Ag2002   (2003-01-27 16:32) [15]

Нужно просто при старте проги пересоздавать индексы и всё подобных ошибок не будет никогда !!!


 
sniknik   (2003-01-27 16:41) [16]

Ag2002 (27.01.03 16:32)
будут стопудово, если таблици парадокс переваливают через какую то границу по размеру, то и сами таблици рушатся аварийном завершении.

а самое главное потерянные данные обеспечены при таком подходе.


 
MsGuns   (2003-01-27 16:49) [17]

>sniknik © (27.01.03 16:41)
>а самое главное потерянные данные обеспечены при таком подходе

Самое главное при таком подходе - это то, что все юзера смогут входить в проги только "дружною толпою" и после полчаса-часа переиндексаций. Классная будет прога !!!!


 
Alexander_K   (2003-01-27 16:57) [18]

А я согласен с
ZeroDivide © (27.01.03 10:04)
только у меня один знакомый сделал так:
он тоже делает флаги и их проверяет, но при обнаружении неправильного выхода, на экране показывается форма (если принтер включен, то и печатается) следующего содержания:
На имя директора, служебная записка
Я такой-то (такая-то)систематически нарушаю указания отдела автоматизации, что приводит к порче базы данных и т.д. И всвязи с этим прошу наказать меня по всей строгости!

Народ, знаете, это такой действенный метод!!!!


 
sniknik   (2003-01-27 16:58) [19]

MsGuns © (27.01.03 16:49)
кстати таки да, не учел. :о( а ведь в 1С -ке это уже достало. Более важный аргумент.


 
Sergey13   (2003-01-28 09:24) [20]

2Evyshka © (27.01.03 09:48)
ИМХО, тебе пора думать о переходе на нормальный SQL сервер. ИБ например. 12 пользователей - это более чем достаточный повод. Иначе как не извращайся - все равно это будет латанием дыр.

2MsGuns © (27.01.03 15:32)
>Мы разработали подобную для одного крупного заказчика (больше 20 станций),- через пару месяцев ее работы "абортов" стало на два порядка меньше
И вы это далали с нуля на Парадоксе? Я балдю от такого абортария.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.009 c
3-38113
Behemoth
2003-01-28 11:45
2003.02.13
Как получить список всех псевдонимов (Aliase) на моей машине?


1-38273
jiura
2003-02-05 16:26
2003.02.13
НЕ Понимаю!


3-38127
PavelOKES
2003-01-28 13:13
2003.02.13
Как быстро создать таблицу?


3-38097
Filat
2003-01-25 17:41
2003.02.13
Как перегнать данные из MS SQL в MySQL?


1-38275
First_May
2003-02-05 10:17
2003.02.13
ICQ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский