Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
210.43 Кб
Скачать

Типы данных, используемых в Paradox

Обозначение

Размер

Тип данных

Пояснение

1

2

3

4

А

1 - 255

Alpha

Строковое поле, содержащее любые печатаемые ASCII символы.

N

Number

Действительные числа от -10307 до 10308 с 15 значащими разрядами. Для выбора формата представления надо использовать Paradox.

$

Money

Положительные или отрицательные числа, отличающиеся от Number формой представления и символом денежной единицы.

s

Short

Короткие целые числа от –32 767 до 32 767

I

Long Integer

Длинные целые числа от 2 147 483 648 до 2 147 483 647

#

0 - 32

BCD

Числа в формате BCD (Binary Coded Decimal). Этот тип введен для совместимости с другими приложениями, использующими BCD. В поле типа BCD можно вводить до 15 значащих разрядов.

D

Date

Значения, представляющие собой даты.

T

Time

Значения, представляющие собой время.

@

Timestamp

Значения, хранящие время и дату. При вводе значения в поле типа Timestamp пользователь может последовательно нажимать клавишу пробела, чтобы ввести текущее время и дату.

M

1 – 240

Memo

Поля для хранения текстов неограниченной длины. Тексты хранятся в отдельных файлах .mb. Указываемый размер — это число первых символов текста, хранящихся непосредственно в таблице.

F

0 – 240

Formatted Memo

Поля для хранения форматированных текстов неограниченной длины. Тексты хранятся в от­дельных файлах .mb. Указываемый размер - это число первых символов текста, хранящих­ся непосредственно в таблице.

G

Graphic

Изображения из файлов в форматах .bmp, .pcx, .tif, .gif или .eps. Database Desktop пре­образует их в формат .bmp.

O

OLE

Данные типа OLE - изображения, звуки, доку­менты. Database Desktop не поддерживает поля этого типа. Просмотр полей OLE возмо­жен в Paradox или в приложениях C++Builder.

L

Logical

Логические поля. По умолчанию возможные значения — true и false.

+

Autoincrement

Автоматически увеличивающееся на 1 длин­ное целое. Только для чтения. При удалении записей значения полей в оставшихся записях не изменяются.

B

Binary

Данные, хранящиеся в отдельных двоичных файлах .mb, которые Database Desktop не ин­терпретирует. В файлах могут храниться звуки и любые другие данные.

Y

1 – 255

Bytes

Данные, которые Database Desktop не интерп­ретирует. В отличие от полей Binary хранятся в таблице, а не во внешних файлах.

В правой части окна структуры таблицы (см. рис. 4) задаются свойства таблицы (Table properties).

Validity Checks — проверка правильности значений. Можно задать следующие характеристики поля:

Required Field

Этим индикатором отмечаются те поля, значения которых обя­зательно должны содержаться в каждой записи.

Minimum

Минимальное значение. Это свойство полезно задавать для чис­ловых полей.

Maximum

Максимально значение. Это свойство полезно задавать для чис­ловых полей.

Default

Значение по умолчанию. Это свойство полезно задавать для числовых и логических полей.

Picture

Шаблон для ввода данных. Например, можно задать шаблон номера телефона «###-##-##» и др.

Assist

Эта кнопка вызывает диалоговое окно, помогающее создать шаблон Picture и занести его в список, из которого в дальней­шем его можно брать при создании новых таблиц.

Table Lookup — таблица просмотра. Этот раздел позволяет связать с полем данной таблицы какое-то поле другой просматриваемой таблицы, из которого будут браться допустимые значения. При выборе Table Lookup на экране появляется кнопка Define — определить. При ее нажатии открывается диалоговое окно, показанное на рис. 5. В нем можно для данного поля задать таблицу просмотра (Lookup table). При этом вы можете воспользоваться выпадающим списком драйверов или псевдонимов (Drive or Alias) и кнопкой просмотра (Browse). Затем кнопкой со стрелкой следует занести поле просматриваемой таблицы, из которого будут браться допустимые значения.

Рис. 5. Окно задания таблицы просмотра

Secondary Indexes — вторичные индексы. Этот раздел позволяет создать необходимые для дальнейшей работы вторичные индексы (первичный индекс создается по ключе­вым полям). Например, для дальнейшего использования таблицы Prod по­лезен будет индекс, упорядочивающий таблицу по дате и коду продукции.

Чтобы создать новый вторичный индекс, следует нажать кнопку Define — опреде­лить. Откроется диалоговое окно, представленное на рис. 6. В его левом окне Fields содержится список доступных полей, в правом окне Indexed fields можно подобрать и упорядочить список полей, включаемых в индекс. Для переноса поля из левого окна в правое надо выделить интересующее поле или группу полей и нажать кнопку со стрелкой вправо или дважды щелкнуть по выбранному полю. Стрелками Change order (изменить последова­тельность) можно изменить порядок следования полей в индексе.

