3.2 Создание SQL-запросов
В данном проекте были использованы различные SQL-запросы, для оптимизации работы и увеличения эффективности. Список этих запросов предоставлен ниже.
1) Сортировка
При нажатии на заголовок поля производится сортировка по этому полю, обработчики событий предоставлены ниже. Пример предоставлен на рис.3.8.
procedure TForm1.DBGid1TitleClick(Column: TColumn);
var s:string;
begin
s:=Column.Title.Caption;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select * from проект order by '+s);
ADOQuery1.Active:=false;
ADOQuery1.Active:=true;
end;
procedure TForm1.DBGrid2TitleClick(Column: TColumn);
var s:string;
begin
s:=Column.Title.Caption;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add('select * from Мероприятия order by '+s);
ADOQuery2.Active:=false;
ADOQuery2.Active:=true;
end;
Рисунок 3.8 – Пример сортировки
2) Выбор завершённых проектов за период, определяемый пользователем.
procedure TForm7.Button1Click(Sender: TObject);
function DateConv(date: tdate):string;
var i: integer;
begin
result:=datetostr(date);
for i:=1 to length(result) do if result[i]='.' then result[i]:='/';
end;
begin
adoquery1.SQL.Clear;
OutputQuery:='SELECT * FROM Проект WHERE ([Дата_начала_работ] Between #'+
DateConv(DateTimePicker1.Date)+'# And #'+DateConv(DateTimePicker2.Date)+
'#) And (статус='+#39+'завершен'+#39+')';
adoquery1.SQL.add(OutputQuery);
adoquery1.Active:=false;
adoquery1.Active:=true;
end;
Пример запроса приведен на рис.3.9.
Рисунок 3.9 – Запрос по проектам
3) Создание заявки на новый проект в пустой таблице «Заявки»
Данный шаг сделан потому, что для разработки проекта требуется определённое время. Так как задача администратора заключается в том, чтобы принять заявку, то таким способом она регистрируется в базе данных. Поскольку специалисту необходимо просчитать время, за которое проект будет закончен, какие работники будут выполнять мероприятия по данному проекту, то есть разработать проект.
procedure TForm8.Button1Click(Sender: TObject);
var s:string;
function DateConv(date: tdate):string;
var i: integer;
begin
result:=datetostr(date);
for i:=1 to length(result) do if result[i]='.' then result[i]:='/';
end;
begin
s:='INSERT into Заявки values ('+#39+combobox1.text+#39+', '+#39+edit1.text+#39+','+#39+combobox2.text+#39+', #'+dateConv(DateTimePicker1.Date)+'#)';
form1.ExecSQL(s);
Form9.ShowModal;
Form8.Close;
end;
Пример регистрации заявки предоставлен на рис 3.10-3.11.
Рисунок 3.10 – Регистрация заявки
Рисунок 3.11 – Заполнение формы заявок
4) запрос, показывающий сколько часов и по какому проекту отработал определённый работник
procedure TForm10.Button1Click(Sender: TObject);
var s: string;
begin
adoquery1.SQL.Clear;
s:='SELECT Работник.Фамилия, Работник.Имя, Проект.Название, Участие.[Кол-во_отработ_часов] FROM '+
Работник INNER JOIN (Проект INNER JOIN (Мероприятия INNER JOIN Участие ON Мероприятия.Id_мероприятия '+
'= Участие.Id_мероприятия) ON Проект.Id_проекта = Мероприятия.Id_проекта) ON Работник.Id_работника = Участие.Id_работника';
adoquery1.SQL.add('select * from ('+s+') where Фамилия ='+#39+edit1.text+#39+';');
adoquery1.active:=false;
adoquery1.active:=true;
end;
Вывод данного запроса на экран можно посмотреть на рис.3.12.
Рисунок 3.12 – Запрос по работникам
5) Вывод отчёта по завершённым проектам.
Такой отчёт может понадобиться руководству, затем чтобы оценить деятельность предприятия за определённый период. Пример предоставлен на рис.3.13.
SELECT Проект.Название, Заказчик.Наименование, Проект.Дата_начала_работ, Проект.Дата_окончания, Проект.Статус
FROM Заказчик INNER JOIN Проект ON Заказчик.Id_заказчика = Проект.Id_заказчика WHERE Проект.Статус="Завершен"
Рисунок 3.13 – Вывод отчёта перед печатью
6) Вывод отчёта по всем проектам
SELECT Проект.Название, Заказчик.Наименование, Мероприятия.Вид_работы, Работник.Фамилия, Работник.Имя
FROM Работник INNER JOIN (((Заказчик INNER JOIN Проект ON Заказчик.Id_заказчика = Проект.Id_заказчика)
INNER JOIN Мероприятия ON Проект.Id_проекта = Мероприятия.Id_проекта)
INNER JOIN Участие ON Мероприятия.Id_мероприятия = Участие.Id_мероприятия) ON Работник.Id_работника = Участие.Id_работника;
Данный отчёт при печати показывает текущую дату, что позволяет убедиться в достоверности данных. Пример этого отчёта показан на рис.3.14.
Рисунок 3.14 – Вывод отчёта по всем проектам
... в строительстве. Раздел предусматривает основные решения и организационно-технические мероприятия по монтажу конструкций шатра покрытия здания 2-го этапа строительства спортивного комплекса «Ледовый дворец» в г. Коломна Московской области. На период производства работ предусматривается использование для нужд строительства временных и постоянных автодорог, сетей электроэнергии и водоснабжения. ...
... рыночной экономикой. Она приоритетна, потому, что операции с денежными потоками, обеспечивающие платежеспособность, является существенным признаком состояния предприятия. 1.3 Пути повышения рентабельности Основными способами повышения рентабельности являются следующие: - увеличение суммы прибыли от реализации продукции; - снижение себестоимости товарной продукции. Способы увеличения ...
... методическими предложениями на Управление ЖКХ. Поэтому работа ЕРЦ становится движущей силой реформы ЖКХ города, так как стимулирует принятие конкретных управленческих шагов. Требуется не только единая методика начислений, но и взвешенные решения по реструктуризации долгов. Например, должен быть определен порядок погашения задолженности: следует ли сначала гасить долг или закрывать текущие платежи. ...
... 1798181,5 - - - - Всего сметная стоимость 39868706 1820139 2511253 295369 - 33869 5280 Объектная смета на строительство завода цинкования мелкоразмерных конструкций Результат сметных расчетов по общестроительным, санитарно-техническим, электрическим работам сводятся в смету на объект, которая составляется ...
0 комментариев