Фурсов. Отбор данных: необходимо отобрать записи по заданному диапазону номеров касс, дат и фрагменту фио. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Фурсов. Отбор данных: необходимо отобрать записи по заданному диапазону номеров касс, дат и фрагменту фио.



Методы обработчиков кнопок отбора данных:

procedure TfrmBook.sbFindClick(Sender: TObject);

var where: string;

begin

DM.qBook.DisableControls;

DM.qBook.Close;

where:='';

if edN1.text<>'' then

where:='Num_cass>=:n1';

if edN2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Num_cass<=:n2';

 end;

 if edD1.Text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Data>=:d1';

 end;

 if edD2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Data<=:d2';

 end;

if edFio.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Kod_cassir in (select Kod_cassir from Sprav_cass where Fio LIKE:fio)';

 end;

DM.qBook.SQL.clear;

DM.qBook.SQL.add('SELECT * FROM CASS_BOOK ');

if where<>'' then

DM.qBook.SQL.add('WHERE '+where);

DM.qBook.SQL.add('ORDER BY Data desc, Kod_cassir 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:=

     FormatDateTime('yyyy-mm-dd',StrToDate(edD1.text));

if edD2.text<>'' then

DM.qBook.Parameters.ParamByName('d2').Value:=

     FormatDateTime('yyyy-mm-dd',StrToDate(edD2.text));

if edFio.text<>'' then

DM.qBook.Parameters.ParamByName('fio').Value:='%'+edFio.Text+'%';

DM.qBook.Open; DM.qBook.EnableControls;  end;

Роман. Для номеров пар из заданного диапазона сформировать отчёт с группировкой по каждому корпусу и дням недели. Для каждой группы строк вывести общее количество студентов, резерв свободных мест, процент заполняемости аудиторий.

CREATE PROCEDURE "Roman"."ParOtch" (in Para_num_beg integer,

in Para_num_end integer)

result(Corp_num varchar (10),           Week_day varchar (20),    Week_day_n varchar (2),

Count integer,

Rezerv integer,

Zapolnyemost numeric (4,1))

BEGIN  SELECT Corp_num, Week_day, CASE

When Week_day='понедельник' then 1

When Week_day='вторник' then 2

When Week_day='среда' then 3

When Week_day='суббота' then 6 end as Week_day_n,

sum (Count),sum(Capacity-Count),100*sum(Count)/sum(Capacity)

FROM Raspisanie as b

JOIN Sprav_aud as ps on b.Aud_numb = ps.Aud_numb

WHERE Para_num between Para_num_beg and Para_num_end

group by Corp_num, Week_day

order by Corp_num, Week_day_n END

Роман.Отбор данных: Необходимо отобрать поставки по заданному диапазону номеров пар, количеству людей и фрагменту названия предмета.

Методы обработчиков кнопок отбора данных:

procedure TfrmBook.sbFindClick(Sender: TObject);

 var where: string;

begin

// Отключаем видимый компонент от НД

DM.qBook.DisableControls;

// Закрываем НД

DM.qBook.Close;

// строка составного условия

where:='';

// Первый проход - формирование составного условия

if edN1.text<>'' then

where:='Para_Num>=:n1';

if edN2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Para_Num<=:n2';

 end;

if edD1.Text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Count>=:d1';

 end;

 if edD2.text<>'' then begin

if where<>'' then

  where:=where+' and ';

where:=where+'Count<=:d2';

 end;

 if edPr.text<>'' then begin

if where<>'' then

  where:=where+' and ';

// where:=where+'Subject in (select Aud_numb from Sprav_aud where Aud_numb LIKE:aud)';

where:=where+'Subject in (select Subject from Raspisanie where Subject LIKE:sub)';

 end;

// формирование свойства SQL

DM.qBook.SQL.clear;

DM.qBook.SQL.add('SELECT * FROM RASPISANIE ');

if where<>'' then

DM.qBook.SQL.add('WHERE '+where);

DM.qBook.SQL.add('ORDER BY Week_day asc,Para_num 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 edAud.text<>'' then

 

DM.qBook.Parameters.ParamByName('sub').Value:='%'+edPr.Text+'%';

// Открываем НД

DM.qBook.Open;

// Подключаем видимый компонент к НД

DM.qBook.EnableControls;

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

 



Поделиться:


Последнее изменение этой страницы: 2020-12-17; просмотров: 53; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.211.66 (0.018 с.)