">
FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9146
Вход

"Дела давно минувших дней, преданья старины глубокой."

Как-то я попробовал сосчитать значимость полученной информации по Фоксу из разных источников.

Крути не крути, а большинство рецептов я подсмотрел на интернете у других разработчиков, или они ответили на вопросы, которые я повесил или просто узнал что то от друзей которых знаю лично или которых и в глаза не видел.
Научиться радоваться чужим удачным решениям более своих собственных -дается не каждому. Каждую неделю кто то из коллег в фирме или из других мест с блеском в глазах и гордостью ( чувствуя себя как минимум Эйнштейном) приносит выстраданное.
А я ему говорю, 1995 год Fox Adviser, 1996 Pinter Letters и такие то такие то сайты, такие то места-все уже было и даже лучше.

Работа в торговой фирме требует каждый день каких то новых решений с поставленным сроком-вчера. Как бы ты ни был быстр, а за всем не угонишься. Единственный выход - много читать и переписываться с друзями - кто нибудь да выручит. А выручил ты его, твой же рецепт тебе самому завтра пригодится.

" Босс всегда прав, если он не прав, смотри пункт первый"

Вот простая задачка.
Босс и другие руководители хотят рассылать свои указания другим сотрудникам. Сидит торговый менеджер, набирает накладную с ужасной итоговой суммой, большей , чем все Российские программисты зарабатывают лет за пять. Клиент стоит с деньгами в руках. Нужно его отпустить и всячески удовлетворить, расцеловать и все прочее чтобы пришел еще раз. Так нет, у Русских особая гордость и свой менталитет. Глав Бух хочет немедленно этому менеджеру послать ценное указание, да так , чтобы он на него ответил, в промежутки между набором торговых строк с 5 тоннами сахара и 20 тоннами муки.
" Вставайте товарищи , с богом ура, последний парад наступает" . Или спасайся , кто может.

Или вот другая проблема совсем из другой области. Как бы мы не любили наш ФОКС, он время от времени подкинет какую то подлянку. ( по совести сказать, не делай он этого, за что бы мы зарплаты получали) То содержание индексов попортит, то таг потеряет, то его выражение поломает, то название индексов в контейнере баз данных перестанут соответсвовать им же в таблицах, то мемо поле порушится, то несколько записей в нем слепятся в одну, то вместо данных залетят прямоугольные нули, порушившие даже первичные ключи , объявленные не нулевыми. А то еще появится незадокументированная нигде ошибочная ситуация- бегущее через экран сообщение-"Record is not available".
Короче, программист должен остановить на короткое время общую работу и отремонтировать, все что можно.
По этажам и комнатам не набегаешься, пока бегаешь, станет еще хуже. Опять посылаем всем сообщение с просьбой выйти.
А отошел человек от компьютера и не видит Вашего сообщения , нужно через минуту, если он не выполнил требование, вместо пользователя закрыть все его формы и что можно и не можно сохранить.

Решение этих задач я скомпилировал из нескольких , найденных на Интернете.
К сожалению, сайты эти уже не сущесвуют, могу сообщить только авторов.-Рик Страул, Bill o 'Connor.

Что для решения нужно?
Ну перво наперво постоянно живущий таймер, объявленный в головной программе, с интервалом активизации около минуты -двух. Tm=createobject('mytimer')

В базовом классе формы устроить метод автосохранения -разгрузки.

Таблицы с сообщением пользователям , имеющим поля ключ пользователя или статус всем, определенное значение которого значит срочное прекращение работы .

При входе в программу пользователь здоровается и его ключ записывается в специальную таблицу со временем ввода, а при выходе из программы снова его ключ , время выхода и статус -вышел . Туда же можно записать и имя компьютера.

И так все работающие пользователи известны.
Таймерное событие с некоторой частотой по ключу пользователя проверяем в таблице сообщений, есть ли непрочитанное им сообщение или сообщение всем пользователям.
Если есть, выкидываем модальную форму с текстом сообщения и чекбоксом -прочитал.
По нажатии чекбокса помечаем сообщение в таблице как прочитанное.
Если пользователь не ответил на экстаординарное сообщение о полундре, то в следующем акте активизации таймера запускается процесс автовыхода.
Проходимся по коллекции _screen.forms по _screen.formcount Смотря всегда на _screen.activeform.name и запускаем методы автосохранения выхода всех висящих форм и напоследок код выхода из приложения.

С уважением ко всем, Владимир Журавлев. Boba@synapse.ru



Вернуться к списку статей






© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика