Това е стара версия на документа!
Къстъм пайплайните са необходими в случаите в които искаме да изтеглим информация, която не ни е подадена от Програмният продукт.
В тези случаи се обръщаме към реализацията на къстъм пайплайни.
Така изглежда дизайнера на репорти при празен репорт
За да създадете къстъм пайплайн е необходимо да смените страницата в дизайнера на Data.
След това от менюто File изберете New
Това действие ще отвори прозорец в който ще изберете начина на вмъкване на Къстъм пайплайна.
Имате два варината:
И двата варината имат за цел създаване на заявка, като в единият ще създавате заявката по стъпки, а в другия ще минавате през страниците една по една и ще прескачате ненужните. Първоначално препоръчваме да се използва Query Wizard.
Като изберете този начин на въвеждане ще се появи първоначално прозорец за избор на Таблица (таблици).
В ляво се намира списъка на всички таблици, а в дясно на избраните.
След като изберете ред в списъка на всички таблици с бутончето > можете да изберете таблицата. Двоен клик върху избраната таблица извършва добавяне на таблицата към избрани.
След като добавите една таблица на всяка следваща ще ви се показва прозорец в който трябва да определите каква е връзката на новоизбраната таблица с някоя от предишните.
Повече информация на http://en.wikipedia.org/wiki/Join_%28SQL%29
Ако желаете да премахнете условие (в началото винаги ще идват автоматично доста условия), маркирате реда или редовете и натискате бутона Remove
Когато настройвате по кои полета ще се осъществява връзката заставате на избраното поле в ляво и в дясно и натискате бутона Add
След като добавите връзка може да промените условието (По подразбиране е =)
Следващата стъпка е да си изберете кои полета желаете да участват в резултатният пайплайн.
По подразбиране се добавят всички полета, но заради бързодействие е по-добре да извадите само необходимите полета за справката.
В последствие винаги можете да добавите някое поле.
В ляво са всички достъпни полета във формат Таблица.Поле Можете да използвате бутоните за прехвърляне, частична селекция и бутон за прехвърляне, прехвърляне на всички полета, премахване на всички, а в дясно от избраните полета можете да използвате бутоните за ↑ и ↓ за промяна на реда на показване в резултата.
Слеващата стъпка е избор на агрегатни функции
Ако изберете да направите пресмятане с някоя агрегатна функция, то трябва задължително да имате групиране по полета. Това е задължително.
По подразбиране няма агрегатни полета
Поле с което искате да използвате някоя от вградените в заявките функции се избира или с двоен клик или с бутончето > След като го изберете се появява прозорец в който избирате функцията, като имате възможност и за смяна на полето
След като сте настроили полетата с техните функции може да решите да промените функцията на някое поле. Под настроените полета има бутон Function чрез който показвате диалога за настройка на избраното поле
Възможните функции са
Ако сте настроили агрегатна функция по някое поле, то задължително трябва да настроите полета по които да се групира резултата.
Настройката е аналогична на настройка на полетата.
В тази секция настройваме от създеадената до тук заявка кои редове да влязат в резултата. С десен бутон на мишката върху полето в което се намират условията ще се появи контекстно меню. От него се избират възможните критерии
След като изберем Insert Criteria се появява прозорец в който си избираме полето, условието и стойността на която желаем да отговаря Услояиата са
За повече информация http://en.wikipedia.org/wiki/Where_%28SQL%29
Ако добавим няколко критерии за търсене, условието за търсене е винаги AND. Ако желаем да добавим условие ИЛИ трябва да изберем от възможните критерии за вмъкване Insert OR
Ако желаем да „обърнем“ резултата (да покажем не редовете които отговарят на тези усложия а всички останали редове) можем да изберем Insert NOT
Add Parentheses ще добавим два реда begin и end Тези редове представляват отваряща скоба и затваряща скоба. Целта им е да могат да се създават сложни условия.
Аналогично на настройката на полетата
Тук има допълнителни бутони за определяне на възходящо или низходящо сортиране.
При този начин на въвеждане всички стъпки са направени на страници и можете да прескачате или избирате само тези от които се нуждаете.
Всички стъпки са аналогични на тези от Query Wizard.
По този начин изглежда резултата.
Под името на пайпа има ред с бутони. Всеки бутон отговаря за дадена стъпка (Настройка на полета, Настройка на условия, на таблици, ….)
Последният бутон като се натисне може да се смени името на резултата, както и да се активира допълнителната функция за ГОТОВА SQL ЗАЯВКА.
Това се използва в случаите в които желаем да използваме по сложна заявка, която е предварително описана, или заявка от съхранени процедури (stored procedures).
След като сте създали няколко пайплайна можете да укажете връзка по между им.
Това ще предизвика автоматично поставяне на условия и преотваряне при смяна на реда на който се намира.
Това намира приложение ако желаем да реализираме Мастер-Детайл връзка между два или повече пайпове.
След като сме застанали на „детайлния“ пайп натискаме бутончето и се появява прозореца за описание
Важните елементи тук са:
В повечето случаи е необходимо да направим корекция на условията, т.к. ние желаем да свържем къстръм пайплайна с подаденият към репорта пайплайн.
В този случай отиваме в страницата 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-а.
В Репорт Билдър е реализирана функция, която връща наименованията на всички локални принтери и приема като входен параметър дума, по която се търси в наименованията на намерените устройства. При съвпадение намереният резултат се попълва като наименование на подразбиращия се принтер.
Пример:
Report.PrinterSetup.PrinterName := FindPrinterByPartName('LABEL');
Този ред ще позволи да се постави за подразбиращ принтер ако е намерено „LABEL“ в името му.