Инструменти за потребители

Инструменти за сайта


spravki_new:report_builder:pipeline

Това е стара версия на документа!


Къстъм пайплайни

Къстъм пайплайните са необходими в случаите в които искаме да изтеглим информация, която не ни е подадена от Програмният продукт.

В тези случаи се обръщаме към реализацията на къстъм пайплайни.

Така изглежда дизайнера на репорти при празен репорт

Създаване на Къстъм пайплайн

За да създадете къстъм пайплайн е необходимо да смените страницата в дизайнера на Data.

След това от менюто File изберете New

Това действие ще отвори прозорец в който ще изберете начина на вмъкване на Къстъм пайплайна.

Имате два варината:

  1. Използване на Query Wizard
  2. Директно към Query Designer

И двата варината имат за цел създаване на заявка, като в единият ще създавате заявката по стъпки, а в другия ще минавате през страниците една по една и ще прескачате ненужните. Първоначално препоръчваме да се използва Query Wizard.

Query Wizard

Избор на таблици

Като изберете този начин на въвеждане ще се появи първоначално прозорец за избор на Таблица (таблици).

В ляво се намира списъка на всички таблици, а в дясно на избраните.

След като изберете ред в списъка на всички таблици с бутончето > можете да изберете таблицата. Двоен клик върху избраната таблица извършва добавяне на таблицата към избрани.

След като добавите една таблица на всяка следваща ще ви се показва прозорец в който трябва да определите каква е връзката на новоизбраната таблица с някоя от предишните.

  • Join Type - определя вида на връзката
    • Inner - ще се покажат само тези редове за които имаме стойност и в двете таблици
    • Full Outer - показват се редовете от Inner Join + редовете от двете таблици за които нямаме редове от другата
    • Left Outer - показват се редовете от Inner Join + редовете от мастер таблицата (в ляво) за които няма редове от текуща таблица
    • Right Outer - показват се редовете от Inner Join + редовете от текущата таблицата за които няма редове от мастер таблицата

Повече информация на http://en.wikipedia.org/wiki/Join_%28SQL%29

  • В дясно горе се намира поле за избор на досега избрани таблици. В това поле ще изберем към коя таблица желаем да свържем текущата
  • Под Join Type се намират полетата от текущата таблица
  • Под избраната таблица към която ще се свързваме са показани полетата й.
  • Най-отдолу се намират всички условия за свързване които сме добавили (или са дошли автоматично)

Ако желаете да премахнете условие (в началото винаги ще идват автоматично доста условия), маркирате реда или редовете и натискате бутона Remove

Когато настройвате по кои полета ще се осъществява връзката заставате на избраното поле в ляво и в дясно и натискате бутона Add

След като добавите връзка може да промените условието (По подразбиране е =)

Избор на Полета

Следващата стъпка е да си изберете кои полета желаете да участват в резултатният пайплайн.

По подразбиране се добавят всички полета, но заради бързодействие е по-добре да извадите само необходимите полета за справката. В последствие винаги можете да добавите някое поле.

В ляво са всички достъпни полета във формат Таблица.Поле Можете да използвате бутоните за прехвърляне, частична селекция и бутон за прехвърляне, прехвърляне на всички полета, премахване на всички, а в дясно от избраните полета можете да използвате бутоните за и за промяна на реда на показване в резултата.

Слеващата стъпка е избор на агрегатни функции

Избор на Агрегатни функции

Ако изберете да направите пресмятане с някоя агрегатна функция, то трябва задължително да имате групиране по полета. Това е задължително.

По подразбиране няма агрегатни полета

Поле с което искате да използвате някоя от вградените в заявките функции се избира или с двоен клик или с бутончето > След като го изберете се появява прозорец в който избирате функцията, като имате възможност и за смяна на полето

След като сте настроили полетата с техните функции може да решите да промените функцията на някое поле. Под настроените полета има бутон Function чрез който показвате диалога за настройка на избраното поле

Възможните функции са

  • Sum - Сума по това поле (приложима функция само за числови полета)
  • Count - Брой срещания в групата
  • Avg - Средно аритметично (Sum / Count - аналогично на Sum е приложима само за числови полета)
  • Max - Максимална стойност (да се има впредвид че 2 > 10 ако полето е от тип STRING !!!)
  • Min - Минимална стойност

Избор на Полета за гупиране

Ако сте настроили агрегатна функция по някое поле, то задължително трябва да настроите полета по които да се групира резултата. Настройката е аналогична на настройка на полетата.

