Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая Харин О.B..doc
Скачиваний:
10
Добавлен:
09.06.2015
Размер:
117.25 Кб
Скачать
    1. 2.3. Создание функциональной части

      1. 2.3.1. Осуществление доступа к базе данных

Изначально, необходимо создать таблицы в Database Desktop. Для этого в пуске выбираем Borland Delphi 7 и находим этот компонент. После этого выбираем File -> New -> Table -> Paradox7, вводим название полей таблицы и выбираем их тип. Так же необходимо выбрать ключевое поле таблицы, для этого ставим « * » в поле Key.Созданные таблицы мы сохраняем в отдельной папке на диске С (C:\orf). Связи между объектами осуществляются вручную.

Чтобы созданные нами таблицы можно было вывести на форме, необходимо вставить такие компоненты как: DataSource1 (Data Access), Table1 или Query1 (BDE), DBGrid1 (Data Controls). В свойстве Table1 (Query1) выбираем DatabaseName и прописываем путь, где находятся наши таблицы C:\orf, а в свойстве TableName выбираем название нужной нам таблицы. После этого, у компонента DataSource1 находим свойство DataSet и выбираем Table(Query). У компонента DBGrid1, в свойстве DataSource, выбираем DataSource1. Для того, чтобы во время работы программы можно было добавлять поля в таблицу, на форму ставим компонент DBNavigator1 (Data Controls). Связываем данный компонент с таблицей, для этого в свойстве DataSource, выбираем DataSource1.

Отображение расчета итогов связано со свойством SQL компонента Query. Для расчета итога формируем динамический запрос:

procedure TForm5.Button1Click(Sender: TObject);

begin

Query1.SQL.Clear;

Query1.SQL.Add('SELECT A.Kod_Tovar, A.Name_Tovar, A.Price, Z.Amount_Custom');

Query1.SQL.Add('From assortiment as A, zakaz as Z');

Query1.SQL.Add('WHERE (A.Kod_Tovar=Z.Kod_Tovar) and Z.Code_Client='+ Table2.Fields[0].AsString + ' and Z.Date_Custom="'+ Edit1.Text + '"');

Query1.Open;

Query2.SQL.Clear;

Query2.SQL.Add('SELECT SUM(A.Price*Z.Amount_Custom)');

Query2.SQL.Add('FROM assortiment as A, zakaz as Z');

Query2.SQL.Add('WHERE (A.Kod_Tovar=Z.Kod_Tovar) and Z.Code_Client='+ Table2.Fields[0].AsString);

Query2.Open;

end;

      1. 2.3.2. Реализация фильтрации и поиска

Для сокращения времени нахождения нужного товара, на форме «Ассортимент» используем поиск. Поиск товара, осуществляем через Locate и Lookup. Для этого, создаем DBRadioGroup1, щелкая по нему два раза, прописываем следующий код:

procedure TForm2.DBRadioGroup1Click(Sender: TObject);

var

Res:Variant;

s : string;

begin

with Table1 do

begin

case DBRadioGroup1.ItemIndex of

0: begin

if not Table1.Locate('Kod_Tovar',Edit1.Text,[loCaseInsensitive, loPartialKey])then

ShowMessage('Запись не найдена');

end;

1: begin

Res := Table1.Lookup('Kod_Tovar',Edit1.Text,'Kod_Tovar; Name_Tovar');

if VarIsNull(Res) then

ShowMessage('не найдено')

else

begin

s := string (Res [0]) + ' ' + string (Res [1]);

ShowMessage(s);

end;

end;

end;

end;

end;

Для того чтобы осуществить фильтрацию, на форме «Подать заказ» создаем RadioGroup1 (Standard), щелкаем по компоненту два раза и прописываем следующий код:

procedure TForm7.RadioGroup1Click(Sender: TObject);

begin

{Для начала, очищаем табличку}

Query1.SQL.Clear;

{Выбираем все поля из таблицы assortiment.db}

Query1.SQL.Add('Select * FROM assortiment.db');

Case RadioGroup1.ItemIndex of

{Если будет нажата 1 строчка, тогда просто выводим все поля из таблицы assortiment.db}

0: begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('Select * FROM assortiment.db');

end;

{Если будет нажата вторая строчка, то фильтруем данные таблички, по полю Type_Product, фильтрация производиться по тексту, который введен в Edit1}

1: Query1.SQL.Add('Where Type_Product = "' + Edit1.Text +'"');

{Если же будет нажата третья строка, то мы производим фильтрацию по диапазону, диапазон будет вводиться в Edit2 и Edit3}

2: Query1.SQL.Add('Where Price between '+ Edit2.Text +' and ' + Edit3.Text +'');

end;

{Теперь открываем таблицу}

Query1.Open;

end;

end.