Главная » Просмотр файлов » Задание8_Работа_с_БД

Задание8_Работа_с_БД (1076759), страница 6

Файл №1076759 Задание8_Работа_с_БД (Лабораторная работа №8) 6 страницаЗадание8_Работа_с_БД (1076759) страница 62018-01-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Окончательный вид формы приложения приведен на рис. 23.

Рис. 23. Форма после настройки компонента DBGridl

После этого программу можно откомпилировать и запустить. Следует обра­тить внимание, что для того чтобы после запуска программы в окне появи­лась информация или, если база данных пустая, можно было вводить новую информацию, свойство Active таблицы-источника данных должно иметь значение True.

Работа с базой данных, представленной в виде таблицы, во многом похожа на работу с электронной таблицей Microsoft Excel. Используя клавиши пе­ремещения курсора вверх и вниз, а также клавиши листания текста страни­цами (<Page Up> и <Page Down>), можно, перемещаясь от строки к строке, просматривать записи базы данных. Нажав клавишу <Ins>, можно добавить запись, а нажав клавишу <Del> — удалить запись. Для того чтобы внести изменения в поле записи, нужно, используя клавиши перемещения курсора влево и вправо, выбрать необходимое поле и нажать клавишу <F2>.

5. Выбор информации из базы данных

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

Большинство систем управления базами данных позволяют произвести вы­борку нужной информации путем выполнения запросов. Пользователь в со­ответствии с определенными правилами формулирует запрос, указывая, ка­ким критериям должна удовлетворять интересующая его информация, а система выводит записи, удовлетворяющие запросу.

Для выборки из базы данных записей, удовлетворяющих некоторому крите­рию, предназначен компонент Query (рис. 24).

Рис. 24. Значок компонента Query

Компонент Query похож на компонент Table, но, в отличие от последнего, он представляет не всю базу данных (все записи), а только ее часть — запи­си, удовлетворяющие критерию запроса.

В табл.18 перечислены некоторые свойства компонента Query.

Таблица 17.18. Свойства компонента Query

Свойство Определяет

N ame Имя компонента. Используется компонентом Datasource для связи

результата выполнения запроса (набора записей) с компонентом,

обеспечивающим просмотр записей, например DBGrid

SQL Записанный на языке SQL запрос к базе данных (к таблице)

Active При присвоении свойству значения True активизирует выполнение запроса

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

В общем виде запрос на выборку из таблицы данных выглядит так:

SELECT СписокПолей FROM Таблица WHERE (Критерий) ORDER BY СписокПолей

где:

  • select — команда выбора записей из таблицы и вывода содержимого полей, имена которых указаны в списке;

  • from — параметр команды, который определяет имя таблицы, из которой нужно сделать выборку;

  • where — параметр, который задает критерий выбора. В простейшем слу­чае критерий - это инструкция проверки содержимого поля;

  • order by — параметр, который задает условие, в соответствии с которым будут упорядочены записи, удовлетворяющие критерию запроса.

Например, запрос

SELECT Fam, Name FROM school.db WHERE

(Class = ‘10a’) ORDER BY Name, Fam

обеспечивает выборку из базы данных "Школа" (из таблицы School.db) за­писей, у которых в поле class находится текст 10а, т. е. формирует упоря­доченный по алфавиту список учеников 10-а класса.

Другой пример. Запрос

SELECT Fam, Name FROM school.db WHERE

(Fam > 'K') and (Fam < 'Л') ORDER BY Name, Fam

обеспечивает выбор информации об учениках, фамилии которых начинают­ся на букву К.

Запрос может быть сформирован и записан в свойство sql во время разра­ботки формы или во время работы программы.

Для записи запроса в свойство sql во время разработки формы используется редактор списка строк (рис. 25), окно которого открывается в результате щелчка на кнопке с тремя точками в строке свойства sql окна Object Inspector.

Рис. 25. Пример запроса к базе данных "Школа"

Свойство sql представляет собой список строк. Поэтому чтобы сформировать запрос во время работы программы, нужно, используя метод Add, добавить строки (SQL-инструкции) в список SQL.

Ниже приведен фрагмент кода, который формирует запрос на поиск информации о конкретном человеке (критерий выбора - содержимое поля Fam должно совпадать со значением переменной fam).

with form1. Query1 do

begin

Close; // закрыть файл — результат выполнения предыдущего запроса

SQL.Clear; // удалить текст предыдущего запроса

// записываем новый запрос в свойство SQL

SQL.Add('SELECT Fam, Name, Class');

SQL.Add('FROM school.db');

SQL.Add('WHERE');

SQL.Add('(Fam = "' + fam + '")');

SQL.Add('ORDER BY Name, Fam');

Open; // активизируем выполнение запроса

end;

