48614 (666080), страница 3

Файл №666080 48614 (Разработка приложений базы данных "Командировка") 3 страница48614 (666080) страница 32016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

По умолчанию компонент TTable может использовать все поля связанной с ним таблицы. Кроме того, Delphi позволяет разработчику модифицировать используемые поля, основанные на вычислениях, и устанавливать атрибуты для каждого поля. Чтобы запросить редактор полей компонента TTable, дважды щелкните на экземпляре TTable. Это вызовет появление диалогового окна, которое позволяет вам добавлять, удалять и определять новые поля. Заголовок окна содержит имя формы и таблицы.

Это диалоговое окно обеспечивает также простой доступ к компонентам TFields. Поля являются производными от типа TField, с некоторой специальной информацией о типе данных. Например, если одно из полей – строка, поле должно иметь тип TStringField. Подобно другим компонентам, поля имеют свойства и события. Одно из преимуществ такого подхода состоит в том, что разные поля в таблице могут иметь разные свойства. Это удобно при необходимости защитить одно из полей от изменений, но разрешить пользователю модифицировать другие поля. Чтобы реализовать это, нужно установить значение свойства ReadOnly для поля, которое нужно защитить, равным True. Большое количество свойств поля определяет, как должны выравниваться данные – справа, слева или по центру отображаемого поля. Например, свойство Alignment. Кроме того, для чисел с плавающей запятой может быть установлено значение Precision (точность), которое указывает, как должны округляться числа. Можно установить отображаемые имена полей, в частности, русские имена.

Перемещение по записям

Навигатор обеспечивает возможность перемещения по таблице.

Создание интерфейса

Для создания интерфейса в Delphi обычно используются различные визуальные компоненты.

В работе использовалось меню, а не постраничная организация. Всего одна форма используется для отображения таблиц в зависимости от выбора пользователя. В некотором роде это переключение между таблицами на одной форме.

procedure TOsnForma. Rabotnik1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Работник';

Tag:=1;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Работник';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=false;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=true;

Detali1. Enabled:=true;

end;

procedure TOsnForma. DenSredstva1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Денежные средства';

Tag:=2;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Денежные средства';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=false;

Documenty1. Enabled:=true;

Detali1. Enabled:=true;

end;

procedure TOsnForma. Documenty1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Сопроводительные документы';

Tag:=3;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Сопроводительные документы';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=false;

Detali1. Enabled:=true;

end;

procedure TOsnForma. Detali1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Детали, инструменты';

Tag:=4;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Детали, инструменты';

Komandirovka1. Enabled:=true;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=true;

Detali1. Enabled:=false;

end;

procedure TOsnForma. Komandirovka1Click (Sender: TObject);

begin

OsnTable. Active:=false;

OsnTable. TableName:='Командировка';

Tag:=5;

Redakt;

OsnTable. Active:=true;

OsnForma. Caption:='Командировка';

Komandirovka1. Enabled:=false;

Rabotnik1. Enabled:=true;

DenSredstva1. Enabled:=true;

Documenty1. Enabled:=true;

Detali1. Enabled:=true;

end;

Создание приложений, позволяющих редактировать, сортировать, находить необходимые данные

Редактирование осуществляется следующими процедурами программы

procedure TOsnForma. Redaktioravt1Click (Sender: TObject);

begin

Redakt;

RedForm. ShowModal;

end;

procedure TOsnForma. Redakt;

begin

case Tag of

1: with RedForm do begin

Label1. Caption:='Номер документа';

Label2. Caption:='ФИО';

Label3. Caption:='Должность';

Label4. Caption:='Телефон';

Label5. Caption:='Название отдела';

Label6. Caption:='Специализация';

Label7. Visible:=false;

DBEdit1. DataField:='№ документа';

DBEdit2. DataField:='ФИО';

DBEdit3. DataField:='Должность';

DBEdit4. DataField:='Телефон';

DBEdit5. DataField:='Название отдела';

DBEdit6. DataField:='Специализация';

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

DBEdit6. Visible:=true;

Label6. Visible:=true;

end;

2: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Суточные';

Label3. Caption:='Оплата проезда';

Label4. Caption:='Оплата труда';

Label5. Caption:='Количество человек';

Label6. Caption:='Итого';

Label7. Visible:=false;

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='Суточные';

DBEdit3. DataField:='Оплата проезда';

DBEdit4. DataField:='Оплата труда';

DBEdit5. DataField:='Количество человек';

DBEdit6. DataField:='Итого';

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

DBEdit6. Visible:=true;

Label6. Visible:=true;

end;

3: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Номер документа';

Label3. Caption:='Название';

Label4. Caption:='Дата подписания';

Label5. Caption:='Кем подписан';

Label6. Visible:=false;

Label7. Visible:=false;

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='№ документа';

DBEdit3. DataField:='Название';

DBEdit4. DataField:='Дата подписания';

DBEdit5. DataField:='Кем подписан';

DBEdit6. DataField:='';

DBEdit6. Visible:=false;

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

end;

4: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Название';

Label3. Caption:='Количество';

Label4. Caption:='Стоимость каждой';

Label5. Caption:='Итого';

Label6. Visible:=false;

Label7. Visible:=false;

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='Название';

DBEdit3. DataField:='Количество';

DBEdit4. DataField:='Стоимость каждой';

DBEdit5. DataField:='Итого';

DBEdit6. DataField:='';

