Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Буров: Отбор данных: Необходимо отобрать записи по заданному диапазону номеров филиалов, количеству штатных единиц и фрагменту названия должности.Стр 1 из 7Следующая ⇒
Буров. Для филиалов с номерами из заданного диапазона сформировать отчет с группировкой по филиалам и должностям. По каждой группе вывести общее количество должностей, количество свободных ставок и среднюю заполненность штата. Схема БД представлена на рис. 1. Рис. 1. Схема БД CREATE PROCEDURE "Artyom"."Stavki" (in Nomer_fil_beg integer, in Nomer_fil_end integer) result( Nomer_filiala integer, Name_doljnosti varchar (50), Kolvo_doljnostei varchar (2), Kolvo_svob_stavok integer, Zapolnennost numeric (6,2))
BEGIN SELECT Nomer_filiala, Name_doljnosti, sum(Kolvo_Shatnix_edinic),sum(Kolvo_Shatnix_edinic-Kolvo_zapolnennix_ stavok), avg(100*Kolvo_zapolnennix_stavok/Kolvo_Shatnix_edinic) FROM Shtat as b JOIN Doljnosti as ps on b.Code_doljnosti = ps.Code_doljnosti WHERE Nomer_filiala between Nomer_fil_beg and Nomer_fil_end group by Nomer_filiala, Name_doljnosti order by Nomer_filiala, Name_doljnosti END
Буров. На модуле данных располагаются 2 компонента TADOQuery и 2 компонента TDataSource (рис. 2). Рис. 2. Модуль данных
Установим для qSDolz свойства: Connection= DB; SQL= SELECT * FROM DOLJNOSTI ORDER BY CODE_DOLJNOSTI; Active=True. Установка последнего свойства произошла без ошибки, значит тестирование НД прошло успешно. Установим для qBook свойства: Connection= DB; SQL = SELECT * FROM SHTAT ORDER BY Nomer_filiala asc, Podrazdelenie asc. Отобранные строки упорядочиваются с использованием раздела ORDER BY, в котором указаны колонки, по которым выполняется упорядочивание данных (колонка номер филиала Nomer_filiala, а затем колонка подразделение Podrazdelenie) и способ упорядочивания (asc задает упорядочивание по возрастанию). Установка свойства Active произошло без ошибки, значит тестирование НД прошло успешно. Убывание – desc.
Драг. Сформировать отчет за заданный период времени с группировкой по участкам и месяцам. По каждой группе вывести количество отработанных дней, общее отработанное время и среднее отработанное время за день. В отчет включать участки заданного вида. CREATE PROCEDURE "Andrey"."PeriodVr" (in Data_beg date, in Data_end date,in v_type varchar(30)) result( Name_uch varchar (50), Month_rab varchar (7), Kolichestvo integer, Otr_vremya numeric(6,2), Sr_otr_vremya numeric(6,2))
BEGIN SELECT Name_uch, convert (varchar (4), Year(data))+ '-'+convert (varchar (2),Month(data)) as mes, count(Name_uch),sum(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667), avg(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.01666) FROM Book_ucheta as b JOIN Sprav_uch as su on b.Kod_uch = su.Kod_uch WHERE Data between Data_beg and Data_end and su.type_uch = v_type group by Name_uch, mes order by 1,2 END Пилиева. Отбор данных: Необходимо отобрать записи по заданному диапазону номеров групп, по флагу «Задолженность» (если флаг включен, отображать группы с задолженностями, иначе не отображать) и фрагменту названия предмета.
Методы обработчиков кнопок отбора данных: procedure TfrmBook.sbFindClick(Sender: TObject); var where: string; begin DM.qBook.DisableControls; DM.qBook.Close; where:=''; if edN1.text<>'' then where:='Num_group>=:n1'; if edN2.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Num_group<=:n2'; end;
if ch1.Checked=false then begin if where<>'' then where:=where+' and '; where:=where+'Count_2<1'; end else if ch1.Checked=true then begin if where<>'' then where:=where+' and '; where:=where+'Count_2>0'; end;
if edPr.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Cod_predm in (select Cod_predm from Sprav_predm where Name LIKE:pred)'; end; DM.qBook.SQL.clear; DM.qBook.SQL.add('SELECT * FROM BOOK_USPEV '); if where<>'' then DM.qBook.SQL.add('WHERE '+where); DM.qBook.SQL.add('ORDER BY Faculty asc, Num_group asc');
if edN1.text<>'' then DM.qBook.Parameters.ParamByName('n1').Value:=StrToInt(edN1.text); if edN2.text<>'' then DM.qBook.Parameters.ParamByName('n2').Value:=StrToInt(edN2.text); if edPr.text<>'' then DM.qBook.Parameters.ParamByName('pred').Value:='%'+edPr.Text+'%'; DM.qBook.Open; DM.qBook.EnableControls; end;
Прилипко. Для заданного периода дат сформировать отчет с группировкой по услугам и заказчикам. По каждой группе вывести общий (суммарный) объем заказов, общую и среднюю стоимости заказа. Услуги должны удовлетворять следующим условиям: иметь заданный вид. Схема БД представлена на рис. 1. CREATE PROCEDURE "DBUser"."Otch" (in Data_beg date, in Data_end date,in u_type varchar(30)) result( Name varchar (50), Zakazchik varchar (50), Volume numeric (6,2), Obsh_stoim numeric (8,2), Sr_stoim numeric (8,2))
BEGIN SELECT Name,Zakazchik,sum(Volume_usl),avg(Price_1h*Volume_usl),sum(Price_1h*Volume_usl) FROM Zakaz_book as zb JOIN Sprav_usl as su on zb.Kod_usl = su.Kod_usl WHERE Data between Data_beg and Data_end and su.type = u_type group by Name, Zakazchik order by Name, Zakazchik END Фурсов.Для заданного периода дат сформировать отчет с группировкой по номеру кассы и месяцу. По каждой группе вывести количество рабочих дней, общую сумму выручки и среднюю выручку за день (выручка равна сумме приходных операций за вычетом суммы расходных). Номер кассы должен начинаться с заданной цифры. CREATE PROCEDURE "Vlad"."Otch" (in Data_beg date, in Data_end date,nkas integer) result( Num_cass integer, Month_rab varchar (7), Kolichestvo integer, Vyruchka numeric(6,2), SrVyruchka numeric(6,2))
BEGIN SELECT Num_cass, CASE When Month(data)<10 then convert (varchar (4), Year(data))+'-'+'0'+convert (varchar (2),Month(data)) else convert (varchar (4), Year(data))+'-'+convert (varchar (2),Month(data)) end as mes, count(Num_cass),sum(Sum_prikhod-Sum_paskhod), avg(Sum_prikhod-Sum_paskhod)
FROM Cass_book as b JOIN Sprav_cass as su on b.Kod_cassir = su.Kod_cassir WHERE Data between Data_beg and Data_end and left(b.Num_cass,1) = nkas group by Num_cass, mes order by 1, 2 END Акс. Для заданного периода дат сформировать отчет с группировкой по арендаторам и месяцам. По каждой группе вывести количество счетов, общую и максимальную стоимость услуг. Арендатор должен удовлетворять следующим условиям: иметь форму собственности «ООО» в названии
Данил. 7. Для заданного диапазона номеров мест хранения товара сформировать отчет с группировкой по поставщикам и номерам мест хранения. По каждой группе вывести общее количество, свободный остаток. Величина резерва должна составлять не более заданного процента от количества товара в данном месте хранения. . Чикина.Задание: Сформировать отчет с группировкой по департаментам. Для каждой группы вывести общее количество отработанных дней, израсходованных средств и среднюю величину израсходованных средств. В отчет включать отделы с номерами из заданного диапазона.
Программный код процедуры: CREATE PROCEDURE "admin"."prd1"(in diapaz_begin integer, in diapaz_end integer) result (Depart varchar (50), Kol_otr integer, Izpas_sr numeric(11,2), Sred_Izras numeric(11,2)) BEGIN SELECT Depart, sum(kol_otr), sum(Izras_god), avg(Izras_god) FROM Sprav_Otdel as sp JOIN Kniga_Uch as k on sp.Kod_Otdel=k.Kod_Otdel WHERE sp.kod_otdel between diapaz_begin and diapaz_end
GROUP BY Depart END МартыновВариант 13 Сформировать отчет с группировкой по факультетам и годам набора (выделить из номера группы). По каждой группе вывести общее количество студентов, групп и среднее число студентов в группе. На факультете должно быть не менее заданного количества кафедр.
Схема БД из Sybase Central представлена на рис. 1. Текст процедуры: ALTER PROCEDURE "admin"."lab4.1procedure"(Kolvo_kaf integer) RESULT(Kratkoe_naim varchar(20), Year_post varchar(4), OB_kol_stud integer, Kol_gr integer, Avg_kol_stud numeric(10,2)) BEGIN select Kratkoe_naim, substr(Nom_gr,length(Nom_gr)-1) as Year_post, sum(isnull(Kol_stud_male,0)+isnull(Kol_stud_female,0)), count(ku.Kod_facult), avg(isnull(Kol_stud_male,0)+isnull(Kol_stud_female,0)) from Kniga_ucheta ku join Spravochnik_Facultetov sf on ku.Kod_facult=sf.Kod_facult where sf.Kol_kafedr>=Kolvo_kaf group by Kratkoe_naim, Year_post order by Kratkoe_naim, Year_post END
Шишков.22. Сформировать отчет за заданный год с группировкой по месяцам и моделям. По каждой группе вывести общую стоимость продаж, количество рекламаций и средний процент рекламаций. В отчет включать компьютеры, относящиеся к заданному типу.
Схема базы данных в Sybase Central представлена на рис. 1. Рис.1. Схема БД в Sybase Central Текст процедуры “ModelOverview” представлен на рис 2.
Драгулин. Сформировать отчет за заданный период времени с группировкой по участкам и месяцам. По каждой группе вывести количество отработанных дней, общее отработанное время и среднее отработанное время за день. В отчет включать участки заданного вида. CREATE PROCEDURE "Andrey"."PeriodVr" (in Data_beg date, in Data_end date,in v_type varchar(30)) result( Name_uch varchar (50), Month_rab varchar (7), Kolichestvo integer, Otr_vremya numeric(6,2), Sr_otr_vremya numeric(6,2))
BEGIN SELECT Name_uch, convert (varchar (4), Year(data))+ '-'+convert (varchar (2),Month(data)) as mes, count(Name_uch),sum(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667), avg(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.01666) FROM Book_ucheta as b JOIN Sprav_uch as su on b.Kod_uch = su.Kod_uch WHERE Data between Data_beg and Data_end and su.type_uch = v_type group by Name_uch, mes order by 1,2 END
Задания с развёрнутым ответом:
Банковская книга ЭТОТ ОТВЕТ СЧИТАЕТСЯ ОТЛИЧНЫМ TADOConnection – отвечает за подключение к БД.
ADOConnection» ConnectionString» Use connection string» Build» SQL Anywhere OLE DB Provider» источник данных» пользователь и пароль» проверить соединение Name=DB keepConnection = true – Для поддержания соединения. LoginPrompt true, после тестирования false Connected true, после тестирования false
TADOQuery -qBankbook – отправляет запрос и получает данные из БД. TADOConnection Connection=DB Name=qBankbook SQL» SELECT *FROM Bankbook Order by dataOper desc
TDataSource –dsBankbook помещает полученные данные в таблицы. Connection» DB DataSet=qBankbook Name= dsBankbook
TDBGrid DataSource=DM.dsBankbook
Дано описание таблицы БД. Реализовать отбор данных. Указать перечень, полей, перечень компонентов и написать метод отбора данных. Использовать не менее 5 полей для условий отбора Таблица Bookreal (Книга реализации) включает поля: Номер АЗС, номер колонки, код марки бензина, дата, объем заправки Таблица содержит поля: - номер АЗС (nomerAZS) - номер колонки (nomKol) - код марки бензина (kodFuel) - дата (data) - объем заправки (obZ)
Форма просмотра содержит компоненты: - TDBGrid для вывода таблиц с данными - TEdit для отбора данных (edNA1, edNA2, edNK1, edNK2, edKF)
procedure TfrmBook.sbFindClick(Sender: TObject); var where: string; begin DM.qBook.DisableControls; DM.qBook.Close; where:=''; if edNA1.Text<>'' then where:='nomerAZS>=:na1'; if edNA2.Text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'nomerAZS<=:na2'; end; if edNK1.Text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'nomKol>=:nk1'; end; if edNK2.Text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'nomKol<=:nk2'; end; if edKF.Text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'kodFuel like:kf'; end; DM.qBook.SQL.Clear; DM.qBook.SQL.Add('SELECT * FROM Kniga_ucheta ku JOIN Spravoch-nik_Facultetov sf ON ku.Kod_facult=sf.Kod_facult '); if where<>'' then DM.qBook.SQL.add('WHERE '+where); DM.qBook.SQL.add(' ORDER BY ku.Kod_facult, ku.Nom_gr'); if edKF1.Text<>'' then DM.qBook.Parameters.ParamByName('na1').Value:=StrToInt(edNA1.Text); if edKF2.Text<>'' then DM.qBook.Parameters.ParamByName('na2').Value:=StrToInt(edNA2.Text); if edC1.Text<>'' then DM.qBook.Parameters.ParamByName('nk1').Value:=StrToInt(edNK1.Text); if edC2.Text<>'' then DM.qBook.Parameters.ParamByName('nk2').Value:=StrToInt(edNK2.Text); if edF.Text<>'' then DM.qBook.Parameters.ParamByName('kf').Value:= '%'+edKF.Text+'%'; DM.qBook.Open; DM.qBook.EnableControls; end; 20 из 30
Написать процедуру формирования отчета. Схема данных: Книга учета: Марка компьютера, дата, ФИО покупателя, цена, количество. Справочник марок: Марка, наименование, тип процессора. Сформировать отчет за заданный период времени с группировкой по типу процессора с расчетом общего количества, стоимости продаж и средней ценой. В отчет включать ПК, у которых цена находится в заданном диапазоне, а цена продажи не менее заданной. CREATE PROCEDURE "admin"."procedure"(in CenaBeg numeric(15,2), in CenaEnd numeric(15,2), in CenaProd integer)
RESULT(TipProc varchar(50), Period varchar(4), OBKol integer, OBCena numeric(15,2), SRCena numeric(15,2)) BEGIN select TipProc, year(Date) as Period, sum(isnull(Kolvo,0)) as OBKol, sum(isnull(Cena,0)) as OBCena, avg(isnull(Cena,0)) as SRCena from Kniga_ucheta ku join Spravochnik_Marok sm on ku.Marka=sm.Marka where OBCena>=CenaProd and Cena between CenaBeg and CenaEnd group by TipProc, Period order by TipProc, Period END 15 баллов из 30 Написать процедуру формирования отчета.Схема данных: Книга рекламаций: Год, месяц, код модели компьютера, цена, продано, количество рекламаций. Справочник моделей: Код модели, наименование модели, тип. Сформировать отчет за заданный год с группировкой по месяцам с расчетом общей стоимости продаж, количества рекламаций и максимального процента рекламаций. В отчет включать компьютеры, относящиеся к заданному типу ЭТОТ ОТВЕТ СЧИТАЕТСЯ ХОРОШИМ (20 из 30) CREATE PROCEDURE "Admin"."RptReklam"(in zad_year date, in tip varchar(40)) RESULT( Mesyac date, Naimen_model varchar(40), Count_prod integer, Count_rekl integer, Max_proc_rekl integer) BEGIN SELECT Mes, Name_model, Sum(Prodano), Sum(Kolvo_rekl), MAX(100* Kolvo_rekl/Prodano) FROM Book_reklam bk JOIN Sprav_model sm on sm.code_model = br.code_model WHERE zad_year = year_op and tip = type_comp GROUP BY mes, name_model
END 20 баллов
К 21
Сумма с условием sum (case when Kolvo_Shatnix_edinic >2 then Kolvo_Shatnix_edinic else 0 end), sum (case when type_uch='Промышленность' then Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667 else 0 end)
Сформировать отчет с группировкой по департаментам. Для каждой группы вывести общее количество отработанных дней, израсходованных средств и среднюю величину израсходованных средств. В отчет включать отделы с номерами из заданного диапазона.
Программный код процедуры: CREATE PROCEDURE "admin"."prd1"(in diapaz_begin integer, in diapaz_end integer) result (Depart varchar (50), Kol_otr integer, Izpas_sr numeric(11,2), Sred_Izras numeric(11,2)) BEGIN SELECT Depart, sum(kol_otr), sum(Izras_god), avg(Izras_god) FROM Sprav_Otdel as sp JOIN Kniga_Uch as k on sp.Kod_Otdel=k.Kod_Otdel WHERE sp.kod_otdel between diapaz_begin and diapaz_end
GROUP BY Depart END
Написать процедуру формирования отчета. Схема данных: Книга выработки: Артикул пряжи, табельный номер рабочего, дата, количество пряжи в кг, в т.ч. кол-во брака в кг. Справочник рабочих: Табельный номер, ФИО, тарифная ставка (руб за кг 1 с.) ЭТОТ ОТВЕТ СЧИТАЕТСЯ ХОРОШИМ (25 из 30)
Сформировать отчет за заданный период времени с группировкой по таб.номеру рабочего с выводом общего объема произведенной продукции, начисленной зарплаты и максимального процента брака. CREATE PROCEDURE "Roman"."KnigaVyr" ((in Data_beg date, in Data_end date)
result( Tab_nomer integer, Ob_obj numeric (10,2) Zarplata numeric(10,2), MaxProc numeric(10,2) ) BEGIN SELECT KV.Tab_nomer, sum(Kol_prya), sum(Kol_prya*Tarif_st), max (Kol_braka/Kol_prya) FROM KnigaVyr as KV JOIN SpravRab as SR on KV.Tab_nomer=SR.Tab_nomer WHERE Dat between Data_beg and Data_end group by KV.Tab_nomer order by KV.Tab_nomer END
Буров. Для филиалов с номерами из заданного диапазона сформировать отчет с группировкой по филиалам и должностям. По каждой группе вывести общее количество должностей, количество свободных ставок и среднюю заполненность штата. Схема БД представлена на рис. 1. Рис. 1. Схема БД
CREATE PROCEDURE "Artyom"."Stavki" (in Nomer_fil_beg integer, in Nomer_fil_end integer) result( Nomer_filiala integer, Name_doljnosti varchar (50), Kolvo_doljnostei varchar (2), Kolvo_svob_stavok integer, Zapolnennost numeric (6,2))
BEGIN SELECT Nomer_filiala, Name_doljnosti, sum(Kolvo_Shatnix_edinic),sum(Kolvo_Shatnix_edinic-Kolvo_zapolnennix_ stavok), avg(100*Kolvo_zapolnennix_stavok/Kolvo_Shatnix_edinic) FROM Shtat as b JOIN Doljnosti as ps on b.Code_doljnosti = ps.Code_doljnosti WHERE Nomer_filiala between Nomer_fil_beg and Nomer_fil_end group by Nomer_filiala, Name_doljnosti order by Nomer_filiala, Name_doljnosti END
Буров. На модуле данных располагаются 2 компонента TADOQuery и 2 компонента TDataSource (рис. 2). Рис. 2. Модуль данных
Установим для qSDolz свойства: Connection= DB; SQL= SELECT * FROM DOLJNOSTI ORDER BY CODE_DOLJNOSTI; Active=True. Установка последнего свойства произошла без ошибки, значит тестирование НД прошло успешно. Установим для qBook свойства: Connection= DB; SQL = SELECT * FROM SHTAT ORDER BY Nomer_filiala asc, Podrazdelenie asc. Отобранные строки упорядочиваются с использованием раздела ORDER BY, в котором указаны колонки, по которым выполняется упорядочивание данных (колонка номер филиала Nomer_filiala, а затем колонка подразделение Podrazdelenie) и способ упорядочивания (asc задает упорядочивание по возрастанию). Установка свойства Active произошло без ошибки, значит тестирование НД прошло успешно. Убывание – desc.
Буров: Отбор данных: Необходимо отобрать записи по заданному диапазону номеров филиалов, количеству штатных единиц и фрагменту названия должности. procedure TfrmBook.sbFindClick(Sender: TObject); var where: string; begin DM.qBook.DisableControls; DM.qBook.Close; where:=''; if edN1.text<>'' then where:='Nomer_filiala>=:n1'; if edN2.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Nomer_filiala<=:n2'; end; if edD1.Text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Kolvo_shatnix_edinic>=:d1'; end; if edD2.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Kolvo_shatnix_edinic<=:d2'; end; if edDolz.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Code_doljnosti in (select Code_doljnosti from Doljnosti where Name_doljnosti LIKE:dolz)'; end; DM.qBook.SQL.clear; DM.qBook.SQL.add('SELECT * FROM SHTAT '); if where<>'' then DM.qBook.SQL.add('WHERE '+where); DM.qBook.SQL.add('ORDER BY Nomer_filiala asc, Podrazdelenie asc');
if edN1.text<>'' then DM.qBook.Parameters.ParamByName('n1').Value:=StrToInt(edN1.text); if edN2.text<>'' then DM.qBook.Parameters.ParamByName('n2').Value:=StrToInt(edN2.text); if edD1.text<>'' then DM.qBook.Parameters.ParamByName('d1').Value:=StrToInt(edD1.text); if edD2.text<>'' then DM.qBook.Parameters.ParamByName('d2').Value:=StrToInt(edD2.text); if edDolz.text<>'' then
DM.qBook.Parameters.ParamByName('dolz').Value:='%'+edDolz.Text+'%'; DM.qBook.Open; DM.qBook.EnableControls; end; Васянин: Сформировать отчет с группировкой по подразделениям и сотрудникам (фамилии группы сотрудников начинаются с одной буквы: А, Б, …). По каждой группе вывести общее количество сотрудников, общую сумму начислений и среднее количество отработанных часов. В отчет включать сотрудников, у которых табельный номер находится в заданном диапазоне, а подразделение относится к заданному виду. CREATE PROCEDURE "admin"."RptTabel" (in Tab_numb_beg integer, in Tab_numb_end integer,vpod varchar (50)) result( Podrazdel varchar (50), Bukv_fam varchar (1), Count integer, Summa numeric(6,2), Sr_otr_vremya numeric(6,2))
BEGIN SELECT Name_pod, left(FIO,1) as bfa, count(FIO),sum(money_hour*timeO), avg(timeO) FROM Tab_work_time as b JOIN Sprav_pod as sp on b.Kod_pod = sp.Kod_pod WHERE Tab_numb between Tab_numb_beg and Tab_numb_end and sp.Tipe_pod= vpod group by Name_pod, bfa order by Name_pod, bfa END Васянин: Отбор данных: Необходимо отобрать записи по заданному диапазону табельных номеров, почасовых ставок и фрагменту ФИО. procedure TfrmBook.sbFindClick(Sender: TObject); var where: string; begin DM.qBook.DisableControls; DM.qBook.Close; // строка составного условия where:=''; // Первый проход - формирование составного условия if edN1.text<>'' then where:='Tab_numb>=:n1'; if edN2.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'Tab_numb<=:n2'; end; if edD1.Text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'money_hour>=:d1'; end; if edD2.text<>'' then begin if where<>'' then where:=where+' and '; where:=where+'money_hour<=:d2'; end; if edF.text<>'' then begin if where<>'' then where:=where+' and ';
where:=where+'FIO LIKE:fio'; end; // формирование свойства SQL DM.qBook.SQL.clear; DM.qBook.SQL.add('SELECT * FROM TAB_WORK_TIME '); if where<>'' then DM.qBook.SQL.add('WHERE '+where); DM.qBook.SQL.add('ORDER BY Kod_pod asc, FIO asc');
// Второй проход - подстановка значений параметров if edN1.text<>'' then DM.qBook.Parameters.ParamByName('n1').Value:=StrToInt(edN1.text); if edN2.text<>'' then DM.qBook.Parameters.ParamByName('n2').Value:=StrToInt(edN2.text); if edD1.text<>'' then DM.qBook.Parameters.ParamByName('d1').Value:=StrToInt(edD1.text); if edD2.text<>'' then DM.qBook.Parameters.ParamByName('d2').Value:=StrToInt(edD2.text); if edF.text<> '' then DM.qBook.Parameters.ParamByName('fio').Value:='%'+edF.Text+'%'; // Открываем НД DM.qBook.Open; DM.qBook.EnableControls; end; Драг. Сформировать отчет за заданный период времени с группировкой по участкам и месяцам. По каждой группе вывести количество отработанных дней, общее отработанное время и среднее отработанное время за день. В отчет включать участки заданного вида. CREATE PROCEDURE "Andrey"."PeriodVr" (in Data_beg date, in Data_end date,in v_type varchar(30)) result( Name_uch varchar (50), Month_rab varchar (7), Kolichestvo integer, Otr_vremya numeric(6,2), Sr_otr_vremya numeric(6,2))
BEGIN SELECT Name_uch, convert (varchar (4), Year(data))+ '-'+convert (varchar (2),Month(data)) as mes, count(Name_uch),sum(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.016667), avg(Datediff (minute,Vr_prikhoda,Vr_ukhoda)*0.01666) FROM Book_ucheta as b JOIN Sprav_uch as su on b.Kod_uch = su.Kod_uch WHERE Data between Data_beg and Data_end and su.type_uch = v_type group by Name_uch, mes order by 1,2 END
|
|||||||||
Последнее изменение этой страницы: 2020-12-17; просмотров: 61; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.107.241 (0.278 с.) |