Следующая программа, ее текст приведен в листинге 2, а диалоговое ок­но — на рис. 26, демонстрирует возможность изменения запроса, точнее, критерия запроса, во время работы программы. Программа обеспечивает вывод как всего списка учеников, так и его части. Например, посредством выполнения запроса выводится информация только о конкретном ученике.

Для просмотра базы данных и результата выполнения запроса используется компонент DBGrid1, который через компонент DataSource1 взаимодействует с компонентом Table1 (при просмотре всей базы данных) или с компонен­том Query (при просмотре результата выполнения запроса).

Рис. 17.26. Форма приложения База данных Школа

Листинг 2. Форма приложения База данных Школа

unit school2_;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Grids, DBGrids, Db, DBTables, ExtCtrls, DBCtrls, StdCtrls;

type

TForm1 = class(TForm)

Table1: TTable; // таблица (вся база данных)

Query1: TQuery; // запрос (записи БД, удовлетворяющие критерию выбора)

DataSource1: TDataSource; // источник данных - таблица или запрос

DBGrid1: TDBGrid;//таблица для отображения БД или результата выполнения запроса

DBNavigator1: TDBNavigator;

DBText1: TDBText;

Button1: TButton; // кнопка запрос

Button2: TButton; // кнопка Все записи

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

// щелчок на кнопке Запрос

procedure TForm1.Button1Click(Sender: TObject);

var

fam: string[30];

begin

fam:=InputBox('Выборка информации из БД',

'Укажите фамилию и щелкните на OK.', '');

if fam <> '' // пользователь ввел фамилию

then

begin

with form1.Query1 do begin

Close; // закрыть файл-результат выполнения предыдущего запроса

SQL.Clear; // удалить текст предыдущего запроса

// записываем новый запрос в свойство SQL

SQL.Add('SELECT Fam, Name, Class');

SQL.Add('FROM ":Школа:school.db"');

SQL.Add('WHERE');

SQL.Add('(Fam = "'+ fam + '")');

SQL.Add('ORDER BY Name, Fam');

Open; // активизируем выполнение запроса

end;

{ *** другой вариант изменения критерия запроса

begin

Query1.Close;

Query1.SQL[3]:='(Fam="'+ fam + '")';

Query1.Open;

DataSource1.DataSet:=Query1;

end;

}

if Query1.RecordCount <> 0 then

DataSource1.DataSet:=Query1 // отобразить рез-т выполнения запроса

else begin

ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');

DataSource1.DataSet:=Table1;

end;

end;

end;

// щелчок на кнопке Все записи

procedure TForm1.Button2Click(Sender: TObject);

begin

DataSource1.DataSet:=Table1; // источник данных - таблица

end;

// активизация формы

procedure TForm1.FormActivate(Sender: TObject);

begin

DataSource1.DataSet := Table1;

Table1.Active := True;

end;

end.

Процедура TForml.Button1Click запускается щелчком кнопки Запрос. Она принимает от пользователя строку (фамилии) и записью (добавлением) строк в свойство sql формирует текст запроса. Затем эта процедура вызо­вом метода Open активизирует выполнение запроса.

Следует обратить внимание на то, что перед изменением свойства SQL-запрос должен быть закрыт при помощи метода Close (здесь надо вспом­нить, что результат выполнения запроса — это файл данных (таблица), ко­торый создается в результате выполнения запроса).

Процедура TForm1.Button2Click, которая запускается щелчком кнопки Все записи, устанавливает в качестве источника данных для компонента DataSource1 компонент Table1, тем самым обеспечивая переход в режим просмотра всей базы данных.

Если запрос записан в свойство sql во время разработки формы приложе­ния, то во время работы программы критерий запроса можно изменить простой заменой соответствующей строки текста запроса.

Например, для запроса

SELECT DISTINCT Fam, Name, Class

FROM ":Школа:school.db"

WHERE

(Class= ‘10a’) ORDER BY Name, Fam

инструкция замены критерия запроса может быть такой:

forml.Queryl.SQL[3]:='(Fam=”’ + fam+ '")'

Следует обратить внимание на то, что свойство sql является структурой типа TStrings, в которой строки нумеруются с нуля.

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

Тип файла
Документ
Размер
934 Kb
Тип материала
Высшее учебное заведение

Список файлов лабораторной работы

Лабораторная работа №8
8
8_Питер
Data
peterburg.cfg
peterburg.dof
peterburg.dpr
peterburg.exe
peterburg.res
peterburg_.dcu
peterburg_.ddp
peterburg_.dfm
peterburg_.pas
peterburg_.~ddp
peterburg_.~dfm
peterburg_.~pas
8_школа
data
school.cfg
Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7041
Авторов
на СтудИзбе
259
Средний доход
с одного платного файла
Обучение Подробнее