Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Failid.DOC
Скачиваний:
14
Добавлен:
31.03.2015
Размер:
266.24 Кб
Скачать

5.4. Обработка файлов

В Delphi имеется три уровня доступа и обработки файлов:

  • использование стандартных средств;

  • использование языка SQL;

  • программируемый доступ к базе данных: использование языка Object Pascal для написания программ обработки данных.

Первый уровень наиболее легкий в реализации, но с наименьшими возможностями, второй – позволяет к возможностям Delphi добавить средства SQL, что особенно удобно при выполнении задач поискового характера, использование Object Pascal дает возможность реализовать алгоритмы любой сложности, используя в качестве исходных данные из базы. Кроме того, среди стандартных средств можно отдельно выделить мастера (Wizard), с помощью которого представление данных из баз данных на экране предельно просто. Для запуска мастера необходимо выбрать в меню Delphi пункт Database и подпункт Form Wizard. Далее следуют подробные подсказки по составлению форм. В случае необходимости это средство каждый студент может освоить самостоятельно.

5.4.1. Представление данных в виде таблиц

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

  • из палитры Data Access Table и DataSource;

  • из палитры Data Control DBGrid.

Table и DataSource являются невизуальными т.е. во время работы приложения они не будут показаны на экране, поэтому их местоположение не имеет значения, обычно их располагают рядом с той таблицей, к которой они относятся. DBGrid визуальная компонента.

Необходимые свойства Table (обращаем внимание на то, что в данном случае свойствам необходимо присваивать значения именно в такой последовательности):

  1. DataBaseName задается путь до того директория, где размещен файл;

  2. TableName – имя файла, если предыдущему свойству присвоено правильное значение, то можно это имя выбрать из выпадающего списка, одновременно можно таким образом проверить, правильно ли задан путь (появится нужный список файлов или нет);

  3. Active – дать значение True.

Необходимые свойство DataSource:

DataSet, значение Table1, что является именем по умолчанию объекта Table, можно его выбрать из списка.

Необходимое свойство DBGrid – DataSet; значение DataSource1 (имя по умолчанию объекта DataSource, можно выбрать из списка.

После всех этих операций в таблице должны появиться данные из выбранного файла, на DBGrid имеются полосы скроллинга, позволяющие просматривать весь файл. В качестве имен полей используются внутренние имена полей файла. Такой способ задания полей при просмотре файла называется динамическим, при изменении структуры файла эти изменения автоматически будут отражены на экране просмотра. Обращаем внимание на свойство IndexName объекта Table. По умолчанию оно не определено. Если обрабатываемый файл имеет вторичные индексы (созданные в Database Desktop), то имя любого из них можно выбрать из выпадающего списка и задать в качестве значения IndexName. Результат: если имя индекса не задано, то данные в таблице упорядочены по возрастанию ключей, если задано имя индекса – то по возрастанию значений в поле индекса. Вывод: вторичные индексы позволяют представить одни и те же данные упорядоченными по разным критериям. Обращаем внимание на то, что когда файл связан с таблицей на экране (свойство Active имеет значение True), то никакие изменения не будут иметь значения. Для изменения имени индекса надо сначала менять значение на False, произвести необходимые изменения, а затем восстановить значение True.

Обратим внимание на некоторые свойства TTable, которые часто упрощают решение задач.

IndexName – если значение этого свойства не задано, то записи файла показаны в порядке возрастания первичного ключа. Если задать имя вторичного индекса, то записи файла будут показаны по возрастанию этого индекса.

Filter – может содержать условное выражение на полях файла. При наличии фильтра будут показаны лишь удовлетворяющие заданному условию записи.

Filtered – может иметь значения True или False. В зависимости от этого заданный фильтр учитывается или нет.

Кроме упомянутых выше динамических полей можно задавать и статические поля в имеющихся на экране таблицах. Для статических полей можно выбрать более содержательные названия (в том числе и на русском языке) по сравнению с внутренними именами в файле, можно влиять на их внешний вид, можно ввести новые поля, вычисляемые на основе заданных. Недостатком статических полей является то обстоятельство, что при внесении изменений в названия полей в файле они автоматически не будут отражены на экране. Этот недостаток не столь уж и существенный, потому что структуру файлов меняют относительно редко, а если приложение сдано в постоянную эксплуатацию, то пользователи не имеют возможности этого делать. Поэтому использование статических полей желательно для повышения удобства работы с приложением. В одной таблице не может одновременно быть статических и динамических полей. Для создания статических полей надо делать двойной щелчок на иконке объекта Table, откроется пока пустое окно с названием ИМЯ_ФОРМЫ.ИМЯ_ТАБЛИЦЫ статических полей (по умолчанию все поля динамические). При нажатии на этом окне правой клавиши мыши откроется меню для создания и изменения статических полей. Рекомендуем читателю поэкспериментировать и самостоятельно освоить работу со статическими полями.

До сих пор рассматривали создание на экране одной таблицы для представления данных из одного файла базы данных. Переходим к представлению данных из двух связанных файлов в двух таблицах. Если связь между файлами была установлена уже на стадии проектирования базы данных, то для представления этих связанных таблиц на экране необходимо только повторить два раза все описанное выше: создать все объекты два раза и связывать с двумя разными (связанными) файлами. Результат: когда указатель фиксирован на записи ведущего файла, то скроллинг ведомого файла возможен только по записям, связанным с ней. Естественно, что при связи 1:1 скроллинг ведомой таблицы отсутствует полностью.

Связь между двумя файлами может быть создана и во время разработки приложения (при условии, что она не была создана ранее). Рассмотрим это на примере таблиц 1 и 2 из п. 5.2. В разных приложениях могут быть установлены разные связи между файлами и, таким образом, достигается большая гибкость. Обратим внимание на следующие существенные моменты:

  • поля НОМЕР СПЕЦИАЛЬНОСТИ в первом и СПЕЦИАЛЬНОСТЬ во втором файле должны иметь один и тот же тип данных, в нашем случае выбран Short;

  • во втором файле должен быть вторичный индекс по полю СПЕЦИАЛЬНОСТЬ, потому что оно будет участвовать в соединении. В первом файле соответствующее поле ключевое.

Для представления на экране двух связанных файлов необходимо перенести на экран с палитры компонент всё необходимое (Table, DataSource, DBGrid) два раза и связать с файлами, как описано выше в этом параграфе. Для обеспечения связи между таблицами сделаем следующее:

  • Активизируем соответствующий нижней таблице объект Table.

  • Изменим значение свойства Active на False.

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

  • Активизируем диалоговое окно свойства MasterFields: Field Link Designer. В верхней строке можно выбрать индекс, по которому будет выполняться соединение. По умолчанию предлагается объединить по ключевому полю. Выберем из выпадающего списка имя вторичного индекса, соответствующего полю СПЕЦИАЛЬНОСТЬ (SPEC_IND). Дальнейшие шаги очевидны: надо из двух колонок, соответствующих двум таблицам, выбрать нужные поля и подтвердить свой выбор.

  • Изменим значение свойства Active на True.

Две связанные таблицы на стадии проектирования показаны на рис. 5.2. В верхней таблице динамические, в нижней – статические поля. Скроллинг нижней таблицы позволяет передвигаться только по записям, соответствующим фиксированной в верхней таблице записи.

Рис. 5.2. Связанные таблицы

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]