ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.05.2021
Просмотров: 847
Скачиваний: 3
СОДЕРЖАНИЕ
Работа с переменными и массивами
Настройка компонента TStringGrid
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
Nmax=10; // Максимальная размерность массива
A : Mas2; // Объявление двумерного массива
B,Y : Mas1; // Объявление одномерных массивов
procedure TForm1.FormActivate(Sender: TObject);
{Процедура подготовки к началу работы}
N:=3; // Задание размерности массива
Edit1.Text:=IntToStr(N); // Вывод значения N в Edit1
{Задание числа строк и столбцов в таблицах}
{Ввод в левую верхнюю ячейку таблицы названия массива}
StringGrid1.Cells[0,0]:='Массив A:';
StringGrid2.Cells[0,0]:='Массив B:';
StringGrid3.Cells[0,0]:='Массив Y:';
{Заполнение верхнего и левого столбцов поясняющими подписями}
StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
procedure TForm1.Button1Click(Sender: TObject);
{Процедура изменения размерности массива}
ShowMessage('Ошибочная запись числа '+Edit1.Text);
{Задание числа строк и столбцов в таблицах}
{Заполнение верхнего и левого столбцов поясняющими подписями}
StringGrid1.Cells[0,i]:=' i= '+IntToStr(i);
StringGrid1.Cells[i,0]:=' j= '+IntToStr(i);
procedure TForm1.BitBtn1Click(Sender: TObject);
{Заполнение массива А элементами из таблицы StringGrid1}
if StringGrid1.Cells[j,i]=' ' then
ShowMessage('Ошибка заполнения массива А');
A[i,j]:=StrToFloat(StringGrid1.Cells[j,i]);
ShowMessage('Ошибочная запись числа '+StringGrid1.Cells[j,i]);
{Заполнение массива B элементами из таблицы StringGrid2}
if StringGrid2.Cells[0,i]=' ' then
ShowMessage('Ошибка заполнения массива В!');
B[i]:=StrToFloat (StringGrid2.Cells[0,i]);
ShowMessage ('Ошибочная запись числа '+StringGrid2.Cells[0,i]);
{Умножение массива А на массив В}
{Вывод результата в таблицу StringGrid3}
StringGrid3.Cells[0,i]:=FloatToStrf(y[i],fffixed,6,2);
procedure TForm1.BitBtn2Click(Sender: TObject);
{Очищение всех ячеек таблиц перед очередным прогоном программы}
Создание приложений для работы с базами данных На ОСНОВЕ ТЕХНОЛОГИИ bde
Рис. 9.- Расположение компонентов на форме
Рис. 10.- Рабочее окно программы
Для упорядочивания данных используется понятие индекса. Индекс показывает, в какой последовательности желательно просматривать таблицу. Индексы представляют собой наиболее эффективное средство, которое позволяет значительно ускорить поиск данных в таблицах, по сравнению с таблицами, не содержащими индексов, за счет поиска и сортировки записей по одному (или нескольким в случае использования составного индекса) полю таблицы. Уникальные индексы могут использоваться в качестве первичных ключей. Индексы являются как бы посредниками между пользователем и таблицей.
Индексы могут быть первичными и вторичными.
Например, первичным индексом могут служить поля, отмеченные при создании базы данных как ключевые. А вторичные индексы могут создаваться из других полей как в процессе создания самой базы данных, так и позднее в процессе работы с ней. Вторичным индексам присваиваются имена – идентификаторы, по которым их можно использовать. База данных обычно содержит не одну, а множество таблиц. Например, база данных о некоторой организации может содержать таблицу Deps имеющихся в ней подразделений с характеристикой каждого из них (табл. 2).
В связанных таблицах обычно одна выступает как главная, а другая или несколько других - как вспомогательные, управляемые главной. Главная и вспомогательные таблицы связываются друг с другом ключом. В качестве ключа могут выступать какие-то поля, присутствующие в обеих таблицах.
Таблица 2
Таблица подразделений Deps с характеристикой каждого из них
Отдел |
Тип |
Dep |
Proisv |
Бухгалтерия |
управление |
Цех 1 |
производство |
Цех 2 |
производство |
Например, таблица Deps может быть главной, а вспомогательной- Pers. Связываться они могут по полю Dep, присутствующему в обеих таблицах.
Каждой записи в главной таблице Deps соответствуют те записи вспомогательной таблицы Pers, в которых ключевое поле Dep с названием отдела совпадает с названием отдела в текущей записи главной таблицы. Иначе говоря, если в текущей записи главной таблицы в поле Dep написано «Бухгалтерия», то во вспомогательной таблице Pers выделяются все записи сотрудников бухгалтерии.
Создают базы данных и обрабатывают запросы системы управления базами данных – СУБД: Paradox, Microsoft Access, FoxPro, Oracle, InterBase и т.д.
Разные СУБД по-разному организуют и хранят базы данных. Paradox использует для каждой таблицы один файл. В Microsoft Access и InterBase несколько таблиц хранятся как один файл. В этом случае база данных–это имя файла с путем доступа к нему. Системы типа клиент/сервер (Sybase, Microsoft SQL, Oracle) хранят все данные на отдельном компьютере и общаются с клиентом посредством специального языка – SQL.
Для упорядочения обращения к базам данных используют псевдонимы баз данных. Псевдоним (alias) содержит всю информацию, необходимую для обеспечения доступа к базе данных. Эта информация сообщается только один раз при создании псевдонима. Алиас сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации. Поэтому использование алиасов позволяет легко переходить от локальных баз данных к SQL-серверным базам (естественно, при выполнении требований разделения приложения на клиентскую и серверную части).
Средства Delphi, предназначенные для разработки и эксплуатации приложений, использующих базы данных
BDE (Borland Database Engine) – машина баз данных Borland. Представляет собой набор DLL-библиотек, обеспечивающих низкоуровневый доступ к локальным и клиент-серверным БД. Должна устанавливаться на каждом компьютере, который использует приложения для работы с БД, написанные для Delphi.
SQL Links–драйверы для работы с удаленными серверами данных (MS SQL Server, Oracle)
Database Desktop (DBD) – средство для создания, изменения и просмотра БД. Эта утилита, прежде всего, ориентирована на работу с таблицами локальных СУБД, например Paradox. Можно с некоторыми ограничениями создавать и просматривать таблицы баз данных, работающих под управлением серверов: InterBase, MS SQL Server, Oracle.
DBD дает программисту возможность сформировать запрос к БД методом QBE (Query By Example – запрос по образцу).
Создание и просмотр псевдонимов баз данных.
1. С помощью DBD (рис. 1).
Обычно вызов Database Desktop (DBD) включен в главное меню Delphi в раздел Tools. Если это не сделано можно включить его туда командой Tools|Configure Tools…(файл DBD32.exe).
DBD позволяет создавать таблицы баз данных некоторых СУБД, задавать и изменять их структуру.
В Delphi можно создавать и просматривать псевдонимы, выполнив команду Tools|Database Desktop|Tools|Alias Manager кнопка . При этом появляется окно Alias Manager (рис. 1.)
Рис.
1.- Alias
Manager
При выборе псевдонима в списке Database Alias автоматически изменяется тип драйвера в выпадающем списке
2.С помощью BDE Administrator (рис.2)
BDE Administrator(Пуск│Программы│Borland Delphi7│BDE Administrator)–утилита для установки псевдонимов (алиасов) баз данных, параметров БД и драйверов баз данных на конкретном компьютере. При работе с БД из приложения, созданного с помощью Delphi, доступ к базе данных производится по ее псевдониму. Параметры определяемой псевдонимом БД, действуют только для этой БД; параметры, установленные для драйвера БД, действуют для всех баз данных, использующих драйвер. Кроме того, можно произвести установку таких общих для всех БД параметров, как формат даты и времени, форматы представления числовых значений, используемый языковый драйвер и т.д.
После создания нового алиаса его имя появится в списке алиасов (рис.2). Однако просто создать алиас не достаточно. Нужно указать дополнительную информацию, содержание которой зависит от типа выбранной базы данных. Например, для баз данных Paradox и dBase (STANDARD), предназначенных для работы с локальными базами данных, требуется указать лишь путь доступа к данным:
TYPE |
STANDARD |
PATH |
D:\User\РГОТУПС\Лабораторные_информатика\БД |
SQL-сервер InterBase требует задания десяти параметров, многие из которых можно оставить установленными по умолчанию (кроме, обычно, параметров SERVER NAME и USER NAME).
Рис. 2.- BDE Administrator
3. С помощью Database Explorer (SQL Explorer)
Вызов этой программы производится из главного меню Delphi командой Пуск│Программы│Borland Delphi7│SQL Explore (рис.3).
SQL Explorer – универсальная утилита, совмещающая многие функции BDE Administrator и DBD. С ее помощью можно создавать и просматривать псевдонимы БД, просматривать структуры и содержимое таблиц БД, формировать запросы к БД на языке SQL, создавать словари данных (шаблоны полей таблиц).
SQL Monitor – средство для трассировки выполнения SQL-запросов.
Рис. 3.- Database Explorer (SQL Explorer).
Создание таблиц с помощью Database Desktop
Хотя для создания таблиц можно использовать различные средства (SQL-компонент TQuery и WISQL, компонент TTable), применение утилиты Database Desktop позволяет создавать таблицы в интерактивном режиме и сразу же просмотреть их содержимое - и все это для большого числа форматов. Это особенно удобно для локальных баз данных, в частности Paradox и dBase.
Database Desktop - это утилита, во многом похожая на Paradox, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных - Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links). Исполняемый файл утилиты называется DBD.EXE, расположен он, как правило, в директории, называемом DBD (при установке по умолчанию). Для запуска Database Desktop просто щелкните по ее иконке Пуск│Программы│Borland Delphi 7│ или выберите в главном меню Delphi в разделе Tools|Database Desktop.
После старта Database Desktop выберите команду меню File| New|Table для создания новой таблицы. Перед Вами появится диалоговое окно выбора типа таблицы, как показано на рис.7.4. Вы можете выбрать любой формат из предложенного, включая различные версии одного и того же формата.
Рис. 4. - Выпадающий список диалогового окна Table Type позволяет выбрать тип создаваемой таблицы
После выбора типа таблицы Database Desktop представит Вам диалоговое окно, специфичное для каждого формата, в котором Вы сможете определить поля таблицы и их тип, как показано на рис.5.
Рис. 5.-Database Desktop позволяет задать имена и типы полей в таблице
Имя поля в таблице формата Paradox представляет собой строку, написание которой подчиняется следующим правилам:
Имя должно быть не длиннее 25 символов.
Имя не должно начинаться с пробела, однако может содержать пробелы.
Если Вы предполагаете в будущем переносить базу данных в другие форматы, разумнее будет избегать включения пробелов в название поля. Фактически, в целях переносимости лучше ограничиться девятью символами в названии поля, не включая в него пробелы.
Имя не должно содержать квадратные, круглые или фигурные скобки [], () или {}, тире, а также комбинацию символов "тире" и "больше" (->).
Имя не должно быть только символом #, хотя этот символ может присутствовать в имени среди других символов. Хотя Paradox поддерживает точку (.) в названии поля, лучше ее избегать, поскольку точка зарезервирована в Delphi для других целей.
Имя поля в таблице формата dBase представляет собой строку, написание которой подчиняется правилам, отличным от Paradox:
Имя должно быть не длиннее 10 символов.
Пробелы в имени недопустимы.
Таким образом, Вы видите, что имена полей в формате dBase подчиняются гораздо более строгим правилам, нежели таковые в формате Paradox. Однако мы еще раз хотим подчеркнуть, что если перед вами когда-либо встанут вопросы совместимости, то лучше сразу закладывать эту совместимость - давать полям имена, подчиняющиеся более строгим правилам.
Укажем еще правила, которым подчиняется написание имен полей в формате InterBase.
Имя должно быть не длиннее 31 символа.
Имя должно начинаться с букв A-Z, a-z.
Имя поля может содержать буквы (A-Z, a-z), цифры, знак $ и символ подчеркивания (_).
Пробелы в имени недопустимы.
Для имен таблиц запрещается использовать зарезервированные слова InterBase.
Следующий (после выбора имени поля) шаг состоит в задании типа поля. Типы полей очень сильно различаются друг от друга, в зависимости от формата таблицы. Для получения списка типов полей перейдите к столбцу "Type", а затем нажмите пробел или щелкните правой кнопкой мышки. Приведем список типов полей, характерных для формата Paradox табл. 3.
Таблица 3.
Типы полей формата Paradox
Alpha |
строка длиной 1-255 байт, содержащая любые печатаемые символы |
Number |
числовое поле длиной 8 байт, значение которого может быть положительным и отрицательным. Диапазон чисел - от 10-308 до 10+308 с 15 значащими цифрами |
$ (Money) |
числовое поле, значение которого может быть положительным и отрицательным. По умолчанию, является форматированным для отображения десятичной точки и денежного знака |
Short |
числовое поле длиной 2 байта, которое может содержать только целые числа в диапазоне от -32768 до 32767 |
Long Integer |
числовое поле длиной 4 байта, которое может содержать целые числа в диапазоне от -2147483648 до 2147483648 |
# (BCD) |
числовое поле, содержащее данные в формате BCD (Binary Coded Decimal). Скорость вычислений немного меньше, чем в других числовых форматах, однако точность - гораздо выше. Может иметь 0-32 цифр после десятичной точки |
Date |
поле даты длиной 4 байта, которое может содержать дату от 1 января 9999 г. до нашей эры - до 31 декабря 9999 г. нашей эры. Корректно обрабатывает високосные года и имеет встроенный механизм проверки правильности даты |
Time |
поле времени длиной 4 байта, содержит время в миллисекундах от полуночи и ограничено 24 часами |
@ (Timestamp) |
обобщенное поле даты длиной 8 байт - содержит и дату и время |
Memo |
поле для хранения символов, суммарная длина которых более 255 байт. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (1-240)-остальные символы сохраняются в отдельном файле с расширением .MB |
Formatted Memo |
поле, аналогичное Memo, с добавлением возможности задавать шрифт текста. Также может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240)-остальные символы сохраняются в отдельном файле с расширением .MB. Однако Delphi в стандартной поставке не обладает возможностью работать с полями типа Formatted Memo |
Graphic |
поле, содержащее графическую информацию. Может иметь любую длину. Смысл размера - такой же, как и в Formatted Memo. Database Desktop "умеет" создавать поля типа Graphic, однако наполнять их можно только в приложении |
OLE |
поле, содержащее OLE-данные (Object Linking and Embedding)-образы, звук, видео, документы-которые для своей обработки вызывают создавшее их приложение. Может иметь любую длину. Смысл размера-такой же, как и в Formatted Memo. Database Desktop "умеет" создавать поля типа OLE, однако наполнять их можно только в приложении. Delphi "напрямую" не умеет работать с OLE-полями, но это легко обходится путем использования потоков |
Logical |
поле длиной 1 байт, которое может содержать только два значения – T (true, истина) или F (false, ложь). Допускаются строчные и прописные буквы |
+ (Autoincrement) |
поле длиной 4 байта, содержащее нередактируемое (read-only) значение типа long integer. Значение этого поля автоматически увеличивается (начиная с 1) с шагом 1-это очень удобно для создания уникального идентификатора записи (физический номер записи не может служить ее идентификатором, поскольку в Парадоксе таковой отсутствует. В InterBase также отсутствуют физические номера записей, но отсутствует и поле Autoincrement. Его с успехом заменяет встроенная функция Gen_id, которую удобней всего применять в триггерах) |
Binary |
поле, содержащее любую двоичную информацию. Может иметь любую длину. При этом размер, указываемый при создании таблицы, означает количество символов, сохраняемых в таблице (0-240)-остальные символы сохраняются в отдельном файле с расширением .MB. Это полнейший аналог поля BLOb в InterBase |
Bytes |
строка цифр длиной 1-255 байт, содержащая любые данные |
Организация работы с базами данных в Delphi
Имеются несколько основных компонентов (объектов), которые Вы будете использовать постоянно для доступа к БД. Эти объекты могут быть разделены на три группы:
-
невизуальные: TTable, TQuery и др.;
-
визуальные: TDBGrid, TDBEdit, DBNavigator и др.;
-
связующие: TDataSource.
Первая группа включает невизуальные классы, которые используются для управления таблицами и запросами. С помощью невизуальных компонентов осуществляется подключение к базам данных, формирование запросов к ним, манипулирование таблицами. Эта группа сосредотачивается вокруг компонент типа TTable, TQuery. В Палитре Компонент эти объекты расположены на странице BDE
Вторая важная группа классов - визуальные, которые показывают данные пользователю, и позволяют ему просматривать и модифицировать их. Визуальные компоненты служат основным инструментом разработки пользовательского интерфейса доступа к данным. Эта группа классов включает компоненты типа TDBGrid, TDBEdit, TDBImage, DBNavigator, TDBComboBox. В Палитре Компонент эти объекты расположены на странице Data Controls.
Имеется и третий тип, который используется для того, чтобы связать предыдущие два типа объектов. К третьему типу относится только невизуальный компонент TDataSource. В Палитре Компонент этот объект расположен на странице Data Access.
Ознакомьтесь с особенностями прикладных программных приложений, разработанных в среде Delphi, предназначенных для работы с БД (приложение П5).
Порядок выполнения задания
Задание: разработать простейший электронный ежедневник, содержащий следующую информацию:
дата, начальное и конечное время, комментарии, контактный телефон.
Реализовать простой и параметризованный запросы на основе данных таблицы ежедневника.
Создание таблицы базы данных
Создайте таблицу базы данных при помощи утилиты Database Desktop (см. инструкции выше) в формате Paradox рис. 6. Таблица должна содержать следующие поля табл. 4.
Таблица 4.
Поля таблицы базы данных MainData
Имя поля |
Тип данных |
Размер |
DateS |
Data |
|
FromTime |
Time |
|
ToTime |
Time |
|
Comment |
Alpha |
255 |
Phone |
Alpha |
255 |
Рис. 6.- Создание таблицы MainData с помощью утилиты Database Desktop
Сохраните таблицу под именем MainData ( рис. 6.), ключевые поля не задавайте. Введите в нее три записи. Для этого откройте созданную таблицу (File|Open|Table) и воспользуйтесь функцией Edit Data меню Table. Полученная таблица показана на рис. 7.
Рис. 7.-Таблица MainData
Создайте псевдоним (алиас) BD_DNEVNIK по одному из предложенных выше методов. Например, как показано на рис. 8.
Рис. 8. - Создание алиаса для базы данных
7.3.2. Создание программного модуля открытия и редактирования таблицы
Запустите Delphi. Создайте новый проект.
Расположите на форме следующие компоненты (страницы BDE, Data Access, Data Controls): Table1, DBGrid1, DataSource1, DBNavigator1 рис. 9.