Методичні вказівки до практичної роботи №2, Журнал операцій, Синхронізація роботи двох форм
« Назад Робочий день бухгалтерських працівників складається з двох частин: - операційний час для роботи з клієнтами; - завершення обробки облікової інформації, перевірка регістрів аналітичного та синтетичного обліку, складення щоденного балансу. Початок і закінчення робочого і операційного дня визначається керівником комерційного банку. Протягом робочого дня з клієнтами працюють, лише, відділи з обслуговування ощадних вкладів. Обліково-операційна робота організовується відповідно із наступними вимогами: - усі операції з документами, які надійшли впродовж операційного часу (у тому числі і із філій), відображаються в бухгалтерському обліку того ж дня. Документи, що надійшли після закінчення операційного часу, як правило, проводяться за рахунками клієнтів у наступний день, що має бути передбачено в угодах на обслуговування клієнтів; - прийом і контроль документів, обслуговування клієнтів, введення інформації в персональний комп'ютер, а також перевірка вихідних регістрів, формування архівних папок документів здійснюється протягом робочого дня безпосередньо відповідальними виконавцями; - клієнт, виходячи із своїх технічних можливостей, може подавати до банку розрахункові документи як у паперовій формі, так і у вигляді електронних розрахункових документів (електронних платежів). Спосіб подання документів до банку регламентується угодою розрахунково-касового обслуговування; - прийом розрахунково-платіжних документів від клієнтів, розрахункові та касові операції за рахунками юридичних та фізичних осіб здійснюються безпосередньо відповідальним виконавцем. У позаопераційний час документи можна здавати в банк безпосередньо відповідальному виконавцю, або через спеціальні пристрої (скриньки), звідки їх вибирають щогодини. Якщо документи з будь-якої причини не можуть бути прийняті до виконання, клієнта негайно про це повідомляють. Оплата всіх розрахунково-грошових документів з поточних рахунків клієнтів здійснюється, лише, в межах наявних коштів; - документи, підготовлені для передачі системою електронних платежів, формуються у порядку їх надходження. Суми, зазначені на розрахунково-грошових документах, набираються у рядках розрахунку. Видані операторами електронного зв'язку вихідні форми звіряє відповідальний виконавець, а також працівник, який формує документи дня. Передача інформації з документів системою електронних платежів здійснюється поступово протягом усього операційного дня і повинна, як правило, завершуватись за дві-три години до кінця робочого дня. З метою раціональної організації обліково-операційної роботи в установах банку складається графік документообігу за банківськими операціями і графік обслуговування клієнтів." Більш детально див. підручник "Облік та аудит у комерційних банках" за редакцією проф. А.М.Герасимовича, глава 3, параграф 3.1. 2.1. Форма Журнал ОпераційФорма побудована на основі приєднаної таблиці Клієнти, до якої внесені головні поля таблиці і, користуючись якими операційний співробітник має всі необхідні дані для роботи з клієнтом. З метою прискореного пошуку необхідного клієнта, у формі передбачено поле со списком Визначить клієнта >>, за допомогою якого повністю відкривається список клієнтів банку, що дає можливість вибрати клієнта або за назвою юридичної особи, або за номером його поточного рахунку. Далі, управління передається до головної форми, де зазначаються необхідні реквізити обраного клієнта і баланс за його поточним рахунком. Головна форма (рис.2.1) має подчиненную форму Операції,побудовану на основі даних таблиці ЖурналОперацій. Таблиця ЖурналОперацій, в свою чергу, побудована відповідно записам бланка ПлатіжнеДоручення.Таким чином, ЖурналОперацій цілком відповідає діючим директивним документам Національного банку України. Єдиним доповненням таблиці є поле П, яке внесено як допоміжне для подальшого використання у бухгалтерських проводках. Поле П не заповнюється операційним співробітником і тому не виводиться на екран підпорядкованої форми, що не створює ніяких ускладнень у роботі з клієнтом.
Рис. 2.1 - Форма Журнал Операцій З метою удосконалення роботи операційного співробітника передбачено заповнення подчиненной формы Операції. Заповнення форми відбувається підчас оформлення операційним співробітником стандартного бланку розрахункового документа, наданого клієнтом. У формі установлено кнопки з відповідними написами, натиск яких приводить в дію необхідні форми розрахункових документів клієнта. Як було зазначено вище, всі форми цілком відповідають чинним документам Національного банку України. Перехід до наступного запису, або іншої форми приводить до оновлення підпорядкованої форми, а даний запис заноситься в таблицю ЖурналОперацій. Виконання змін у формах розрахункових документів, вимогах, або окремому записі приводить, лише до редагування основних форм розрахункових документів, на що витрачається небагато часу і, що не матиме негативних наслідків. Щоб позбутися необхідності здійснення розрахунків підчас роботи з клієнтом, у формі передбачено декілька полів обчислень, які забезпечують: - розрахунок кредитової суми за поточним рахунком клієнта на початок робочого дня (поле Залишок на початок дня); - розрахунок повної дебітової суми за розрахунковими документами клієнта (поле Разом); - розрахунок кредитової суми за поточним рахунком (поле Залишок) на кінець дня і врахування кредитової суми (якщо вона є) за поточними розрахунковими документами клієнта; - розрахунок за овердрафтом (поле по овердрафту). Програма забезпечує захист від можливих помилок, здійснених операційним співробітником. Наприклад, якщо при введенні записів за розрахунковими документами клієнта, загальна сума за операціями (поле Загалом) вийшла меншою порівняно із сумою за поточним розрахунковим документом, тоді цей та всі наступні можливі записи блокуються програмою. 2.2. Створення макроса1. Відкрийте форму ЖурналОперацій в режимі Конструктора (Design View). 2. Переконайтесь, що режим Майстра (Control Wizards) активний, відберіть на панелі елементів (Toolbox)управляючий елемент Кнопка (Command Button). Перемістіть її в Область примечаний (Form Fooler) поруч із кнопкою Платіжне. 3. У першому діалоговому вікні (рис.2.2) Создание кнопок укажіть: - у полі Категории: Работа с формой; -у полі Действия: Открытие формы. Натисніть на кнопку o Далее (Next). Рис. 2.2 - Перше діалогове вікно Создание кнопок 4. У другому діалоговому вікні (рис.2.3) виберіть із запропонованого списку форму ПлатіжнеДоручення і натисніть кнопку o Далее (Next). Рис. 2.3 - Друге діалогове вікно Создание кнопок 5. У третьому діалоговому вікні установіть перемикач на опцію Открыть форму и показать все записи і натисніть кнопку o Далее (Next). 6. У останньому діалоговому вікні установіть опцію Текст, надрукуйте назву кнопки ПлатіжнеДоручення і натисніть кнопку o Готово (Finish). Відтепер, натиск кнопки ПлатіжнеДоручення буде відкривати відповідну форму, стан якої визначається новим записом таблиці ЖурналОперацій. 1. Відкрийте властивості кнопки ПлатіжнеДоручення і у рядку Нажатие кнопки (On Click)спочатку видаліть Процедуру обработки событий (Event Procedure),а потім натиском кнопки з трьома крапками відкрийте (рис.2.4) Конструктор макросов (Macro Builder). Рис. 2.4 - Діалогове вікно Построитель 2. Послідовно, переставляючи курсор з рядка на рядок поля(рис.2.5) Макрокоманда (Action), запишіть три макрокоманди, вибираючи їх в “падаючому” списку. Список відкривається кнопкою із стрілкою. Рис. 2.5 - Вікно Конструктор макросов Макрокоманда АргументиОткрытьФорму Имя форми: ПлатіжнеДоручення Режим: Форма НаЗапись Тип объекта: Форма Имя объекта: ПлатіжнеДоручення Запись: Новая ОстановитьМакросНа рисунку показаний повний макрос, необхідний для забезпечення первинного стану форми при її відкриванні. 3. Закрийте макрос і у діалоговому вікні(рис.2.6) Сохранение(Save) назвіть макрос ім'ям ПлатіжнеДоручення. Рис. 2.6 - Діалогове вікно Сохранение 4. Перейдіть в режим Форми (Form View) і перевірте роботу форми. 5. Закрийте форму, зберігаючи зміни. 2.3. Синхронізація роботи двох формГоловна форма у нашому випадку - це форма ЖурналОперацій. Перед нами стоїть завдання - синхронізувати роботу нашої головної форми з роботою форми ПлатіжнеДоручення, призначення якої - лише введення інформації. Не обов'язково для кожної підпорядкованої, чи вільної форми створювати запит. Джерелом даних для них може стати SQL-вираз. Вираз записуєтьсяу рядку властивостей форми Источник записей(Record Source) за допомогою Конструктора запросов (Query Builder), при чому, кількість запитів у базі даних значно зменшується. 1. Відкрийте форму ПлатіжнеДоручення в режимі Конструктора (Design View) і, натиском правої кнопки миші на заголовку форми (чи натиском на системну кнопку), відкрийте її властивості. 2. У рядку Источник записей(Record Source) натисніть на кнопку із стрілкою. У відкритому списку таблиць і запитів відберіть таблицю ЖурналОперацій (рис.2.7). Рис. 2.7 - Свойства форми Платіжне Доручення Для синхронізації роботи двох форм можна установити такі самі умови, як і у конструкторі запитів, яким ми користувались при визначенні джерела рядків форми ПлатіжнеДоручення.Наприклад, якщо ми зазначимо в умовах відбору (під полем запиту КодКлиента) вираз =Forms![ЖурналОперацій]![КодКлієнта],то тим самим, зв'яжемо і синх-ронізуємо роботу обох форм. Це пояснюється тим що у формі Платіжне-Доручення, при відкриванні, автоматично установлюється значення коду із поточного стану поля КодКлієнта форми ЖурналОперацій. Проте, це обмежує застосування форми ПлатіжнеДоручення, тобто застосовувати її можна тільки разом із формою ЖурналОперацій.Тому, для забезпечення універсальності форми ПлатіжнеДоручення ми підемо іншим шляхом. 3. Послідовно, відкриваючи властивості управляючих елементів форми ПлатіжнеДоручення (рис.2.8., рис.2.9), запишіть у рядках Значение по умолчанию(Default Value) слідуюче: - у полі Дата - поточну дату: Date(); - у полі КодКлієнта: =Forms![ЖурналОперацій]![КодКлієнта]; - у полі Рах№Платника: =Forms![ЖурналОперацій]![БалансовийРахунок]; - у полі Рах№БанкуПлатника укажіть рахунок нашого банку: 420056; - у полі Підпис банку: =Forms![ЖурналОперацій]![Співробітник]. ПОРАДА. Для введення посилань до полів форм користуйтесь Построителем выражений (Build). Рис. 2.8 - Свойства поля Код Клієнта Рис. 2.9 - Свойства поля Рах № Дебет 4. Для забезпечення автоматичного введення назви розрахункового документа і упередження можливих помилок відкрийте властивості управляючого елемента НазваДокумента і у рядках надрукуйте: - Значение по умолчанию: 1 (код документа Платіжне доручення); - Вывод на экран: виділіть опцію: Нет. 5. Закрийте форму, зберігаючи зміни. 2.4. "Витягування" поля з іншої форми1. Відкрийте форму ЖурналОперацій в режимі Формы (Form View).Використовуючи дані поля со списком Операціоніст, введіть своє прізвище в якості операційного співробітника банку. 2. У поле со списком Визначить клієнта>> виберіть фірму ТОВ “Форум”. 3. Натисніть на кнопку ПлатіжнеДоручення. Формавідкриється на новому записі. У відповідних полях форми установіть: - у полі Проведено банком - поточну дату в довгому форматі дати; - у полі КодКлієнта - код, відповідно із КодомКлієнта головної форми; - у полі КодБанка - код нашого банку; - у полі Підпис банку - Ваш код за списком. 4. Введіть дані у форму на підставі такого запису: Від ТОВ «Форум» вчора надійшло платіжне доручення №84 на суму 43000 грош.од. за перерахунком з його розрахункового рахунку на розрахунковий рахунок заводу “Світоч” (розрахунковий рахунок №2600021) у тому ж банку за ремонт техніки. Ви відразу зауважите два істотних недоліки роботи такої форми: - по-перше, ми вводимо суму за дебетом розрахункового рахунку, що перевищує залишок на поточному рахунку; - по-друге, навіть після переходу до наступного запису підпорядкована форма не оновлюється і, звичайно, не виконуються обчислення у головній. Тому: 1. Перейдіть в режим Конструктора (Design View) форм, виділіть поле сума і відкрийте його Свойства (Properties); 2. У рядку Условие на значение (Validation Rule) запишіть такий вираз: <=Forms![ЖурналОперацій]![Поле14] (рис.2.10) (саме в Поле14 обчислюється залишок на поточному рахунку), а в рядку Сообщение об ошибке надрукуйте: На рахунку не залишилося коштів!. Рис. 2.10 - Запис Условия на значение Для того, щоб зазначене числове значення враховувалось у реальному часі (при його введенні в поле Сума форми ПлатіжнеДоручення), у головній формі, підчас обчислення на рахунку залишку (поле Залишок), необхідно оновлювати підпорядковану форму. Таке можливо, але призводить до нагромадження. Тому ми з Вами реалізуємо цю задачу іншим методом, як-то методом "витягування" значення: 1. Відсуньте область примечаний (Form Footer) форми ПлатіжнеДоруче-ння на розмір вільного елемента і із панели элементов(Toolbox) установітьв одну лінійку, два вільних елемента; 2. У першому вільному елементі запишіть вираз: =[Forms]! [ЖурналОперацій]![подчиненная форма Операції]![Поле??] +[Сума]; Тим самим, ми витягли значення поля ?? (=Sum([Дебет]))із подчиненной формы Операції і додали до його поточного значення суму із поля Сума форми ПлатіжнеДоручення. 3. У властивостях першого елемента запишіть: - у рядку Имя: Загалом; - у рядку Формат: # ##0,00” грн.”; -# ##0,00” грн.”. Поміняйте Надпись елемента на: Загалом; 4. У другому вільному елементі запишіть наступний вираз: =[Forms]![ЖурналОперацій]![Рахунки]![Залишок]-[Загалом]; 5. У властивостях даного елемента укажіть Имя(Name): Залишок (рис.2.11) і установіть грошовий формат аналогічний першому елементу. Поміняйте Надпись елемента на: Залишок; Рис. 2.11 - Запис формули суми Залишку 6. Закрийте форму, зберігаючи зміни. 2.5. Удосконалення форми1. Відкрийте форму ПлатіжнеДоручення в режимі Формы і у полі Сума введіть значення більше ніж значення поля Залишок.Програма виведе на екран повідомлення про помилку і Ваші спроби перейти до іншого запису, або закрити форму будуть марними(рис.2.12). Рис. 2.12 - Вікно повідомлення 2. Зменшіть суму на порядок і в полях Загалом і Залишок перегляньте результати обчислення, тобто наслідок зміни значення поля Сума. Поряд з тим, значення поля Залишок у формі ЖурналОперацій, остається незмінним. У цьому немає нічого особливого, так як форма автоматично не оновлюється і, лише, натиск клавіші <F9> може примусити її це зробити. Для того, щоб у головній формі, обчислення відображались автоматично, її необхідно оновити, тобто закрити і знову відкрити. Але у роботі операціоніста це не має значення, оскільки результати обчислень знаходяться у формі ПлатіжнеДоручення,з якою він працює в даний час. Отже, ми з Вами організували умови введення даних і забезпечили захист від можливих помилок операціоніста, але це не означає, що ми виконали усе. В майбутньому необхідно виконувати роботу так, щоб, принаймі, у Вас не було відчуття незавершеності. 1. Відкрийте форму ПлатіжнеДоручення в режимі Конструктора(Desiqn View) і відсуньте область примечаний формы(Form Footer),забезпечуючи простірдля розташування кількох кнопок. 2. Установіть під Майстром(Control Wizards) із панели элементов(Toolbox)три кнопки в один рядок (рис.2.13). Рис. 2.13 - Службові кнопки управління записами форми 3. Для першої кнопки у діалогових вікнах Создание кнопок: - у першому, укажіть у полі Категории: Переходы по записям, а у полі Действия виберіть:Следующая запись; - у другому, установіть опцію Рисунок і виберіть у списку Следуюшая запись 2; -назвіть кнопку ім'ямПерейти і натисніть кнопкуo Готово (Finish). 4. Для другої кнопки у діалогових вікнах Создание кнопок: - у першому, укажіть у вікні Категории: Обработка записей, а у вікні Действия виберіть:Восстановление записи; -у другому, установіть опцію Рисунок і виберіть у спискуОтмена; -назвіть кнопку ім'ям Відновити і натисніть кнопку o Готово (Finish). 5. Для третьої кнопки у діалогових вікнах Создание кнопок: - у першому, укажіть у полі Категории: Обработка записей, а в полі Действия виберіть: Сохранение записи; - у другому, установіть опцію Рисунок і виберіть у списку Сохранение записи; -назвіть кнопку ім'ям Зберегти і натисніть кнопку o Готово (Finish). 6. Перейдіть в режим Форми (Form View) і перевірте їх роботу. Нарешті, ми вивільнили операціоніста від додаткових звернень до віддалених кнопок і зайвих турбот по виправленню можливих помилок введення. 7. Закрийте форму, зберігаючи зміни. 2.6. Призначення макросів на управляючі елементи формиТак само, як і у першій роботі упорядкуємо об'єкти нашої бази даних. 1. Відкрийте форму ПлатіжнеДоручення в режимі Конструктора(Design View). 2. Послідовно, відкриваючи властивості управляючих елементів форми, призначіть макроси із макрогрупи ЖурналОперацій (рис.2.14) у відповідних рядках властивостей: - для кнопки Перейти,у рядку Нажатие кнопки(On Click),замість Процедуры обработки событий,виберіть із списку і призначіть на цей рядок макрос ЖурналОперацій.Перейти; - для кнопки Відновити,у рядку Нажатие кнопки(On Click), замість Процедуры обработки событий,виберіть із списку і призначіть на цей рядок макрос ЖурналОперацій.Відновити; - для кнопки Зберегти,у рядку Нажатие кнопки(On Click), замість Процедуры обработки событий,виберіть із списку і призначіть на цей рядок макрос ЖурналОперацій.Зберегти. 3. Закрийте, зберігаючи зміни, форму ПлатіжнеДоручення. 4. Відкрийте форму ЖурналОперацій в режимі Конструктора (Design View). 5. Натиском правої клавіші миші на кнопці Платіжне відкрийте її властивості і у рядкуНажатие кнопки (On Click) виділіть Процедуры обработки событий, а потім, вибором із списку, призначіть на цей рядок макрос ЖурналОперацій.Відкрити (рис.2.15). Рис. 2.15 - Свойства кнопки Платіжне Доручення 6. Закрийте, зберігаючи зміни, форму ЖурналОперацій. 7. Відкрийте вкладку Макроси (Macro)і видаліть макрос ПлатіжнеДоручення. 2.7. РесинхронізаціяСинхронізацію двох незалежних форм можна вважати повною тоді, коли при переході основної форми від запису до запису, відповідно, переключається “залежна” і, аналогічно, зміни в “залежній” формі повинні враховуватись в елементах управління і обчислення основної, тобто здійснюється ресинхроні-зація двох форм. На даний час основну форму ЖурналОперацій і “залежну” форму ПлатіжнеДоручення не можна вважати повністю синхронізованими, оскільки при введенні запису до форми ПлатіжнеДоручення в управляючих елементах основної форми (подчиненная форма Операції, Разом і Загалом) не відбувається ніяких змін. Так само, перехід до іншого запису основної форми, як за допомогою навігаційних кнопок, так і за допомогою поля со списком Визначить клієнта >> не приводить до змін “залежної”. Вам надається можливість перевірити це самостійно (рис.2.16). Рис. 2.16 - Синхронізовані форми Журнал Операцій та Платіжне Доручення 1. Натисніть клавішу на вкладці Макроси(Macro), помістіть курсор на макрогрупу ЖурналОперацій і відкрийте його в режимі Конструктора (рис.2.17). Рис. 2.17 - Доповнення макрогрупи Журнал Операцій 2. Доповніть макрос Зберегти макрокомандами: Макрокоманда Аргументи НаЗапись Тип объекта: Форма Имя объекта: ЖурналОперацій Запись: Предыдущая НаЗапись Тип объекта: Форма Имя объекта: ЖурналОперацій Запись: Следующая 3. Пропустіть один рядок і запишіть ім'я нового макроса Доручення, а в стовпчикуМакрокоманда (Action) виберіть із списку макрокоманду Макрокоманда Аргументи НаЗапись Тип объекта: Форма Имя объекта: ПлатіжнеДоручення Запись: Новая 4. Закрийте, зберігаючи зміни, Конструктор макросів (Query Builder). 5. Відкрийте форму ПлатіжнеДоручення в режимі Конструктора (Design View), помістіть курсор на заголовок форми і натиском правої клавіші миші відкрийте властивості форми. 6. У рядку Открытие (Open),натиском кнопки із стрілкою, виведіть список макросів і установіть макрос ЖурналОперацій.Доручення. 7. Закрийте вікно властивостей і саму форму, зберігаючи зміни. 8. Відкрийте форму ЖурналОперацій в режимі Формы (Form View) і перевірте спільну роботу форм ЖурналОперацій і ПлатіжнеДоручення: -введіть довільний запис у форму ПлатіжнеДоручення і натисніть на кнопку Зберегти; - перейдіть у форму ЖурналОперацій,не закриваючи форму Платіжне Доручення, у поле со списком Визначить клієнта >> виберіть будь-якого іншого клієнта; - перемістіть курсор у форму ПлатіжнеДоручення і активізуйте її. 9. Закрийте обидві форми. 2.8. ПідсумкиДосить часто у базах даних необхідно синхронізувати роботу двох і більше форм в одному вікні. Практична робота №2 присвячена питанням синхронізації роботи двох вільних форм. Вільні форми - це форми не зв'язані відношенням "основна/підпорядкована". 1. Необхідна і єдина умова для синхронізації роботи двох, або більше вільних форм полягає у тому, що їх початкові таблиці повинні бути зв'язані між собою відношенням "один-ко-многим". 2. Як правило, синхронізація форм, не зв'язаних відношеннями "основна/підпорядкована", здійснюється з використанням властивостей: - “Источник записей” (“Данные”); - “Значение по умолчанию”; - “Условие на значение”. У будь-якому разі в одній із форм, далі будемо називати її "залежною", зазначують у відповідному рядку властивостей повну адресу поля основної форми, що і є джерелом даних, наприклад: =Forms![ОпераціїКлієнтів]![КодКлієнта]. Але синхронізація роботи даних форм здійснюється, лише, в межах поточного запису, тобто перехід до іншого запису основної форми не приводить до зміни стану відкритої "залежної" форми. Так само перехід "залежної" форми до іншого запису не відображається у основній відразу, тобто у її елементі управління "підпорядкована форма" і у полях, що обчисляюються змін не відбувається. Примусове відновлення екранного стану здійснюється за допомогою функціональної клавіші <F9>. Для автоматичного відновлення основної і "залежної" форм застосовують примусову ресинхронізацію. При автоматичній ресинхронізації використовують макрокоманди, які приходять в дію з настанням деяких однозначних подій,а саме: - для основної форми цією подією може бути момент зберігання запису в "залежній" формі, тобто натиск кнопки Зберегти; - для "залежної" форми такою подією може бути отримання фокусу, власне формою, тобто перехід основної форми до іншого запису відновлення "залежної" відбудеться, тільки тоді, коли вона отримає фокус. Відкриємо властивості форми ПлатіжнеДоручення і у рядку властивостей Вмикання,визиваючи построитель макросов,запишемо макрос Доручення.Макрос має, лише, одну макрокоманду НаЗапись із аргументами, а саме Тип об'єкта - Форма,Ім'я об'єкта - ПлатіжнеДоручення,Запис - Нова.Таким чином, “залежна” форма ПлатіжнеДоручення отримує фокус, чим ми примушуємо її перейти до нового запису, а поля набувають значення, які установлені в однойменних полях основної форми. Залишилась невирішеною одна проблема. Підчас "пересмикування" основної форми ми можемо потрапити в ситуацію, коли попереднім стане перший запис, а програма буде ініціювати системну помилку, що поставить операційного співробітника в складне становище. Вихід із ситуації дуже простий - першим записом у таблиці Клієнти робимо запис фіктивного клієнта,а для того, щоб і програма, і користувач не мали альтернативних варіантів - КодуКлієнта першого записуприсвоїмо значення ААААА! 2.9. Семінар №2 Синхронізація роботи двох вільних формСинхронізація роботи двох, або більше вільних форм/звітів в одному вікні може бути здійснена, лише, для об'єктів, які, у якості джерела даних, мають таблиці, зв'язані відношеннями "один-ко-многим". Як правило, синхронізація форм, не зв'язаних відношеннями «головна/підпорядкована», виконується з використанням властивостей: - “Источник записей” (“Данные”); - “Значение по умолчанию”; - “Условие на значение”. У будь-якому разі, в одній із форм, далі будемо називати її "залежною", у відповідному рядку властивостей форми, зазначують повну адресу поля головної форми, що, саме, і є джерелом даних, наприклад: =Forms! [ЖурналОперацій]![КодКлієнта] (рис.2.18). Рис. 2.18 - Встановлення Значения по умолчанию Для того щоб призначити джерело даних для полів “залежної” форми таким способом, її відкривають у вікні, де активізована головна форма і до відповідних полів вводять саме ті значення головної форми, які установлені зараз, тобто значення поточного запису головної форми переносять до поточного запису “залежної”, тим самим, забезпечують безпомилкове введення даних. У даному випадку, у формі ПлатіжнеДоручення записуються всі реквізити клієнта, на записі якого відкрита форма ЖурналОперацій. При відкриванні форми ПлатіжнеДоручення, незалежно від форми ЖурналОперацій, у синхронізованих з головною формою полях з'являється значення “#Имя”, що є діагностикою установленої умови рядка властивостей “Значення за умовчанням” відповідного поля і, що, не заважає вводити до них дані. Отже, таким чином, ми забезпечили застосування даної форми, як у співпраці із головною, так і у разі її самостійного використання. Ресинхронізація роботи двох формПереключення будь-якої із двох синхронізованих форм в одному вікні не викликає змін іншої, приміром, перемикаючи форму ПлатіжнеДоручення на новий запис, Ви не оновите значення полів обчислення Разом і Загалом форми ЖурналОперацій, тобто, за дебетом не буде відображатись зміна суми, яка записана в “залежній” формі (рис.2.19). Рис. 2.19 - Синхронізація роботи двох форм Так само, перемикання форми ЖурналОперацій на запис будь-якого іншого клієнта, не викликає змін у зв'язаних полях реквізитів клієнта форми ПлатіжнеДоручення, навіть у тому випадку, коли Ви перемкнули її на новий запис. У цьому немає нічого надзвичайного, або незвичного! Тоді, коли Ви перемикаєте форму ПлатіжнеДоручення на новий запис, відбувається її оновлення, а введений до неї запис потрапляє у таблицю ЖурналОперацій жорсткого диску, але, поряд з тим, форма ЖурналОперацій залишається у незмінному стані, так як дісплейний файл не оновлюється. Так само, перемикання форми ЖурналОперацій на будь-який інший запис, при виборі клієнта за допомогою поля со списком Визначить клієнта >>, також не приведе до оновлення форми. У даному разі механізм Access20000 передбачає примусове оновлення дісплейних файлів за допомогою функціональної клавіші <F9>, і тільки. Ми не можемо розраховувати на те, що операційний співробітник не припустить помилку і не забуде натиснути клавішу <F9>, але, разом з тим, ми не маємо права примушувати його це пам'ятати. І все ж, які події можуть примусити оновити неактивну форму? 1. Функціональна клавіша <F9>, але функціональні клавіші недоступні для макропрограмування. 2. Закривання і відкривання неактивної форми. Але в такому разі вона відкриється знову на першому записі, а не на поточному. Втім, ми можемо задати номер запису, на якому необхідно відкрити форму, але він не може бути змінним. Крім того, будь-яке закривання/відкривання форми примусить нас знову вводити код операціоніста. 3. Оновлення об’єкта(макрокоманда), але така команда застосовується, лише, відносно активного в даний час об’єкта, а неактивний лишається незмінним. Глухий кут? Ні! Виявляється, що такий механізм є. При перемиканні форми ПлатіжнеДоручення за допомогою кнопки ЗаписьНаДиск, або кнопки НаСледующую Запись (NextRecords) скористайтесь механізмом “пересмикування” форми ЖурналОперацій, тим самим Ви оновите форму. Справа в тому, що макрокоманда НаЗапись може бути застосована і до неактивної форми. В такому випадку: Макрокоманда Аргументи НаЗапись Имя формы: ЖурналОперацій Запись: Предыдущая НаЗапись Имя формы: ЖурналОперацій Запись: Следующая Інакше кажучи, ми передаємо фокус формі ЖурналОперацій і, спочатку, повертаємо її на один крок назад, а потім на поточний запис. Підчас визначення подій форма оновлюється, а у полях Разом і Залишок здійснюються перерахунки поточних значень. Повернення фокуса формі ПлатіжнеДоручення доручимо операціоністу. Не звертаючи уваги на те, що фокус передано він просто натисне клавішу миші на полі форми. Втім, іншого виходу у нього і нема, оскільки потрібно вводити наступний розрахунковий документ клієнта. Перемикання форми ЖурналОперацій на новий запис відкритої форми ПлатіжнеДоручення не приводить до змін реквізитів клієнта. Для оновлення форми ПлатіжнеДоручення скористаємось властивістю форми Включение, що означає подію - отримання фокуса формою, і, запишемо у ньому макрос: Макрокоманда Аргументи НаЗапись Имя формы: ПлатіжнеДоручення Запись: Новая ЗавданняПервинна обробка розрахункових документів1. Створити форми за розрахунковими документами відповідно таблиці варіантів. * Номер варіанта відповідає номеру (комп’ютера). Джерелом даних для усіх форм буде таблиця ЖурналОперацій. ПОРАДА. Звичайнож, краще скористатись процедурами копіювання форми ПлатіжнеДоручення,з послідуючим допрацюванням у відповідності з формою початкового документа. 2. Установіть у складовій формі кнопку із назвою розробленої Вами форми і забезпечіть її роботу, а саме, її натиск буде відкривати розроблену форму, а заповнення даних відображатись в ЖурналіОперацій. 3. Синхронізуйте роботу розробленої Вами форми із головною формою (ЖурналОперацій). 4. Установіть у Вашій формі кнопки Перейти, Відновити і Зберегти.Призначіть на кнопки макрокоманди із макрогрупи ЖурналОперацій. 5. Забезпечіть оновлення підпорядкованої форми, підчас переключення розробленої Вами форми від запису до запису, так, щоб у головній формі, на рахунку клієнта, з’являлись дані про остаток. 6. Блокуйте можливість записів до Вашої форми у разі відсутності коштів на рахунку клієнта. Таблиця 2.1
З повагою ІЦ "KURSOVIKS"! |