Создание первой базы данных
Я уже устал говорить, что Delphi это мощный язык программирования. Я повторюсь, потому что работа с базами данных стала действительно простой только с появлением этого мощного языка программирования.
Я научу тебя эффективно работать с базами Paradox, которые отличаются большими возможностями и высокой производительностью. Для создания первой базы данных тебе понадобиться запустить Database Desktop, который входит в поставку с Delphi. После запуска выполни следующие действия:
Выбери меню File затем New и наконец Table
В появившемся окне, выбери из списка Paradox 7 .
Нажми "OK".
Можно сказать, что первая база данных готова. Теперь ты должен заполнить её поля, но сначала рассмотрим появившийся перед нами диалог.
Первая колонка - это номер по порядку. Database Desktop генерирует его автоматически и изменять ты его не можешь.
Имя поля. Здесь ты можешь называть свои поля как угодно.
Тип поля. Щёлкни в этой колонке правой кнопкой мыши и перед тобой появиться меню со всеми допустимыми типами, тебе необходимо только выбрать нужный.
Размер. Это размер поля. Не у всех типов полей можно менять размер, у большинства он задан жёстко. Размер в основном меняется у строковых типов (Alpha), бинарных (binary) и др.
Ключ. Если ты дважды щёлкнешь по этой колонке, то текущее поле станет ключевым, то есть по умолчанию по нему будет отсортирована вся таблица. Ключевыми могут быть только первые поля, то есть второе поле сможет быть ключевым только вместе с первым. Без ключевого поля невозможно добавлять новые записи в таблицу.
В качестве примера возьмём классический пример - приём заказов. Самое главное, это правильно представить себе и создать структуру базы данных. В нашем случае будет вестись учёт следующих полей:
ФИО Покупатель
Адрес
Дата заказа товара
Наименование заказанного товара
Количество заказанного товара
Теперь нужно продумать структуру. Если создать все эти поля в одной таблице, то будет не совсем эффективно. Если один и тот же покупатель возьмёт два товара, то у обеих строчек 1-е и 2-е поле будут содержать одинаковые данные. Будет лучше, если мы вынесем первые два поля в отдельную таблицу.
Итак, наша база данных будет состоять из двух таблиц. В первой будут следующие поля (после тире стоит тип поля, а в скобках размер):
Ключ 1 - autoincrement
ФИО Покупатель - alpha (размер 50)
Адрес - alpha (размер 50)
И соответственно 2-я:
Ключ 1 - autoincrement
Ключ 2 - Integer
Дата заказанного товара - date
Наименование заказанного товара - alpha (размер 20)
Количество заказанного товара - Integer
"Ключ 1" - это будет уникальное ключевое поле в обеих таблицах, поэтому поставь им значок ключевого. "Ключ 2" во второй таблице будет связан с "Ключ 1" из первой. Создай эти таблицы. Первую назови mast.db , а вторую child.db .
После того, как создашь вторую таблицу, ты должен сделать "Ключ 2" во второй таблице индексным, чтобы можно было связать две таблицы с помощью этого поля. Для этого нужно Для этого нужно из меню Table выбрать пункт Restructure . Перед тобой должно открыться окно.
В выпадающем списке Table properties выбери Secondary Indexes и нажми кнопку Define . Выбери свой второй ключ и перемести его в список Indexed fields . Можешь нажимать "OK". У тебя запросят имя индекса, введи, например hhh и снова жми "OK". После этого сохраняй таблицу. Индексы готовы, теперь перейдём к последнему этапу подготовки базы.
Запусти SQL Explorer .
Из меню Object нужно выбрать пункт New . Database driver name должен быть STAMDART . Жми "ОК". Это создаст новый Alias. Переименуй его в "Sales1".
Теперь в правой половине окна щёлкни по строке PATH. Перед тобой откроется окно выбора директории. Выбери ту, где находятся созданные нами таблицы и нажми "ОК". Для сохранения того, что ты навоял, выбери из меню Object пункт Apply .
Вот теперь мы готовы писать собственно программу. Поэтому сделай перерыв и после этого запускай Delphi.
Создай новый проект. Помести на него из палитры компонент "Data Access" два "DataSource" и два "TTable". Для первого "DataSource" установи свойство "DataSet" в Table1 , а у второго "Table2" . Теперь у Table1 измени следующие свойства (желательно в такой последовательности):
В "DatabaseName" выставь Sales1 (это Alias, который мы создали в SQL Explorer)
"TableName" выставь в "mast.db". Если ты всё правильно сделал, то имя этой базы будет в выпадающем списке этой строки.
"Active" выставь в TRUE .
То же самое сделай и с Table2, только в "TableName" выставь "child.db". После того как ты всё это сделаешь, из палитры компонент "DataControls" поставь на форму два "DBGrid". В свойстве "DataSource" у одной из них выставь DataSource1 , а у другой DataSource2 .
Уже можно запустить программу и убедиться, что всё работает. Но всё ещё не очень красиво, ведь таблицы ещё не связаны, и никому не нужно видеть ключи, да и подписи на английском. Щёлкни по "Table2", здесь у тебя должна находиться "child.db". В свойстве "MasterSource" выставь DataSource1 . После этого дважды щёлкни в поле "MasterFields", перед тобой откроется окно как на рис.5. В верхнем списке (Available Indexes) выбери имя, которое ты задал, когда индексировал Key2, в данном случае это "hhh". Теперь выдели Key2 в левом окне и Key1 в правом и нажми кнопку "Add". Нажимай "ОК" и снова ставь в свойствах этой таблицы "Active" в "true".
теперь дважды щёлкни по "Table2". Перед тобой откроется окошко. В этом окне щёлкни правой кнопкой мыши, и в появившемся меню выбери Add All Fields . После этого, все имена таблицы будут добавлены в это окно. В свойствах Key1 и Key2 установи "Visible" в FALSE . В свойстве поля "Data" установи "DisplayFormat" в dddddd , а "EditMask" в 99/99/9999 . У всех полей свойство "DisplayLabel" отвечает за имя отображающее в компонентах это поле, поэтому напиши здесь у всех нормальные русские именна.
После того, как закончишь с этой таблицей, проделай подобные операции со второй. Твоё первое приложение работающее с базой данных готово.
Мы сегодня создали не совсем простенькое приложение, и при этом не написали ни одной строчки кода. В следующем номере я продолжу тебя знакомить с возможностями Delphi при программировании баз данных
Я уже устал говорить, что Delphi это мощный язык программирования. Я повторюсь, потому что работа с базами данных стала действительно простой только с появлением этого мощного языка программирования.
Я научу тебя эффективно работать с базами Paradox, которые отличаются большими возможностями и высокой производительностью. Для создания первой базы данных тебе понадобиться запустить Database Desktop, который входит в поставку с Delphi. После запуска выполни следующие действия:
Выбери меню File затем New и наконец Table
В появившемся окне, выбери из списка Paradox 7 .
Нажми "OK".
Можно сказать, что первая база данных готова. Теперь ты должен заполнить её поля, но сначала рассмотрим появившийся перед нами диалог.
Первая колонка - это номер по порядку. Database Desktop генерирует его автоматически и изменять ты его не можешь.
Имя поля. Здесь ты можешь называть свои поля как угодно.
Тип поля. Щёлкни в этой колонке правой кнопкой мыши и перед тобой появиться меню со всеми допустимыми типами, тебе необходимо только выбрать нужный.
Размер. Это размер поля. Не у всех типов полей можно менять размер, у большинства он задан жёстко. Размер в основном меняется у строковых типов (Alpha), бинарных (binary) и др.
Ключ. Если ты дважды щёлкнешь по этой колонке, то текущее поле станет ключевым, то есть по умолчанию по нему будет отсортирована вся таблица. Ключевыми могут быть только первые поля, то есть второе поле сможет быть ключевым только вместе с первым. Без ключевого поля невозможно добавлять новые записи в таблицу.
В качестве примера возьмём классический пример - приём заказов. Самое главное, это правильно представить себе и создать структуру базы данных. В нашем случае будет вестись учёт следующих полей:
ФИО Покупатель
Адрес
Дата заказа товара
Наименование заказанного товара
Количество заказанного товара
Теперь нужно продумать структуру. Если создать все эти поля в одной таблице, то будет не совсем эффективно. Если один и тот же покупатель возьмёт два товара, то у обеих строчек 1-е и 2-е поле будут содержать одинаковые данные. Будет лучше, если мы вынесем первые два поля в отдельную таблицу.
Итак, наша база данных будет состоять из двух таблиц. В первой будут следующие поля (после тире стоит тип поля, а в скобках размер):
Ключ 1 - autoincrement
ФИО Покупатель - alpha (размер 50)
Адрес - alpha (размер 50)
И соответственно 2-я:
Ключ 1 - autoincrement
Ключ 2 - Integer
Дата заказанного товара - date
Наименование заказанного товара - alpha (размер 20)
Количество заказанного товара - Integer
"Ключ 1" - это будет уникальное ключевое поле в обеих таблицах, поэтому поставь им значок ключевого. "Ключ 2" во второй таблице будет связан с "Ключ 1" из первой. Создай эти таблицы. Первую назови mast.db , а вторую child.db .
После того, как создашь вторую таблицу, ты должен сделать "Ключ 2" во второй таблице индексным, чтобы можно было связать две таблицы с помощью этого поля. Для этого нужно Для этого нужно из меню Table выбрать пункт Restructure . Перед тобой должно открыться окно.
В выпадающем списке Table properties выбери Secondary Indexes и нажми кнопку Define . Выбери свой второй ключ и перемести его в список Indexed fields . Можешь нажимать "OK". У тебя запросят имя индекса, введи, например hhh и снова жми "OK". После этого сохраняй таблицу. Индексы готовы, теперь перейдём к последнему этапу подготовки базы.
Запусти SQL Explorer .
Из меню Object нужно выбрать пункт New . Database driver name должен быть STAMDART . Жми "ОК". Это создаст новый Alias. Переименуй его в "Sales1".
Теперь в правой половине окна щёлкни по строке PATH. Перед тобой откроется окно выбора директории. Выбери ту, где находятся созданные нами таблицы и нажми "ОК". Для сохранения того, что ты навоял, выбери из меню Object пункт Apply .
Вот теперь мы готовы писать собственно программу. Поэтому сделай перерыв и после этого запускай Delphi.
Создай новый проект. Помести на него из палитры компонент "Data Access" два "DataSource" и два "TTable". Для первого "DataSource" установи свойство "DataSet" в Table1 , а у второго "Table2" . Теперь у Table1 измени следующие свойства (желательно в такой последовательности):
В "DatabaseName" выставь Sales1 (это Alias, который мы создали в SQL Explorer)
"TableName" выставь в "mast.db". Если ты всё правильно сделал, то имя этой базы будет в выпадающем списке этой строки.
"Active" выставь в TRUE .
То же самое сделай и с Table2, только в "TableName" выставь "child.db". После того как ты всё это сделаешь, из палитры компонент "DataControls" поставь на форму два "DBGrid". В свойстве "DataSource" у одной из них выставь DataSource1 , а у другой DataSource2 .
Уже можно запустить программу и убедиться, что всё работает. Но всё ещё не очень красиво, ведь таблицы ещё не связаны, и никому не нужно видеть ключи, да и подписи на английском. Щёлкни по "Table2", здесь у тебя должна находиться "child.db". В свойстве "MasterSource" выставь DataSource1 . После этого дважды щёлкни в поле "MasterFields", перед тобой откроется окно как на рис.5. В верхнем списке (Available Indexes) выбери имя, которое ты задал, когда индексировал Key2, в данном случае это "hhh". Теперь выдели Key2 в левом окне и Key1 в правом и нажми кнопку "Add". Нажимай "ОК" и снова ставь в свойствах этой таблицы "Active" в "true".
теперь дважды щёлкни по "Table2". Перед тобой откроется окошко. В этом окне щёлкни правой кнопкой мыши, и в появившемся меню выбери Add All Fields . После этого, все имена таблицы будут добавлены в это окно. В свойствах Key1 и Key2 установи "Visible" в FALSE . В свойстве поля "Data" установи "DisplayFormat" в dddddd , а "EditMask" в 99/99/9999 . У всех полей свойство "DisplayLabel" отвечает за имя отображающее в компонентах это поле, поэтому напиши здесь у всех нормальные русские именна.
После того, как закончишь с этой таблицей, проделай подобные операции со второй. Твоё первое приложение работающее с базой данных готово.
Мы сегодня создали не совсем простенькое приложение, и при этом не написали ни одной строчки кода. В следующем номере я продолжу тебя знакомить с возможностями Delphi при программировании баз данных
Источник: www.hh-team.h14.ru
|