DBEdit6. Visible:=false;

DBEdit7. DataField:='';

DBEdit7. Visible:=false;

end;

5: with RedForm do begin

Label1. Caption:='Номер запроса';

Label2. Caption:='Цель';

Label3. Caption:='Дата отбытия';

Label4. Caption:='Дата прибытия';

Label5. Caption:='Место назначения';

Label6. Caption:='Виды выполняемых работ';

Label7. Caption:='ФИО работника';

DBEdit1. DataField:='№ запроса';

DBEdit2. DataField:='Цель';

DBEdit3. DataField:='Дата прибытие';

DBEdit4. DataField:='Дата отбытия';

DBEdit5. DataField:='Место назначения';

DBEdit6. DataField:='Виды выполняемых работ';

DBEdit7. DataField:='ФИО работника';

DBEdit6. Visible:=true;

Label6. Visible:=true;

DBEdit7. Visible:=true;

Label7. Visible:=true;

end;

end;

end;

procedure TOsnForma. Ydalit1Click (Sender: TObject);

begin

if (MessageDlg('Вы уверены?', mtConfirmation, mbOkCancel, 0)=mrOk) then

OsnTable. Delete;

end;

procedure TOsnForma. Dobavit1Click (Sender: TObject);

begin

OsnTable. Insert;

Redakt;

RedForm. ShowModal;

if (OsnTable. Modified) then

OsnTable. Post;

end;

Поиск записей в наборе данных

Для поиска записей в наборе данных в компоненте TTable применяется следующий метод: function FindKey([список значений]): Boolean – ищет запись, точно удовлетворяющую условиям в списке значений; существует дублирующий его метод GoToKey;

Поиск осуществляется только по индексным полям. Состав полей, используемых для идентификации нужной записи при поиске в НД, определяется текущим индексом. Следовательно, в качестве текущего нужно установить индекс, построенный по полям, по значениям которых и планируется осуществить поиск.

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

procedure TPoiskForm.OKClick (Sender: TObject);

begin

OsnForma. OsnTable. IndexName:= 'N'+IntToStr (PoiskBox. ItemIndex);

OsnForma. OsnTable. FindKey([PoiskEdit. Text]);

Close;

end;

Сортировка набора данных

Одной из наиболее часто выполняемых задач является задача сортировки данных таблицы по одному из полей (или по нескольким полям). Рассмотрим приёмы сортировки таблицы на примере набора данных Table. Сортировка набора данных Table выполняется автоматически по текущему индексному полю. Если переопределить индекс произойдет автоматическая сортировка данных по новому индексу. Если необходимо организовать сортировку данных по нескольким полям одновременно, надо создать индекс, включающий эти поля.

procedure TOsnForma.N0Click (Sender: TObject);

begin

OsnTable. IndexName:=TMenuItem(Sender).Name;

end;

VII. Запросы

Запросы – существенная часть управления базами данных. Для выполнения запросов к БД в Delphi используется компонент TQuery. Основные отличия компонента данных TQuery, возвращающего наборы данных, от выполняющего сходные функции компонента TTable следующие:

  • набор данных, возвращаемый TQuery, может быть составлен из записей нескольких таблиц;

  • в общем случае набор данных, возвращаемый TQuery, даже если источником этого набора служит одна таблица БД, предполагает обращение к подмножеству записей и столбцов, в то время как TTable ориентирован на работу со всеми записями и полями.

Результирующий набор данных компонента TQuery формируется путем выполнения запроса к БД на языке SQL. Самые большие реляционные базы данных, такие, как Oracle, Informix, Sybase, так же выполняют запросы, используя SQL.

Писать и исполнять SQL‑запросы в приложениях Delphi можно различными способами. Один метод – запись текста SQL‑команды в свойство SQL компонента TQuery. В этом случае во время работы приложения Delphi выполнит указанный запрос. Если при этом соединить компонент TQuery через TDataSoource с компонентом доступа к данным, результаты запроса будут показаны в компоненте просмотра данных, связанным с TQuery.

Другой способ задания SQL‑команд – включение их в паскалевские модули (в блоки исполняемого Pascal‑кода), которые Delphi создает для вашего проекта.

procedure TOsnForma.SQL1Click (Sender: TObject);

begin

PoiskForm. PoiskBox. Clear;

PoiskForm. PoiskBox. Items. Add (OsnTable. Fields. Fields[1].DisplayName);

PoiskForm. PoiskBox. Items. Add (OsnTable. Fields. Fields[2].DisplayName);

PoiskForm. PoiskBox. Items. Add (OsnTable. Fields. Fields[5].DisplayName);

PoiskForm. PoiskBox. ItemIndex:=0;

PoiskForm. ShowModal;

with OsnUnit. OsnForma. Query do begin

Active:=false;

SQL. Clear;

SQL. Add ('Select *');

SQL. Add ('From Работник');

SQL. Add ('Where '+PoiskForm. PoiskBox. Text+' Like «'+PoiskForm. PoiskEdit. Text+'''');

Active:=true;

end;

SQLForm. ShowModal;

end;

VIII. Создание отчетов по базе данных

Для создания отчетов создается новая форма, на ней размещается компонент TquickRep.

procedure TOsnForma.N7Click (Sender: TObject);

begin

OtchetForm. QuickRep1. PreviewModal;

end;

Характеристики

Тип файла
Документ
Размер
42,09 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

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