Lab 1-3_Delphi-Access (Лабораторная №1-3)

2017-12-28СтудИзба

Описание файла

Файл "Lab 1-3_Delphi-Access" внутри архива находится в папке "Лабораторная №1-3". Документ из архива "Лабораторная №1-3", который расположен в категории "". Всё это находится в предмете "банки данных" из 6 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "банки данных" в общих файлах.

Онлайн просмотр документа "Lab 1-3_Delphi-Access"

Текст из документа "Lab 1-3_Delphi-Access"

Лабораторная работа 1

Разработка Delphi – приложений для файл–серверных БД

Цель работы:

Приобретение навыков использования компонентов Delphi для разработки клиентских приложений для файл-серверных баз данных. Работа рассчитана на 3 занятия (12 часов).

1. Создать в Access базу данных «библиотека».

База данных содержит 4 таблицы: основная таблица – Library и три подстановочных – Students, Books и Subjects.

Поля таблиц для БД «библиотека»:

Students: ID, Surname, Group.

Subjects: ID, Subject, где:

Subject – тематика книги ( физика, математика, информатика)

Books: ID, Title, SubjectID, Number, где:

Number – количество поступивших в библиотеку экземпляров данной книги.

Library: ID, StudentID, BookID, Out, где:

Out – признак выдачи книги (1- выдана, 0 – возвращена).

Установить связи между таблицами.

Заполнить таблицы данными и проверить ссылочную целостность данных.

(Ввести не менее трех книг по каждому из трех предметов, не менее 5 записей в таблицу Students и не менее 10 записей в таблицу Library.)

  1. Создать новый проект в Delphi (сразу сохранить проект в папку c:\student\lab1).

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

по конкретным предметам. Библиотекарь делает запрос на выдачу списка книг, приобретенных библиотекой по данному предмету. Студент определяет, какую книгу из списка он хотел бы взять. Библиотекарь делает запрос на определения наличия указанной книги, и если такая книга имеется, то выдает ее студенту и добавляет в таблицу Library соответствующую запись, устанавливая поле Out в 1. При возврате книги предыдущая запись не удаляется (чтобы можно было проследить предысторию), а добавляется новая запись, в которой поле Out равно 0.

    1. Поменять название формы на «Лабораторная работа» ( свойство ‘Caption’).

  1. Создать новую форму, которая будет выполнять роль заставки :

File =>New=>Form

и подключить ее к проекту, добавив в модули Unit1 и Unit2, связанные с формами, операторы uses Unit2 и uses Unit1 соответственно.

Свойства формы:

BorderStyle = bsDialog - граница окна диалога.

FormStyle = fsStayOnTop - форма всегда показывается поверх других.

На форму добавить 2 элемента Label, в которые будет выводиться название лабораторной работы и Ваши ФИО и группа.

8. Добавить на первую форму меню.

Вкладка Standart:

MainMenu => Двойной щелчок для редактирования и создать два пункта меню:

Caption = «Исполнитель» => по нажатию открываем форму:

Form2.Show;

Caption = «Выход» => привязываем код: Form1.Close;

  1. Подключиться к БД.

Для подключения к БД из вкладки BDE окна Tool Palette (компоненты этой вкладки обеспечивают программам Delphi доступ к файлам баз данных различных форматов с помощью сервиса баз данных, предоставляемого Borland Database Engine) установить компонент связи с БД Database, щелкнуть на нем правой кнопкой и открыть Свойства=>Explore, на пустом поле слева по правой кнопке мыши выбрать ODBC Administrator и настроить ODBC.

Для этого в окне настройки ODBC => Пользовательский DSN=>Добавить выбрать драйвер для Access, затем указать путь к своей БД и имя источника данных (alias), например, library (имя пользователя и пароль не устанавливать).

Для любого компонента свойство Name – имя переменной в создаваемой программе, поэтому оно должно соответствовать правилам задания идентификаторов.

Установить свойства Database:

AliasName = <имя источника данных в ODBC> => выбрать из раскрывающегося списка

DatabaseName = <имя базы данных> => ввести с клавиатуры

Connected = True имеет смысл устанавливать в True на время разработки, позволяет не переподключаться к базе. Для работающего приложения свойство Connected устанавливается в true при запуске приложения.

Если свойство Connected не установилось в True, значит есть проблемы с подключением БД. Устраните эти проблемы перед переходом к следующему пункту задания.

5. Из вкладки BDE на форму добавить элементы:

Table

DatabaseName = <имя базы данных>: выбрать из раскрывающегося списка

AutoRefresh = True

ReadOnly = True

TableName = <имя таблицы>: выбрать из раскрывающегося списка

Active = True

Query –

DatabaseName = <имя базы данных>: выбрать из раскрывающегося списка

SQL.Strings = <запрос>: создайте SQL-запрос на выборку книг по заданной тематике.

Пример запроса (регистр может быть произвольным, уточнение таблиц при обращении к полям требуется при наличии одноименных полей):

