Задание. Выполните все последующее.
Создайте базу данных формата DBF с индексным файлом MDX, в Access, содержащую не менее 5000 записей с русскими или английскими словами и не менее двух полей.
Как это сделать: Например, в Microsoft Word в данном тексте заменить (автоматически) пробелы на концы строк, сохранить как текст, импортировать в Access с фиксированной шириной полей, сделать индекс, экспортировать.
Создайте модуль данных в Delphi.
Как это сделать: Запустите Delphi, создайте новый проект, в меню выберите последовательно «File», «New (Create)», «Data Module».
Для события модуля OnCreate установите процедуру DateModuleCreate.
Как это сделать: Сделайте видимым окно Инспектора объектов (нажимая F11), выберите в нем вкладку «Events», введите имя процедуры напротив OnCreate, нажмите Enter.
Пример текста процедуры:
Session.ConfigMode := cmSession;
try Session.AddStandardAlias(‘Words’, 'D:\','PARADOX');
// где Words - псевдоним БД, D:\ - путь к файлам БД
finally Session.ConfigMode := cmAll; end;
Можно изменить пути и псевдонимы, если необходимо. В разделе текста программы «Uses» добавьте DB, DBTables.
Поместите в модуль данных компонент SQL со знаком вопроса (с панели BDE). Выполните запрос SQL, создав сначала форму, выведите результат.
Как это сделать: Поместите на форму текстовое поле Edit1 и кнопку Button1 со стандартной панели. Дважды щелкните на кнопку и введите в текст программы, например:
var ks:integer;
begin
DataModule2.Query1.Close;
DataModule2.Query1.SQL.Clear;
DataModule2.Query1.SQL.Add('SELECT * FROM ":Words:'+table1.dbf’+'"');
DataModule2.Query1.SQL.Add('WHERE');
DataModule2.Query1.SQL.Add('(OSN LIKE "'+ edit1.text + {'%'+ }'")');
DataModule2.Query1.Open;
ks:=DataModule2.Query1.RecordCount;
if ks>0 then begin
button1.caption:= DataModule2.Query1.Fields[1].AsString; end end;
Здесь таблица, содержащая индексированное поле для поиска – OSN (можно переименовать); table1.dbf – имя файла; псевдоним базы данных – Words; второе поле (Fields), выводимое на кнопку, имеет номер 1, так как нумерация с 0; ks – количество найденных строк, отвечающих условию запроса. При первом запуске программы на вопрос о добавлении в список Use выбрать ответ Yes. Программа ищет в БД введенную в текстовое поле строку, и если находит, выводит результат как надпись на кнопке.
Поместите на форму компоненты DBGrid1 с панели Data Controls, DataSource1 с панели Data Access, Table1 с панели BDE (этот компонент можно, но не обязательно поместить в модуль данных). Свойство TableName компонента Table1 установите в имя имеющегося файла базы данных, например, «d:\table1.dbf», свойство Active – True. Выберите из списка свойства DataSet компонента DataSource1 «Table1». Выберите из списка свойства DataSource компонента DBGrid1 «DataSource1». На форме должна отобразиться таблица с данными.
Поместите на форму компонент DBNavigator1 с панели Data Controls. Выберите из списка свойства DataSource этого компонента также «DataSource1». Запустите программу, перемещайтесь по таблице, создавайте и удаляйте записи таблицы с использованием компонента DBNavigator1.
Добавьте на форму кнопку и поле Edt1. Напишите процедуру обработки нажатия кнопки для поиска номера записи с содержимым, вводимым в поле Edt1. Нечетные варианты:
procedure TForm1.btn1Click(Sender: TObject);
var i:Integer; begin i:=0; table1.Open; // открыть таблицу
table1.First; // переход в начало таблицы
while not(table1.eof) do // пока не достигнут конец таблицы
begin i:=i+1; // увеличить номер
if table1.FieldByName('CHRECHISH').AsString=edt1.Text then
// если содержимое поля CHRECHISH равно введенному
ShowMessage(IntToStr(i)); // вывод сообщения о номере
table1.next; // переход на следующую строку таблицы
end; table1.Close; // закрыть таблицу end;
Четные варианты:
procedure TForm1.btn2Click(Sender: TObject);var b:Boolean begin
b:=table1.locate('CHRECHISH',edt1.Text,[]) // имя поля CHRECHISH
table1.edit;//разрешить редактровать запись
Table1.Fields[1].AsString:= Table1.Fields[1].AsString+’1’;//добавить ‘1’
Table1.Post;// внести изменения
end;
Запустите программу и проверьте её работу.
Для шифрования базы данных создайте таблицу формата Paradox 7 (имеющую расширение DB). Для этого запустите Database Desktop (в «Пуск», «Все программы», «Borland Delphi 7» или «Borland C++ Builder 6»). Затем File, New, Table, «ОК». Введите имя поля в столбце «Field Name», тип в «Type» (например, А – символы), размер в «Size», например, 10, можно, но необязательно, сделать его ключевым (Key). В списке «Table Properties» (Свойства таблицы) выберите пароль (Password Security) и нажмите кнопку Define (Определить). В появившемся окне введите пароль и подтверждение, нажмите «ОК». Затем сохраните таблицу, нажав кнопку «Save As» и выбирая папку и вводя имя файла. Откройте полученную таблицу в Database Desktop (выбирая File, Open, Table). В меню выберите Table, Edit Data (редактировать) и введите несколько строк. Закройте таблицу. В Delphi измените свойство TableName компонента Table1 на соответствующее данной таблице, сохраните все и перезапустите Delphi. Загрузите последний проект и после ввода пароля появится содержимое зашифрованной таблицы. Нужен доступ к C:\ .
Контрольные вопросы. Какие типы полей предлагает формат Paradox? Какие события могут быть для модуля данных? В чем различия компонентов DBGrid1 и DBNavigator1? Что делает метод Locate языка Delphi, а что ключевое слово SELECT языка SQL (в чем сходства и отличия)?
Список рекомендуемой литературы
1. В. В. Фаронов Программирование баз данных в Delphi 7: Питер / Фаронов В. В. - СПб.: Питер, 2006. - 458с.: ил. - (Учебный курс).
2. В.В. Фаронов Система программирования Delphi. / Фаронов В. В. СПб.: БХВ-Петербург, 2003. 912 с.
ПостРеляционные базы данных
Лабораторная работа 5
Первый пример Cache. Отладчик Caché Studio
Теория. В данной работе используется постреляционная СУБД Cache для получения простейших навыков работы с этой системой и знакомства с языком программирования Caché Object Script.
Задание. Рассмотрим в качестве примера простой класс Person. Типичные свойства физического лица – фамилия, имя и дата рождения. Всю техническую работу, связанную с организацией хранения и поиска лиц в БД, мы поручим Cache, кроме того, предусмотрим запрос по выбору физических лиц.
Студия
Теперь, для того чтобы определить этот класс объектов, запустим Студия. Правой кнопкой мыши необходимо щелкнуть по Cache-кубу. Появится перечень ранее определенных соединений с серверами Cache. Выбрав единственное имеющееся соединение Local, щелкните по кнопке Соединиться.
На экране высветится главное окно Студия, демонстрирующее иерархию классов, но пока что пустое.
Создание определения класса
Создание нового класса поддерживается мастером. Щелкните по значку Новый класс. На экране появится Мастер создания классов. Определение нового класса начинается с задания его имени и описания.
Имя класса – Person, сопроводите его кратким описанием (пакет User, используемый по умолчанию, нам вполне подходит, можно не изменять). Если затем вы щелкните по Вперед, то попадете на следующий экран, где устанавливается тип класса.
Выбирайте тип класса Persistent (Хранимый), чтобы Cache обеспечивала автоматическое сохранение и поиск объектов этого класса. Подтвердите решение о завершении работы нажатием на кнопку Закончить. Мастер классов создал новый класс, видимый и в иерархии классов в главном окне Студия.
Создание свойств
Теперь, для того чтобы определить свойства класса, щелкните по значку Новое свойство. Откроется окно определения нового свойства.
Начнем с сохранения свойства – фамилии физического лица. Введите Surname (Фамилия) в поле Имя свойства. Оставьте тип данных %Library.String, а под заголовком Характеристики установите флажок Обязательное: физических лиц без фамилии не бывает. После подтверждения кнопкой ОК будет создано новое свойство. Теперь, действуя аналогичным образом, определите свойства Name (Имя) – однако без характеристики Обязательное – и DateOfBirth (дата рождения) – свойство типа %Library.Date (Дата). Таким образом, определения класса приобретет нужный вид.
Создание запроса
Перейдем к определению нового запроса. Его назначение – осуществлять поиск всех физических лиц, информация о которых занесена в базу данных, с возможностью выбора того или иного лица для обработки данных. Щелчком по значку Новый запрос открывается Мастер запросов.
Для начала запросу следует присвоить имя, назовем его Wybor (выбор) и введем краткое описание. Щелчком по Вперед вы переходите к следующему шагу – определению параметров запроса, который сейчас нам не интересен, и мы минуем его с помощью Вперед. На следующем этапе устанавливаются поля, возвращаемые запросом.
Слева перед вами список всех свойств класса объектов и дополнительное поле ID. Выделите одно за другим поля ID, SurName, Name, DateOfBirth и щелкните по кнопке со значком Стрелка вправо. Тем самым вы перенесете эти поля в правый список выбранных полей. Если вы готовы, щелкните снова по Вперед.
Опустив следующий шаг, когда задается условие запроса, перейдем с помощью кнопки Вперед к выбору последовательности сортировки.
Сортировка выбранных физических лиц должна осуществляться в алфавитном порядке, поэтому из списка под заголовком Упорядочить по выберем поле SurName. Осталось только завершить создание запроса, щелкнув по кнопке Закончить. Теперь в главном окне Студия можно определение класса с тремя свойствами и одним запросом.
Компиляция
Прежде чем появится возможность использования нового класса в Cache, на последнем этапе необходимо провести его компиляцию. Щелкните для этого по кнопке Компил.класс, и через некоторое время вы увидите следующее итоговое сообщение:
Компиляция завершена
На этом определение класса в Студия завершено, и новый класс Person готов к применению.
Отладчик Caché Studio позволяет Вам пошагово выполнять программы запущенные на сервере Caché. Эти программы могут включать в себя файлы INT, MAC, методы внутри файлов CLS, классы CSP соответствующие требованиям HTTP, методы server-side invoked из клиентов Java или ActiveX, или приложения server-hosted.
Вы можете подсоединить отладчик к целевому процессу одним из следующих путей:
· Определяя цель отладки (имя программы или подпрограммы для отладки) для текущего проекта используя Проект > Параметры и затем выбирая Отладка > Старт чтобы стартовать целевую программу и подсоединиться к ее серверному процессу.