Вернемся к приложению с базами данных, разработанному в прошлой лекции. Нам осталось научиться пользоваться закладками
Закладки позволяют сохранить положение в наборе данных, чтобы
позднее можно было вернуться к этому же месту. В Delphi за это
отвечает только одно свойство. Все, что нужно сделать – это объявить
переменную типа TBookmarkStr и присвоить ей положение, которое мы
хотим запомнить:
var bm : TBookmarkStr; begin bm := Table1.Bookmark;
А когда нужно вернуться на закладку, делаем обратное присваивание:
Table1.Bookmark := bm;
Чтобы освободить закладку, нужно ей просто-напросто присвоить пустую строку:
bm := '';
Как видите, закладка реализуется переменной типа TBookmarkStr, а в
компоненте Table имеется свойство Bookmark такого же типа.
Теперь вернемся к нашему проекту и напишем код для наших кнопок, отвечающих за закладки. Прежде всего, переменной – закладкой мы должны будем пользоваться из трех процедур – по количеству кнопок управления закладкой. Следовательно, переменная должна быть глобальной. Опишем ее в разделе глобальных переменных:
var fMain: TfMain; bm : TBookmarkStr;
Далее, кнопка "Установить" у нас доступна, остальные кнопки не доступны. Почему? Потому, что мы не можем перейти на закладку, или удалить ее, пока мы эту закладку не установили. Как только мы установим закладку, то наоборот, кнопки "На закладку" и "Удалить" у нас должны стать активными. А вот "Установить" - нет, потому что ее сначала нужно освободить, удалить. Имеем это в виду, и пишем код для кнопки "Установить":
//получаем закладку: bm := fDm.Table1.Bookmark; //разрешаем или запрещаем кнопки: Button5.Enabled := False; //установить Button6.Enabled := True; //на закладку Button7.Enabled := True; //Удалить
Теперь код для кнопки "На закладку":
//перейти на закладку fDM.Table1.Bookmark := bm;
И напоследок, код для кнопки "Удалить":
//удалить закладку: bm := ''; //разрешаем или запрещаем кнопки: Button5.Enabled := True; //установить Button6.Enabled := False; //на закладку Button7.Enabled := False; //Удалить
Вот и вся работа с закладками!
Свойства и EOF имеют логический тип данных. Свойство
возвращает истину тогда, когда указатель находится на первой записи
таблицы, а свойство EOF – на последней. Таким образом, мы можем
обрабатывать таблицу циклически, переходя от записи к записи, пока не
будет достигнут конец или начало таблицы. Пример:
Table1.First; //перешли на первую запись
while not Table1.EOF do begin
{какие-то действия с записью}
Table1.Next; //переход на следующую запись
end; //while
Точно также, можно от конца таблицы переходить к началу, и
использовать при переходе свойство Prev – переход к предыдущей
записи.
В предыдущем примере мы во время разработки установили свойство Active таблицы в True. Однако нередко бывает, что открывать и
закрывать таблицу приходится программным путем. Таким образом, для
открытия таблицы мы можем использовать свойство Active или методы Open
и Close, которые делают одно и то же:
//открываем таблицы: Table1.Open; Table2.Active := True; //закрываем таблицы: Table1.Close; Table2.Active := False;
Эти свойства приходится использовать довольно часто, чтобы выяснить
номер текущей записи или общее количество записей (строк) в таблице. возвращает целое число, показывающее общее количество
записей, а – номер текущей записи.
Давайте улучшим наш проект, указав какая запись является текущей, и
каково общее количество записей. Откройте предыдущий проект. Событие onDataChange компонента DataSource возникает всякий раз, когда
происходят изменения в данных таблицы. Например, перемещение от одной
записи к другой. Однако, компонент Label, в который нам нужно
прописать эти данные, находится в главном окне, а компонент DataSource
– в окне DM. Так что придется открыть модуль DM, и использовать
команду File -> Use Unit, в которой указать главное окно fMain.
Теперь выделите компонент DataSource и сгенерируйте для него
событие onDataChange. В коде этого события запишем:
fMain.Label1.Caption := 'Позиция: ' +
IntToStr(Table1.RecNo) + ' из ' +
IntToStr(Table1.RecordCount);
Как видите, мы использовали оба новых свойства. В результате при загрузке программы должна получиться строка, вроде такой:
Позиция: 1 из 28
Наш "БД – Навигатор" полностью работоспособен. Можете закрыть этот проект, больше он нам не потребуется.
Наиболее простой способ создать собственную таблицу –
воспользоваться встроенной утилитой Delphi – Database Desktop. Однако
для начала создайте новое приложение. Форму сразу переименуйте в fMain, модуль сохраните под именем Main, а проект – CatBooks. Мы будем
делать каталог книг для библиотеки. В свойстве Caption формы можете
написать "Библиотечный каталог". Теперь с помощью файлового менеджера
создайте на диске D: (Если D: диска у вас нет, то на диске C:) еще
одну папку – Data (данные). Таким образом, адрес нашей базы данных
будет d:\data.
Теперь запускайте утилиту Database Desktop, которая находится там
же, где Delphi. Эта программа – не просто браузер БД, она еще
позволяет создавать таблицы и индексные файлы. Сейчас выберем команду
File – New – Table. Появится окошко, в котором можно выбрать формат
создаваемой таблицы. Откройте список – он довольно внушителен. Таблицы
формата dBase наиболее распространены, однако они очень уязвимы и не
имеют большого разнообразия типов полей. Поэтому оставим формат по
умолчанию –
Field Name указать название поля (колонки).Type выбрать тип поля. Для этого достаточно нажать пробел, чтобы открылся список всех полей.Size указывается длина строк в символах. Если Вы выбрали, к примеру, дату, то это поле недоступно для редактирования, поскольку у всех записей будет фиксированная длина.Key позволяет указать ключевое поле. Для этого тоже достаточно нажать пробел. Установка на поле ключа приводит к тому, что все записи таблицы будут сортироваться по этому полю. Например, если установить ключ у поля "Фамилия", то все записи отсортируются по фамилиям, от А до Я. Если ключа нет, то записи будут в том порядке, в каком их ввели в таблицу.| Тип | Буква | Описание |
|---|---|---|
| Alpha | A | Строка от 1 до 255 символов. Размер поля указывается в Size. |
| Number | N | Целое число от -10307 до 10308 (15 значащих цифр) |
| $ Money | $ | Число в денежном формате. |
| Short | S | Короткое целое от -32768 до 32767 |
| I | Длинное целое от -2147483648 до 2147483647 | |
| Date | D | Дата |
| Time | T | Время с полуночи в миллисекундах |
| Timestamp | @ | Дата и время |
| Memo | M | Строковое поле неограниченной длины. В разделе Size можно указать длину от 1 до 240 символов, остальные символы хранятся в файле с таким же именем, но расширением mb. |
| Formated Memo | F | Как Memo, но также имеются дополнительные возможности: указать тип и размер шрифта, цвет символов, способ оформления… |
| Graphic | G | Графический файл сохраняется прямо в поле. |
| Logical | L | Логический тип. |
| $$\pm$$ Autoincrement | + | Целое число, увеличивающееся на единицу автоматически, при добавлении новой записи (счетчик). |
| Bytes | Y | Двоичные данные. |
| Binary | B | Двоичные данные. Как и Memo, хранятся в отдельном файле. Обычно содержат аудио- или видео-данные. |
Итак, вводим такие поля:
| Field Name | Type | Size | Key | |
|---|---|---|---|---|
| 1 | Key1 | + | ||
| 2 | Avtor | I | ||
| 3 | Nazvanie | A | 100 | |
| 4 | Exemp | S | ||
| 5 | Cena | $ | ||
| 6 | Date | D | ||
| 7 | Prim | M | 200 |
Теперь нажмите кнопку "Save As", файл назовите books и сохраните его в папке d:\data. Здесь будут храниться данные о книгах. Поле с автором мы установили как целое. Позже мы сделаем еще одну таблицу, и в ней будем вести учет всех авторов. И обе таблицы у нас будут объединены. Теперь, если вы взгляните на папку d:\data, то обнаружите там два файла:
Вот теперь настало время создать приложение, которое будет работать
с этой таблицей. Главная форма у нас уже есть, так что сразу создаем
модуль данных (File – New – Data Module). В свойстве Name напишите , а сам модуль сохраните как DM. Сразу же перейдите на главную
форму и с помощью File – Use unit свяжите ее с DM.
Теперь устанавливаем на DM компонент Table с вкладки DatabaseName компонента впишите адрес нашей базы: "d:\data".
В свойстве TableName выберите нашу таблицу books.db. Изменим имя
таблицы, и укажем TBooks в свойстве Name компонента Table1. Так как у
нас в приложении будет более одной таблицы, желательно каждой из них
дать осмысленное имя, чтобы потом не запутаться.
Сразу же устанавливаем на DM компонент DataSource с вкладки Data
Access. Имя компонента изменим на DS1, чтобы было покороче. В свойстве DataSet выберем нашу таблицу.
Переходим на главную форму. Устанавливаем главное меню и создаем такие пункты:
Теперь установим панель, свойству Align присвоим alTop, чтобы она
заняла весь верх, свойство Caption очистим и бросим на нее два
компонента Label, один под другим. На первой напишем: "Всего книг:",
на второй – "На общую сумму:". Как следует из названий, эти данные мы
будем выводить на панель.
Ниже устанавливаем сетку с вкладки Data Controls. Свойство Align переведем в alClient. В свойстве DataSource выберем наш DS1.
Свойство ReadOnly переведем в True, так как для редактирования данных
у нас будут другие инструменты, сетка нужна только для просмотра.
Теперь переходим на окно DM, выделяем компонент с таблицей и
открываем ее, установив Active в True. На главной форме сетка должна
отображать данные таблицы, пока еще пустые.
Однако заголовки столбцов не очень привлекательны с точки зрения
клиента. Исправим это. Выделите таблицу TBooks, и дважды щелкните по
нему. Должно появиться окно
(рис 30.1) Окно редактора полей компонента TableТеперь щелкните правой кнопкой по этому окну и выберите команду Add all fields (добавить все поля).
Выделяем поле Key1. Оно нам нужно только как счетчик записей, так
что пользователю его можно не отображать. Спрячьте его, установив его
свойство Visible в False. Поле исчезло с сетки, но не потерялось – оно
по-прежнему присутствует в таблице.
Далее выделите поле Avtor. Здесь нас интересуют два свойства: и DisplayWidth. Первое отвечает за выводимый текст
названия колонки, напишите здесь "Автор". Второе отвечает за ширину
колонки. Установите 5, так как у нас здесь будут только цифры.
У поля Nazvanie измените выводимый текст на "Название книги".
У поля Exemp измените выводимый текст на "Кол-во экз.".
У поля Cena измените выводимый текст на "Цена".
У поля Date измените выводимый текст на "Дата пост.".
Наконец, поле Prim должно содержать аннотацию к книге, но поскольку
это поле типа Memo, то в сетке оно все равно не выйдет. Поэтому
спрячьте это поле, также как поле Key1.
Поскольку наше приложение должно еще уметь подставлять фамилию автора книги вместо цифры, нам нужно сделать еще одну таблицу. Снова запустите утилиту Database Desktop. Дальше все, как и в прошлый раз: File – New – Table. Тип таблицы Paradox 7.
Первое поле назовите Key2. В принципе, как именно мы назовем ключ,
особой разницы нет, просто мы его так назвали, чтобы не путать с
первым ключом. Итак, тип поля – Autoincrement.
Второе поле назовите FIO, тип – Alpha, размер – 30 символов. Больше
полей нам не требуется. Конечно, можно было бы сделать отдельные поля
на фамилию, на имя и отчество, однако такие усложнения займут больше
времени и не добавят новых знаний, так что их не стоит делать в
учебной программе.
Нажимаем кнопку "Save as", имя таблице даем avtors, а папку для таблицы – "d:\data". Можно выходить из утилиты, таблица уже существует.
Теперь нам потребуется форма для редактирования авторов, а также
еще по одному компоненту Table и DataSource. Вначале бросьте эти
компоненты в окно DM. Таблицу переименуйте в TAvtors, а DataSource – в
DS2.
Далее, у таблицы в свойстве DatabaseName напишите адрес нашей базы
данных – d:\data, а в свойстве TableName выберите таблицу
avtors.db.
У компонента DS2 в свойстве DataSet выберите компонент TAvtors.
Теперь приступаем к форме редактирования авторов. Создаем новую
форму, переименовываем ее в fAvtors, в свойстве Caption пишем
"Авторы", свойство BorderStyle переводим в bsDialog, с помощью File –
Use Unit добавляем к форме модуль DM. Теперь сохраняем форму под
именем Avtors.
Далее, устанавливаем на форму следующие компоненты:
Label – напишите на ней следующий текст: "Впишите Фамилию И.О.
автора:"
Обычный Edit. Очистите у него свойство Text, а в свойстве MaxLength
(максимальная длина) укажите 30. Именно такой размер мы указали у поля
FIO при проектировании таблицы.
Ниже устанавливаем две кнопки, на которых пишем: "Добавить" и "Удалить текущую запись".
Еще ниже – сетку , в свойстве DataSource которой нужно
выбрать DS2. Все, приготовления окончены, можно переводить таблицу TAvtors в активное состояние ( Active переводим в True ). У вас должна
получиться форма вроде этой:
(рис 30.2) Внешний вид формы авторовКнопку "Добавить" сделайте пока недоступной. Мы будем давать
пользователю доступ к ней тогда, когда он что-нибудь введет в поле Edit.
Теперь так же, как мы редактировали названия полей в первой
таблице, сделайте это во второй. Поле Key2 прятать не нужно, просто в
заголовке столбца укажите "№". А в заголовке второго столбца –
"Фамилия И.О.".
Перед тем, как продолжить создание нашего библиотечного каталога, необходимо познакомиться с методами редактирования данных таблицы. Но об этом мы поговорим уже на следующей лекции.
Вернемся к приложению с базами данных, разработанному в прошлой лекции. Нам осталось научиться пользоваться закладками
Закладки позволяют сохранить положение в наборе данных, чтобы
позднее можно было вернуться к этому же месту. В Delphi за это
отвечает только одно свойство. Все, что нужно сделать – это объявить
переменную типа TBookmarkStr и присвоить ей положение, которое мы
хотим запомнить:
var bm : TBookmarkStr; begin bm := Table1.Bookmark;
А когда нужно вернуться на закладку, делаем обратное присваивание:
Table1.Bookmark := bm;
Чтобы освободить закладку, нужно ей просто-напросто присвоить пустую строку:
bm := '';
Как видите, закладка реализуется переменной типа TBookmarkStr, а в
компоненте Table имеется свойство Bookmark такого же типа.
Теперь вернемся к нашему проекту и напишем код для наших кнопок, отвечающих за закладки. Прежде всего, переменной – закладкой мы должны будем пользоваться из трех процедур – по количеству кнопок управления закладкой. Следовательно, переменная должна быть глобальной. Опишем ее в разделе глобальных переменных:
var fMain: TfMain; bm : TBookmarkStr;
Далее, кнопка "Установить" у нас доступна, остальные кнопки не доступны. Почему? Потому, что мы не можем перейти на закладку, или удалить ее, пока мы эту закладку не установили. Как только мы установим закладку, то наоборот, кнопки "На закладку" и "Удалить" у нас должны стать активными. А вот "Установить" - нет, потому что ее сначала нужно освободить, удалить. Имеем это в виду, и пишем код для кнопки "Установить":
//получаем закладку: bm := fDm.Table1.Bookmark; //разрешаем или запрещаем кнопки: Button5.Enabled := False; //установить Button6.Enabled := True; //на закладку Button7.Enabled := True; //Удалить
Теперь код для кнопки "На закладку":
//перейти на закладку fDM.Table1.Bookmark := bm;
И напоследок, код для кнопки "Удалить":
//удалить закладку: bm := ''; //разрешаем или запрещаем кнопки: Button5.Enabled := True; //установить Button6.Enabled := False; //на закладку Button7.Enabled := False; //Удалить
Вот и вся работа с закладками!
Свойства и EOF имеют логический тип данных. Свойство
возвращает истину тогда, когда указатель находится на первой записи
таблицы, а свойство EOF – на последней. Таким образом, мы можем
обрабатывать таблицу циклически, переходя от записи к записи, пока не
будет достигнут конец или начало таблицы. Пример:
Table1.First; //перешли на первую запись
while not Table1.EOF do begin
{какие-то действия с записью}
Table1.Next; //переход на следующую запись
end; //while
Точно также, можно от конца таблицы переходить к началу, и
использовать при переходе свойство Prev – переход к предыдущей
записи.
В предыдущем примере мы во время разработки установили свойство Active таблицы в True. Однако нередко бывает, что открывать и
закрывать таблицу приходится программным путем. Таким образом, для
открытия таблицы мы можем использовать свойство Active или методы Open
и Close, которые делают одно и то же:
//открываем таблицы: Table1.Open; Table2.Active := True; //закрываем таблицы: Table1.Close; Table2.Active := False;
Эти свойства приходится использовать довольно часто, чтобы выяснить
номер текущей записи или общее количество записей (строк) в таблице. возвращает целое число, показывающее общее количество
записей, а – номер текущей записи.
Давайте улучшим наш проект, указав какая запись является текущей, и
каково общее количество записей. Откройте предыдущий проект. Событие onDataChange компонента DataSource возникает всякий раз, когда
происходят изменения в данных таблицы. Например, перемещение от одной
записи к другой. Однако, компонент Label, в который нам нужно
прописать эти данные, находится в главном окне, а компонент DataSource
– в окне DM. Так что придется открыть модуль DM, и использовать
команду File -> Use Unit, в которой указать главное окно fMain.
Теперь выделите компонент DataSource и сгенерируйте для него
событие onDataChange. В коде этого события запишем:
fMain.Label1.Caption := 'Позиция: ' +
IntToStr(Table1.RecNo) + ' из ' +
IntToStr(Table1.RecordCount);
Как видите, мы использовали оба новых свойства. В результате при загрузке программы должна получиться строка, вроде такой:
Позиция: 1 из 28
Наш "БД – Навигатор" полностью работоспособен. Можете закрыть этот проект, больше он нам не потребуется.
Наиболее простой способ создать собственную таблицу –
воспользоваться встроенной утилитой Delphi – Database Desktop. Однако
для начала создайте новое приложение. Форму сразу переименуйте в fMain, модуль сохраните под именем Main, а проект – CatBooks. Мы будем
делать каталог книг для библиотеки. В свойстве Caption формы можете
написать "Библиотечный каталог". Теперь с помощью файлового менеджера
создайте на диске D: (Если D: диска у вас нет, то на диске C:) еще
одну папку – Data (данные). Таким образом, адрес нашей базы данных
будет d:\data.
Теперь запускайте утилиту Database Desktop, которая находится там
же, где Delphi. Эта программа – не просто браузер БД, она еще
позволяет создавать таблицы и индексные файлы. Сейчас выберем команду
File – New – Table. Появится окошко, в котором можно выбрать формат
создаваемой таблицы. Откройте список – он довольно внушителен. Таблицы
формата dBase наиболее распространены, однако они очень уязвимы и не
имеют большого разнообразия типов полей. Поэтому оставим формат по
умолчанию –
Field Name указать название поля (колонки).Type выбрать тип поля. Для этого достаточно нажать пробел, чтобы открылся список всех полей.Size указывается длина строк в символах. Если Вы выбрали, к примеру, дату, то это поле недоступно для редактирования, поскольку у всех записей будет фиксированная длина.Key позволяет указать ключевое поле. Для этого тоже достаточно нажать пробел. Установка на поле ключа приводит к тому, что все записи таблицы будут сортироваться по этому полю. Например, если установить ключ у поля "Фамилия", то все записи отсортируются по фамилиям, от А до Я. Если ключа нет, то записи будут в том порядке, в каком их ввели в таблицу.| Тип | Буква | Описание |
|---|---|---|
| Alpha | A | Строка от 1 до 255 символов. Размер поля указывается в Size. |
| Number | N | Целое число от -10307 до 10308 (15 значащих цифр) |
| $ Money | $ | Число в денежном формате. |
| Short | S | Короткое целое от -32768 до 32767 |
| I | Длинное целое от -2147483648 до 2147483647 | |
| Date | D | Дата |
| Time | T | Время с полуночи в миллисекундах |
| Timestamp | @ | Дата и время |
| Memo | M | Строковое поле неограниченной длины. В разделе Size можно указать длину от 1 до 240 символов, остальные символы хранятся в файле с таким же именем, но расширением mb. |
| Formated Memo | F | Как Memo, но также имеются дополнительные возможности: указать тип и размер шрифта, цвет символов, способ оформления… |
| Graphic | G | Графический файл сохраняется прямо в поле. |
| Logical | L | Логический тип. |
| $$\pm$$ Autoincrement | + | Целое число, увеличивающееся на единицу автоматически, при добавлении новой записи (счетчик). |
| Bytes | Y | Двоичные данные. |
| Binary | B | Двоичные данные. Как и Memo, хранятся в отдельном файле. Обычно содержат аудио- или видео-данные. |
Итак, вводим такие поля:
| Field Name | Type | Size | Key | |
|---|---|---|---|---|
| 1 | Key1 | + | ||
| 2 | Avtor | I | ||
| 3 | Nazvanie | A | 100 | |
| 4 | Exemp | S | ||
| 5 | Cena | $ | ||
| 6 | Date | D | ||
| 7 | Prim | M | 200 |
Теперь нажмите кнопку "Save As", файл назовите books и сохраните его в папке d:\data. Здесь будут храниться данные о книгах. Поле с автором мы установили как целое. Позже мы сделаем еще одну таблицу, и в ней будем вести учет всех авторов. И обе таблицы у нас будут объединены. Теперь, если вы взгляните на папку d:\data, то обнаружите там два файла:
Вот теперь настало время создать приложение, которое будет работать
с этой таблицей. Главная форма у нас уже есть, так что сразу создаем
модуль данных (File – New – Data Module). В свойстве Name напишите , а сам модуль сохраните как DM. Сразу же перейдите на главную
форму и с помощью File – Use unit свяжите ее с DM.
Теперь устанавливаем на DM компонент Table с вкладки DatabaseName компонента впишите адрес нашей базы: "d:\data".
В свойстве TableName выберите нашу таблицу books.db. Изменим имя
таблицы, и укажем TBooks в свойстве Name компонента Table1. Так как у
нас в приложении будет более одной таблицы, желательно каждой из них
дать осмысленное имя, чтобы потом не запутаться.
Сразу же устанавливаем на DM компонент DataSource с вкладки Data
Access. Имя компонента изменим на DS1, чтобы было покороче. В свойстве DataSet выберем нашу таблицу.
Переходим на главную форму. Устанавливаем главное меню и создаем такие пункты:
Теперь установим панель, свойству Align присвоим alTop, чтобы она
заняла весь верх, свойство Caption очистим и бросим на нее два
компонента Label, один под другим. На первой напишем: "Всего книг:",
на второй – "На общую сумму:". Как следует из названий, эти данные мы
будем выводить на панель.
Ниже устанавливаем сетку с вкладки Data Controls. Свойство Align переведем в alClient. В свойстве DataSource выберем наш DS1.
Свойство ReadOnly переведем в True, так как для редактирования данных
у нас будут другие инструменты, сетка нужна только для просмотра.
Теперь переходим на окно DM, выделяем компонент с таблицей и
открываем ее, установив Active в True. На главной форме сетка должна
отображать данные таблицы, пока еще пустые.
Однако заголовки столбцов не очень привлекательны с точки зрения
клиента. Исправим это. Выделите таблицу TBooks, и дважды щелкните по
нему. Должно появиться окно
(рис 30.1) Окно редактора полей компонента TableТеперь щелкните правой кнопкой по этому окну и выберите команду Add all fields (добавить все поля).
Выделяем поле Key1. Оно нам нужно только как счетчик записей, так
что пользователю его можно не отображать. Спрячьте его, установив его
свойство Visible в False. Поле исчезло с сетки, но не потерялось – оно
по-прежнему присутствует в таблице.
Далее выделите поле Avtor. Здесь нас интересуют два свойства: и DisplayWidth. Первое отвечает за выводимый текст
названия колонки, напишите здесь "Автор". Второе отвечает за ширину
колонки. Установите 5, так как у нас здесь будут только цифры.
У поля Nazvanie измените выводимый текст на "Название книги".
У поля Exemp измените выводимый текст на "Кол-во экз.".
У поля Cena измените выводимый текст на "Цена".
У поля Date измените выводимый текст на "Дата пост.".
Наконец, поле Prim должно содержать аннотацию к книге, но поскольку
это поле типа Memo, то в сетке оно все равно не выйдет. Поэтому
спрячьте это поле, также как поле Key1.
Поскольку наше приложение должно еще уметь подставлять фамилию автора книги вместо цифры, нам нужно сделать еще одну таблицу. Снова запустите утилиту Database Desktop. Дальше все, как и в прошлый раз: File – New – Table. Тип таблицы Paradox 7.
Первое поле назовите Key2. В принципе, как именно мы назовем ключ,
особой разницы нет, просто мы его так назвали, чтобы не путать с
первым ключом. Итак, тип поля – Autoincrement.
Второе поле назовите FIO, тип – Alpha, размер – 30 символов. Больше
полей нам не требуется. Конечно, можно было бы сделать отдельные поля
на фамилию, на имя и отчество, однако такие усложнения займут больше
времени и не добавят новых знаний, так что их не стоит делать в
учебной программе.
Нажимаем кнопку "Save as", имя таблице даем avtors, а папку для таблицы – "d:\data". Можно выходить из утилиты, таблица уже существует.
Теперь нам потребуется форма для редактирования авторов, а также
еще по одному компоненту Table и DataSource. Вначале бросьте эти
компоненты в окно DM. Таблицу переименуйте в TAvtors, а DataSource – в
DS2.
Далее, у таблицы в свойстве DatabaseName напишите адрес нашей базы
данных – d:\data, а в свойстве TableName выберите таблицу
avtors.db.
У компонента DS2 в свойстве DataSet выберите компонент TAvtors.
Теперь приступаем к форме редактирования авторов. Создаем новую
форму, переименовываем ее в fAvtors, в свойстве Caption пишем
"Авторы", свойство BorderStyle переводим в bsDialog, с помощью File –
Use Unit добавляем к форме модуль DM. Теперь сохраняем форму под
именем Avtors.
Далее, устанавливаем на форму следующие компоненты:
Label – напишите на ней следующий текст: "Впишите Фамилию И.О.
автора:"
Обычный Edit. Очистите у него свойство Text, а в свойстве MaxLength
(максимальная длина) укажите 30. Именно такой размер мы указали у поля
FIO при проектировании таблицы.
Ниже устанавливаем две кнопки, на которых пишем: "Добавить" и "Удалить текущую запись".
Еще ниже – сетку , в свойстве DataSource которой нужно
выбрать DS2. Все, приготовления окончены, можно переводить таблицу TAvtors в активное состояние ( Active переводим в True ). У вас должна
получиться форма вроде этой:
(рис 30.2) Внешний вид формы авторовКнопку "Добавить" сделайте пока недоступной. Мы будем давать
пользователю доступ к ней тогда, когда он что-нибудь введет в поле Edit.
Теперь так же, как мы редактировали названия полей в первой
таблице, сделайте это во второй. Поле Key2 прятать не нужно, просто в
заголовке столбца укажите "№". А в заголовке второго столбца –
"Фамилия И.О.".
Перед тем, как продолжить создание нашего библиотечного каталога, необходимо познакомиться с методами редактирования данных таблицы. Но об этом мы поговорим уже на следующей лекции.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.