SELECT Subject, Title, number

FROM Books, subjects

WHERE subjectID=subjects.ID and subject='Информатика'

Active = True

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

6. Из вкладки Data Access для каждого из элементов добавить компонент доступа к данным DataSource. Компонент DataSource1 связать с таблицей, а DataSource2 – с запросом.

Во время выполнения программы компоненты из вкладок BDE и Data Access не выводятся на экран. Поэтому не нужно заботиться о расположении их на форме.

7. Добавить на форму компоненты оформления:

Вкладка Win32:

PageControl: с двумя страницами, cоздаются по правой кнопке мыши => New Page

MonthCalendar - на первую страницу

Организуйте следующий алгоритм считывания даты из календаря.

После запуска программы календарь не виден. Он появляется на форме по нажатию кнопки (компонент SpeedButton ) . Значение, выбранное в MonthCalendar (свойство MonthCalendar1.Date) должно сохраняться в поле Text компонента MaskEdit (установить шаблон даты, для согласования форматов использовать функцию преобразования даты в строку - DateToStr() ). После считывания даты компонент MonthCalendar прячется с экрана. (MonthCalendar1.Visible:= False). Компоненты SpeedButton и MaskEdit находятся на вкладке Additional.

8. Добавить на форму компоненты работы с данными:

DBGrid – по одной на страницу, один компонент связать с DataSource1 (таблица), второй с DataSource2 (SQL - запрос).

Добавить подписи столбцов:

- в контекстном меню элемента DBGrid выбрать Columns Editor;

- в появившемся окне добавить новую колонку;

указать для свойства колонки FieldName - значение имени поля в таблице, для свойства Title -> Caption - произвольное имя колонки.

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

  1. Для реализации алгоритма выдачи книг используйте 2-ю страницу формы 1.

Добавьте на форму элемент Query:

SQL.Strings = <запрос> задайте запрос по двум таблицам базы.

Выполнить запрос: "Какие книги поступили в библиотеку по запрашиваемому учебному курсу". Этот запрос должен отличаться от первого наличием условия с параметром:

SELECT <имя_поля| список_полей> FROM < список_таблиц >

WHERE < имя_поля > { <,>,=} <:имя_параметра>

Добавьте компонент ComboBoxс его помощью можно выбирать значение параметра для созданного запроса из обычного списка, предварительно его заполнив (свойство Items).

Создайте для него обработчик события изменения поля (OnChange)

with Query1 do

begin

Close; {закрываем запрос}

ParamByName('t1').AsString:= ComboBox1.text; {передаем значение параметра; здесь t1 – имя параметра в запросе}

Open; {открываем запрос}

First; {ставим курсор на первую запись временной таблицы, которая является

результатом выполнения запроса }

end;

if Query1.RecordCount=0 then {проверка на существование запрашиваемых данных}

ShowMessage('В БД нет запрашиваемых данных' );

Установить свойство Value параметра t1 => String.

Для согласования форматов используйте, если требуется, функции преобразования данных:

IntToStr(N) – преобразует число N типа Integer в строку символов, содержащую символьное представление числа.

StrToInt(S) – преобразует строку S в целое число типа Integer.

10. Разработать процедуру для вычисления имеющегося в наличии количества экземпляров запрашиваемой книги, используя программный (не SQL – запрос) доступ к полям таблиц БД и полям компонента DBGrid , в который выведены результаты выполнения запроса.

Пример доступа к полям таблицы (данные берутся из текущей записи):

procedure TForm1.Button1Click(Sender: TObject);

var

x: real;

begin

Table2.Open;

while not Table2.EOF do

begin

if (Table2['code']='430')

and (Table2['date']= '12.07.08') then

begin

x:=Table2['value'];

Label1.Caption:=FloatToStr(x);

end;

table2.Next;

end;

Table2.Close;

end;

Пример доступа к полям компонента DBGrid ( Fields[0] –нулевая колонка):

id:= DBGrid1.Fields[0].value;

11. Для проверки правильности работы процедуры добавить на Вкладку1 компонент DBNavigator , вывести в DBGrid данные таблицы library, добавить в нее записи о приеме и выдачи книг и выполнить запрос на наличие книги.

12. Перенести (для тренировки) SpeedButton , MonthCalendar и MaskEdit со страницы 1 на форму 2, чтобы освободить место на странице 1 (для переноса использовать меню редактирования, функции Вырезать и Вставить ).

13. Добавить на страницу 1 таблицу (students) с элементами доступа и компонентами работы с данными (т.е. таблица должна просматриваться при запуске программы) и связать ее с имеющейся таблицей (library), для чего для подчиненной таблицы (students):

- установить в качестве значения свойства MasterSource имя DataSource первой таблицы;

- с помощью свойства MasterFields связать главное и подчиненное поля.

При перемещении по записям в компоненте, связанном с основной таблицей library, в компоненте, связанном с таблицей students, должна выводиться запись о студенте с индексом, указанным в текущей записи таблицы library.

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5166
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее