Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методическое пособие - БД Делфи+++.doc
Скачиваний:
30
Добавлен:
20.11.2018
Размер:
1.05 Mб
Скачать
  1. Работа со связанными таблицами

При установлении связи между таблицами в DELPHI необходимо иметь в виду следующие требования, таблицы связываются :

  • только по индексированным полям

  • по полям целочисленного типа (longinteger), которые должны быть проиндексированы.

Рассмотрим 2 таблицы на примере данной БД:

Klient- информация о клиенте

Zakaz - Карточки по движению заказов.

Главная таблица является таблица Klient ,а Zakaz - подчиненной

Klient Zakaz

k_cod Kl Z-Cod

k_FIO Z-data_najala

K_Tel Z-data_okonjaniya

Для задания связи между таблицами в компоненте Table2(в подчиненной таблице) задаются следующие свойства:

Master Sourse-в котором указывается источник данных главной таблицы по отношению к текущей.

Index Field name-имя поля связи подчиненной таблицы, которое должно быть проиндексировано.

Master Field - имя поля главной таблицы, по которому связывается главное и Подчиненное поле.

7 Форма с фильтрацией данных из таблиц бд

Фильтрация данных - отбор данных из таблиц по заданному выражению.

При фильтрации на форме в DBGrid1 остаются только отфильтрованные записи,удовлетворяющие условию.

Условие отбора может включать имена полей, логические и арифметические операции.Выражение для отбора данных заносится в свойство Table1Filter:string. Для активации фильтрации используется метод Table1Filtered=true.

Выборки по трем параметрам, которые выполняются в зависимости от нажатой (включенной) радиокнопки.

procedure TForm1.Button1Click(Sender: TObject); // Нажатие кнопки

«ВЫБРАТЬ»

begin

If (radiobutton1.Checked =true) and (Edit1.Text<>'') then

begin

Table2.Filter:='FIO_post='''+Edit1.text+'''';

Table2.Filtered:=true;

end

Else

ShowMessage ('Введите Фамилию работника');

If (radiobutton2.Checked =true) and (Edit2.Text<>'') then

begin

Table3.Filter:='FIO='''+Edit2.text+'''';

Table3.Filtered:=true;

end

Else

ShowMessage ('Введите фамилию клиента');

If (radiobutton3.Checked =true) and (Edit3.Text<>'') then

begin

Table4.Filter:='Naimen='''+Edit3.text+'''';

Table4.Filtered:=true;

end

Else ShowMessage ('Введите наименование объекта');

end;

end.

Удобно выбирать фамилию работника не из окна Edit , а из списка фамилий, который формируется прямо из таблицы «Работники».

Создание раскрывающегося списка ComboBox1 в процедуре создания формы – FormCreate.

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1.First;

While not Table1.Eof do

begin

ComboBox1.Items.ADD('Table1.FieldByname('Fam').asString');

Table1.Next;

end;

procedure TForm2.Button6Click(Sender: TObject); // кнопка ВЫБОР из списка

begin

Table1.Filter:='FIO='''+comboBox1.Text+'''';

table1.Filtered:=true;

if combobox1.Text='' then // Нет выбора из списка

begin

Table1.Filter:='';

table1.Filtered:=false;

end;

end;