О тебе узнал я во вчерашнем страшном сне...
Вариации на тему "Браво"
За годы борьбы с так называемым коннечным пользователем по части "выхода" итогов из разработанных приложений. Частенько терзался мыслью Как бы свалить с приложения тяжкий груз формирования отчетных форм столь часто меняющихся. В прежнюю бытность работы с MS DOS и Clipper, эта проблема была решена. Разработанный тогда спец механизм позволял гибко и независимо от исполняемого кода решать проблему формирования выходных документов. После переходна на Windows 95 и с отмиранием Clipper'a пришлось снести в мусор былые лавры. От начала знакомства с Delphi был озадачен как реализовать точно такой же механизм но имея совершенно отличную материальную базу. Первая попытка по возможности в точности скопировать старый материал, получилась мягко говоря не очень пригодной для широкого использования. И на самом деле сильно зависящей от исполнаяемого кода самой программы. Разумеется эксперименты не прекратились. К тому же коллеги стали активно муссировать использование OLE объектов. В частности работу с MS Office. Получилось уже гораздо мощнее и краше. Однако все еще оставалась сильная привязанность к родительскому приложению. Дальше почти на полтора года зависнув на достигнутом очень медленно усовершенствовал но крайне нереволюционно. За это время было написано несколько приложений в которых пришлось тупо дублировать один и тот же мезанизм работы с выходными отчетами. НО! При этом при малейших новых веяниях тутже перерабатывать все свои разработки. Конечно это надоедало да просто бесило. И вот буквально через год таких мытарств наконец-то созрел к созданию совершенно отдельной программы целью которой является конкретно обработка данных и создание выходных форм. А последней каплей переполнившей чашу терпения стала, новая автоматизационная политика насаждаемая новым же главным инженером. Ориентированная на все усиливающееся внедрение MS Excel, для реализации всех учетных задач предприятия. Мне безусловно все это совершенно не нравилось и не нравиться. И терзаясь немой злобой выносил зловещий план этого проекта.
Самая большая преследуемая цель - обеспечить независимую от родительского проекта возможность постобработки данных. Сделать ее максимально быстрой. Облизать вопросы удобства и полноты работы с отчетами на одном и едином приложении. А так же попробовть реализовать возможность работы с распределенными данными. Т.е. попытаться наиболее экономно и наиболее полно по части требований организовать прием и отгрузку результатов с отделений.
Читая настоящую инструкцию помните главное:
Дайте мне повод и я переверну мир
Главная задача этого проекта - получение отчетов. А центральная задача этого документа преподнести читателю суть главной задачи проекта. Так что не будем западать на "что нажимать", а сосредоточим внимание на стратегии работы. Что составляет фундаментальную основу проекта? Все в лучших традициях любых теорий - три кита.
Кит первый, центральный. Универсаьным средоством добычи информации из быз данных, разработанным за недавнее время лучшими из людей, является так называемый SQL - запрос. Запрос составленный на языке SQL, описывающий состав требуемых данных и условия их получения. Выполнение запроса дает искомую выборку информации. Добавим к собственно запросу его человеческое описание и придамим ему возможность хранить результаты последней выборки, да еще и оформиним выдов данных на экран пользователя. Весть этот набор мы назовем просто и общо - запрос, и сделаем его главным камнем претконевения.Минимальной функциональной единицей, могущей получать и хранить некоторые данные.
Кит второй, объединяющий, стадный. Для создания некоторой общей отчетной картины, обычно требуется создать несколько выборок данных. Но все они говоря о разном говорят об одной. Таким образом множество запросов служащих описанию одной большой темы можно объединить (расположить по соседству), и работать уже с этой группой. Такое множество запросов мы назовем проектом. Помпезно, но это на самом деле все же больше чем просто группа, т.к. дальше вы заметите, что функциональные возможности программы для группы запросов щдостаточно велики и зависят от группы. Итак для каждой информационной области мы создаем проект состоящий из набора запросов и методов работы с ними.
Кит третий,транспортный. В пределах одного проекта запросы составляются исходя из требуемых условий. Помятуя о преданности проектов одной теме следует предположить, что и условия будут достаточно похожими. Ну или по кравйней мере иметь часть одинаковых параметров. Логично тогда говорить, о том, чтобы задавать условия сразу не только одному запросу а всем запросам проекта имеющим это условие. Таким образом мы получаем третьего кита задачей которого содержать в себе перечень всех общих условий и уметь преподнести их каждому страждущему. А говоря про второго убиваемого зайца - уменьшаем количество вводимой пользователем исходной информации. Итак последний, но не последний по роли, кит назовем его многолико "Параметрами", который являет собой параметры условий для выполнения запросов.
Интуитивно понятный интерфейс это такой интерфейс
чтобы понять который требуется недюженная интуиция.
Интерфейс пользователя выбранный в этом проекте называется MDI, от англицкой абревиатуры (Multy D Interdface). Он такой же что и в MS Word. Т.е. на рабочем столе программы может размещаться срезу несколько окон с различной информацией. Пользователь переключаясь между окнами (делая одно из них активным, текущим) работает с ним. Доступные операции с данными окна доступны из главного меню программы, панели кнопок, и контекстного меню (вызываемого нажатием правой кнопки мыши).
Для работы с окнами программы выделено меню "Окна" из которого можно перейти к любому уже открытому окну, и/или расположить всеоткрытые окна в некотором порядке.
Закон Букера.
Даже маленькая практика стоит большой теории.
Теперь можно конкретно поговорить о работе с программой. Предполагается, что пользователь знает как работать с меня программы, мышкой ли клавиатуровй ли. Знает как вводить данные в соответсвующие элементы окна, знает как нажимать кнопки на окнах и на клавиатуре тоже. Одним словом предположим идеальный случай пользователя не новичка. Т.е. уйдем от подробного описания задействованных кнопок. А постараемя преподнести общую стратегию. Главы документа адресовны как пользователю, так и человеку который собирается что-то реализовывать сам. Технические подробности можно опускать, если вы собираетесь пользоваться только плодами. Корешки же для пытливых.
ЗАКОН ЗООПАРКОВ И МУЗЕЕВ ДЖОУНСА.
У самого интересного экспоната не бывает таблички с названием.
Опыт (как приятно вообще-то считать себя кладезем мудрости), подсказывает - глянь сначала на титульный лист программы.
Там можно сразу узнать некоторые критичные факты. Например версию программы, ее назначение, ее версия, с точки зрения законченности.
Ну и конечно познакомиться с автором (ему это всегда приятно).
Не хочу показаться нескромным или навязчивым (должен признаться,что у меня нет ни слуха ни голоса,.. один талант),
но все тот же опыт учит, что с автором таки разговаривают, в той или иной тональности, но знакомство происходит.
Так лучше быть к этому готовым. Да и просто картинка красивая.... старался елы палы.
Первая компьютерная аксиома Лео Бейзера
Закладывая что-то в ЭВМ, помните, куда вы это положили.
Незаметно (по задумке) переползаем собственно к тематическому разговору. Как мы уже говорили - все запросы группируются в проекты. Выбрав один из которых мы можем работать. Что необходимо чтобы создать или откоректировать проект? Прежде всего открыть окно работы с ними а дальше выбрав режим редактирования или добавления указать
На самом деле пользователью это совершенно не понадобиться. Проекты будут составляться другими людьми.
И можно безусловно было бы пропустить этот пункт. Но ради полноты картины, и злым умыслом истина представлена послесловом.
Правило точности.
Работая над решением задачи, всегда полезно знать ответ.
Теперь о главном - запросах к базам данных. При запуске программы это окно сразу открывается, т.к. основная работ производится непосредственно в нем.
Для каждого выбранного Вами проекта сразу выводятся все связанные с ним запросы выстроенные в порядке своего приоритета. Справа от списка запросов
Каждый запрос формируется следущими
На закладке "Поля" выводится список всех полей результирующей таблицы. Где можно заменить английское название поля удобочитаемыми русскими синонимами. И кроме того запретить вывод лишних полей на экран. Убрать столбец из просмотра можно и на странице просмотра данных, счелкнув мышкой по заголовку столбца. Удинственно что необходимо помнить убирая столбцы из просмотра, что обратная операция возможна только на странице полей.
Текущую таблицу (выведенную на экран) можно бытро отправить в MS Word 95 или MS Excel 97, в формат HTML. А так же просто открыть эту таблицу в другом окне (бывает полезно видеть одновременно сразу несколько таблиц). Для этого просто на поле вывода данных необходимо нажать правую кнопку мыши и в "выпавшем" меню выбрать интересующий пункт.
Закон больших задач Хоара.
Внутри каждой большой задачи сидит маленькая,
пытающаяся пробится наружу.
Стартуя, программа вместе с окном запросов открывает и окно параметров. C его помощью она ищет необходимые запросам параметры. И закрываеть это окно не следует - есть не просит, а польза при том налицо. Главное и основное предназначение параметров - подменять собой конкретные данные. Поэтому каждый параметр должен за собой нести конкретную "информационную" нагрузку.
Благодарю Вас за внимаение. Надеюсь потраченное на составление этого документа и написание собственно программы ропало не зря.
Безусловно представленный текст обладаем массой недостатков как по части грамматики, так и по части преподнесения информации.
Не судите строго.
Бесконечно ваш Афанасьев Константин.