- •Автоматизация товарооборота и услуг косметической компании «Avon»
- •Глава 1. Анализ деятельности предприятия «Avon»
- •Общая информация о предприятии
- •1.2 Автоматизация деятельности компании «Avon»
- •1.3 Выбор среды программирования
- •1.4 Структура базы данных
- •Глава 2. Разработка базы данных для компании «Avon».
- •2.1. Постановка задачи
- •2.2. Создание интерфейсной части
- •2.3. Создание функциональной части
- •2.3.1. Осуществление доступа к базе данных
- •2.3.2. Реализация фильтрации и поиска
- •2.3.3. Создание отчетов
- •Заключение
- •Список используемой литературы
- •Приложение 1
- •Приложение 2
2.3. Создание функциональной части
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;
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.