Рис. 6. Окно задания индекса

Панель радиокнопок Index Options (опции индекса) позволяет установить сле­дующие характеристики:

Unique

Установка этой опции не позволяет индексировать таблицу, если в ней находятся дубликаты совокупности включенных в индекс полей.

Descending

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

Case Sensitive

При установке этой опции будет приниматься во внимание ре­гистр, в котором введены символы.

Maintained

Если эта опция установлена, то индекс обновляется при каждом изменении в таблице. В противном случае индекс обновляется то­лько в момент связывания с таблицей или передачи в нее запро­са. Это несколько замедляет обработку запросов. Поэтому полезно включать эту опцию для обновляемых таблиц. Если таблица ис­пользуется только для чтения, эту опцию лучше не включать.

После того, как индекс сформирован, следует нажать кнопку ОК. Открывается окно (рис. 7), в котором задается имя индекса.

Рис. 7. Окно задания имени индекса

Завершение создания таблицы

После того, как все необходимые данные о структуре таблицы внесены, следует щелк­нуть на кнопке Save as (сохранить как). Откроется окно, на­поминающее обычный диалог сохранения в файле. От обычного это окно отличает­ся выпадающим списком Alias. Этот список содержит псевдонимы различных баз данных, из которого можно выбрать базу данных, в которую будете сохранять свою таблицу. Если не требуется сохранять таблицу в одной из существующих баз данных, то можно воспользоваться обычным спи­ском "Сохранить" в верхней части окна. При этом вы с помощью обычной быстрой кнопки можете создать новую папку (каталог), так как для Paradox база данных — это каталог, в котором сохраняется таблица.

Изменение структуры и заполнение таблицы с помощью Database Desktop

После того, как таблица создана, ее можно открыть командой File|Open. Если при сохранении структуры таблицы была использована опция Display Table, то таблица откроется автоматически С помощью разделов меню Table можно просмотреть содержимое таблицы (команда Table|View Data) или редактировать его (команда Table|Edit Data). Команда Table|Info Structure позволяет просмотреть информацию о структуре таблицы, а команда Table|Restructure позволяет изменить структуру таблицы или какие-то ее характеристики. При выполнении этой команды вы попадаете в окно, аналогичное используемому ранее при разработке структуры.

Компоненты C++Builder, используемые для работы БД

Для работы с БД в C++Builder имеются несколько основных компонент(объектов), которые постоянно используются для доступа к БД. Эти объекты могут быть разделены на три группы:

  • невизуальные: TTable, TQuery, TDataSet, TField

  • визуальные: TDBGrid, TDBEdit, TDBNavigator

  • связующие: TDataSource

Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery, TDataSet и TField. В Палитре Компонент эти объекты расположены на странице Data Access.

Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage и TDBComboBox. В Палитре Компонент эти объекты расположены на странице Data Controls.

Имеется и третий тип, который используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource.  

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

C++Builder поддерживает "трехступенчатую" модель разработки приложения баз данных. В этой модели компонента управления связана с компонентой источника, а та, в свою очередь, получает фактические данные таблицы или запроса посредством механизма BDE. Рис. 8 показывает пример взаимосвязи компонент.

Рис. 8 - Взаимосвязь компонент управления и доступа к содержимому баз данных.

Среднее звено, компонента TDataSource, допускает менять фактическую таблицу на стадии проектирования формы без какого бы то ни было перепрограммирования самого приложения - все отображаемые элементы связаны с источником, а не с питающими его таблицей или запросом.

Обзор компонент работы с БД:

  1. Компонент TDataSource.

Компонента TDataSource действует как интерфейс между некоторым объектом набора данных (таблица, запрос) и визуальной компонентой управления. С одной стороны, все наборы данных должны быть ассоциированы с некоторым источником. С другой стороны, каждая компонента управления должна быть ассоциирована с источником, чтобы получать данные для отображения и редактирования. Каждой компоненте набора данных должна соответствовать, по меньшей мере, одна компонента источника.

Некоторые свойства компонента:

AutoEdit разрешает или запрещает режим редактирования записей, вводимых в поля компонент управления. Значение true включает режим редактирования по умолчанию.

DataSet определяет имя конкретного набора данных (таблицы или запроса), который питает данный источник. Можно переключаться с одного набора данных на другой "на лету", во время выполнения программы.

С компонентой TDataSource связаны три события:

OnDataChange возникает при перемещении курсора на новую запись и используется при необходимости "ручной" синхронизации поведения компонент управления.

OnStateChange возникает при изменении свойства State наборов данных.

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