“Справи давно минулих днів, перекази старовини глибокої”, FoxPro, Бази даних, статті

Володимир Журавльов, Visual FoxPro CLUB

Якось я спробував порахувати значимість отриманої інформації з Фоксу з різних джерел.

Крути не крути, а більшість рецептів я підглянув на інтернеті у інших розробників, або вони відповіли на питання, які я повісив або просто дізнався що то від друзів яких знаю особисто або яких і в очі не бачив.
Навчитися радіти чужим вдалим рішенням більш своїх власних-дається не кожному. Щотижня хтось з колег у фірмі або з інших місць з блиском в очах і гордістю (відчуваючи себе як мінімум Ейнштейном) приносить вистраждане.
А я йому кажу, 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 і запускаємо методи автозбереження виходу всіх висять форм і наостанок код виходу з програми.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*