Настройка на условия за резултата

В тази секция настройваме от създеадената до тук заявка кои редове да влязат в резултата. С десен бутон на мишката върху полето в което се намират условията ще се появи контекстно меню. От него се избират възможните критерии

След като изберем Insert Criteria се появява прозорец в който си избираме полето, условието и стойността на която желаем да отговаря Услояиата са

  • =
  • <>
  • <
  • >
  • >=
  • like - като в лучай че търсим например част от текст ак ожелаем да започва трябва да напишем в стойността 'СТАРТ%' това означава да започва със старт и след това да има 0 или повече символи % - заменя 0 или повече символи, докато _ заменя точно един символ
  • not like - да не е като
  • between - стойността на полето да е в интервала [a ; b]
  • not between - да е извън интервала [a ; b]
  • in list - да е в следния списък
  • not in list - да не е в списъка
  • blank - да е празно (is null)
  • not blank - да не е празно (is not null)

За повече информация http://en.wikipedia.org/wiki/Where_%28SQL%29

Ако добавим няколко критерии за търсене, условието за търсене е винаги AND. Ако желаем да добавим условие ИЛИ трябва да изберем от възможните критерии за вмъкване Insert OR

Ако желаем да „обърнем“ резултата (да покажем не редовете които отговарят на тези усложия а всички останали редове) можем да изберем Insert NOT

Add Parentheses ще добавим два реда begin и end Тези редове представляват отваряща скоба и затваряща скоба. Целта им е да могат да се създават сложни условия.

Задаване на сортировка

Аналогично на настройката на полетата

Тук има допълнителни бутони за определяне на възходящо или низходящо сортиране.

Query Designer

При този начин на въвеждане всички стъпки са направени на страници и можете да прескачате или избирате само тези от които се нуждаете.

Всички стъпки са аналогични на тези от Query Wizard.

Резултатен Пайплайн

По този начин изглежда резултата.

Под името на пайпа има ред с бутони. Всеки бутон отговаря за дадена стъпка (Настройка на полета, Настройка на условия, на таблици, ….)

Последният бутон като се натисне може да се смени името на резултата, както и да се активира допълнителната функция за ГОТОВА SQL ЗАЯВКА.

Това се използва в случаите в които желаем да използваме по сложна заявка, която е предварително описана, или заявка от съхранени процедури (stored procedures).

Свързване на Къстъм пайплайни

След като сте създали няколко пайплайна можете да укажете връзка по между им.

Това ще предизвика автоматично поставяне на условия и преотваряне при смяна на реда на който се намира.

Това намира приложение ако желаем да реализираме Мастер-Детайл връзка между два или повече пайпове.

След като сме застанали на „детайлния“ пайп натискаме бутончето и се появява прозореца за описание

Важните елементи тук са:

  1. Към кой пайп искаме да се свържем
  2. Полетата на двата пайплайна
  3. Какви са връзките
  4. Начина им на свързване (подобно на INNER JOIN и LEFT JOIN)

Корекция на условията при отваряне на репорта

В повечето случаи е необходимо да направим корекция на условията, т.к. ние желаем да свържем къстръм пайплайна с подаденият към репорта пайплайн.

В този случай отиваме в страницата Calc и в процеурата BeforeOpenDataPipelines.

Нека да приемем че имаме мастер пайп (MASTER) който желаем да вземем от подадения към репорта MainPipeline полето ID. MASTER ми е с ръчен SQL и на ред 11 се намира WHERE клаузата

var
  l: TDASQLBuilder;
begin
  l := TDASQLBuilder.Create(MASTER);
  l.SQL.SQLText[10] := 'WHERE TABLE_ALIAS.FIELD = ' + MainPipeline['ID'];
  l.ApplyUpdates;
  l.Free;
  Report.DataPipeline := MASTER;
end;

Ако е стандартен SQL се действа по следният начин:

var 
  l: TdaSQLBuilder;
begin
  l := TdaSQLBuilder.Create(MASTER);
  l.SearchCriteria.Clear;
  l.SearchCriteria.Add('таблица', 'поле', 'условие', 'стойност');
  l.ApplyUpdates;
  l.Free;
  Report.DataPipeline := MASTER;
end;

Ако се изисква на всеки ред от подложката да се отваря някой поддетайл (къстъм пайп), то този сорс се повтаря в съответната процедура BeforePrint на BAND-а.

spravki_new/report_builder/pipeline.1515684619.txt.gz · Последна промяна: 2018/01/11 15:30 от 127.0.0.1