Az alapja egy TE, melyben el van helyezve egy leíró, ami tartalmazza a párbeszédablak kontroljait. Az automatikus lista form kontrol szinten támogatja az alap kontrolokat (szöveges, numerikus, dátum mező, felsorolt típus, pipa, memo, html edit), továbbá kezel tartományokat (dátum és numerikus mezők esetén), termékfát, és végül be van építve rengeteg kereső combo box (SCB), ill. képlet mezők támogatása.
A @Leiro Logikai bemenő paraméter egyenlő 1 esetén a TE-nek a leírót kell visszaadnia.
A leíró XML szerkezete:
<Form ListID="" ReportName="">
<PageControl>
<TabSheet Caption="" Name="">
<Band Caption="" Type="" Name="" Collapsable="">
<Control Caption="" Reverse="" Name="" ParameterName="" SCBType="" FormulaType="" Mask="" EnumName="" EnumValidValues=""
DataType="" Nullable="" FullWidth="" FullHeight="" LineCount=""
DefaultValue="" LinkedFunction="" NullText="" PrevRow="" RangeControlNameFrom=""/>
<SetParam ParameterName="" ControlName="" Value=""/>
<Static ControlName="" GetValue="" Value=""/>
<SQL>...</SQL>
<WHERE>...</WHERE>
</Control>
</Band>
</TabSheet>
</PageControl>
<Band>...</Band>
<Control>...</Control>
<SP>
EXEC TE neve
@Parameter1 = :Parameter1,
@Parameter2 = :Parameter2,
....
@ParameterN = :ParameterN
</SP>
<Version ControlName="" ControlValue="" ListID="">
<SP>...</SP>
</Version>
</Form>
Form: Form definiálása
ListID: Szokásos
PageControl:
Name: Page control neve, Kötelező: nem
TabSheet:
Caption: Fül neve, Kötelező: igen
Name: Fül kontrol neve, Kötelező: nem
Band:
Caption: Sáv neve, Kötelező: Type használata esetén csak felül definiálás, Type nelkül kötelező
Type: 'Altalanos', 'Megjelenites', 'Forditas', 'Szures', Kötelező: nem. A jelenleg használt négy leggyakoribb sáv típust támogatják.
Name: Sáv kontrol neve, Kötelező: Type használata esetén csak felül definiálás, Type nélkül kötelező
Collapsable: 0/1, Alapértelmezés: 1, Type használata esetén csak felül definiálás
Control:
Caption: kontrol előtti felirat, Kötelező: nem
Reverse: Megfordítja a label és a kontrol sorrendjét. Csak SCB esetén működik. Kategoria+Tetel-nél használjuk. Kötelező: nem
Name: kontrol neve, Kötelező: Nem, Alapértelmezés: ParameterName-ból képzett kontrol név a szokásos modon. scb, ed prefix, stb. Akkor érdemes kitölteni, ha hivatkozni akarunk a kontrolra (GetParam, Static, ...)
ParameterName: TE bemenő paramétere, Kötelező: igen
SCBType: Jellemzően a tábla neve, amihez kapcsolódik a combobox.
Pl: Artabla, Bankszamla, BelsoRend, Deviza, ElerhetosegTipus, ElolegSz, Felhasznalo, stb.
A teljes lista az AutomatikusListaTesztL TE-ben van a SCB-k fülön.
Kötelező: SCB használata esetén igen.
FormulaType: Keplet szerkesztő
Pl: TermekKodKeplet, TermekNevKeplet, ...
A teljes lista az AutomatikusListaTesztL TE-ben van a Képletek fülön.
Kötelező: Képlet használata esetén igen.
Mask: @-os maszkok, ill. konkrét maszk megadása, Kötelező: SCBType es FormulaType használata esten csak felül definiálás, SQL használatánál kötelező
EnumName: Felsorolt típus neve
EnumValidValues: 0, 1, 2, stb. Kötelező: Nem
DataType: Int, Float, Bit, Date, DateTime, Varchar, Memo, HTMLEdit.
Kötelező: SCBType, EnumName használata mellett csak felül definiálás, SQL használatánál kötelező - az ID mező típusát definiálja
Nullable: 0/1, Alapértelmezés: 1, azaz nem kötelező.
FullWidth: DataType=Memo és HTMLEdit esetén van értelmezve. Alapértelmezés: 0
FullHeight: DataType=Memo és HTMLEdit esetén van értelmezve. Alapértelmezés: 0
LineCount: DataType=Memo és HTMLEdit esetén van értelmezve. Alapértelmezés: 5
DefaultValue: DataType-nak megfelelő kezdőérték. Kötelező: Nem
LinkedFunction: SQL használata esetén a kapcs. funkció megadása. Kötelező: Nem, SCBType használata esetén van alapértelmezése.
NullText: Csak SCB esetén van értelmezve. Üres mező esetén a kontrolba ez a szöveg kerül. Kötelező: nem
PrevRow: 0/1 - kontrol az előző sorba kerüljön. Alapértelmezés: 0
RangeControlNameFrom: Tartomány ellenőrzéshez, ill. a dátumnál a tartomány kulcsszavak (ma, holnap, január, stb.) használatához kell megadni. A tartomány elejét jelző kontrol nevét kell megadni. Kötelező: nem
SetParam: Tétel típusú SCB-nek paraméter megadása
ParameterName: Az SCB-ben használt paraméter neve, Kötelező: igen
ControlName: A kontrol neve, ahonnan ki kell olvasni az értéket. Kötelező: igen, ha a Value üres
Value: Fix értké megadása. Pl menüparaméterben megadott érték. Kötelező: igen, ha a ControlName üres
Static:
ControlName: A kontrol neve, ahonnan ki kell olvasni az érteket. Kötelező: igen
GetValue: A kiolvasandó mező neve. Kötelező: igen
Value: Amennyiben az itt megadott értékkel nem egyezik a kiolvasott érték, akkor lesz nem módosítható a mező.
SQL:
Önálló lekérdezés megadása egy nem támogatott SCB-hez. Az ID mező típusát a DataType határozza meg. A szöveges mező típusa szöveges.
Csak kivételes esetben használd, könnyebb karbantartani a beépített típusokat.
WHERE:
Beépített SCB-k select-jeinek where ágát lehet kiegészíteni. Ez csak azoknál az SCB-knél használható, ahol az SCB nem egy önálló kontrol, mint pl a Termek keresés.
SP:
TE hívása a paraméterekkel. Kötelező: Igen
pl: EXEC AutomatikusListaTesztL @FeliratNyelv_ID=:FeliratNyelv_ID, @AdatNyelv_ID=:AdatNyelv_ID
Version: Üzemmódtól függően a fejlécben megadott ListID felüldefiniálása
ControlName: Kontrol neve, amelyiknek az értékétől függ a ListID. Kötelező: igen
ControlValue: Érték. Kötelező: igen
ListID: Érték függően az alkalmazandó ListID.
A funkciót a 'Lista tárolt eljárás neve' paraméter kitöltése nélkül indítva, alapértelmezésben, a példa felület indul el.
A menüben itt érhető el: sERPa\Rendszerfunkciók\Listák\Automatikus lista
A példa felület tartalmazza az összes kontrolt.
Amennyiben a listát alkalmassá kell tenni automatikus üzenet segítségével e-mailben való küldéshez, a TE végére mindössze ennyit kell írni:
Az XML-t tegyük el pl. egy @XMLDoc XML típusú mezőbe és ezt tegyük a TE végére:
IF OBJECT_ID('tempdb.dbo.#AdatforrasEredmeny') IS NULL
SELECT @XMLDoc
ELSE
INSERT INTO #AdatforrasEredmeny VALUES (@XMLDoc)
Az AltalanosXLS alapvetően a mátrixos listák előállításához használható a legkönnyebben. Mártixos listának hívjuk azokat a listákat, ahol az előállítandó XML-ben minden egyes cella külön elemmel van leírva. A hagyományos listáknál egy elem az egy sor és az elem attribútumai az oszlopok. A mártixos megoldás kicsit szószátyárabb, cserébe a hagyományossal ellenben lehet változó oszlopszélességű a lista, éppen ezért van lehetőség egy univerzális transzformáció megírására. Kézzel írt XSL-nél van lehetőség a két módszer vegyes használatára is, de ez nem tárgya a fejezetnek.
A mártixos listák használatához fix formátumú XML-t kell előállítani a TE-ben. Az előállítandó XML kinézete a következő:
<AltalanosXLS>
<Parameterek>
<Fejlec lang="" CegNev="" Felhasznalo="" Idopont="" />
</Parameterek>
<Lap Nev="" UtolsoOszlop="" T="n0">
<Fejlec ListaNev="">
<Sor>
<C O="" W="" colspan=""></C>
...
</Sor>
</Fejlec>
<Sor>
<C O="" T="" W="" colspan=""></C>
...
</Sor>
</Lap>
</AltalanosXLS>
A Parameterek rész általános infókat tartalmaz a listával kapcsolatban.
Lang: Lista nyelvi beállítása.
CegNev, Felhasznalo, Idopont: Értelemszerű. A lista aljára kerülnek rá ezek az infók.
Példa a Parameterek elem összerakásához:
(SELECT
(SELECT KodAlpha2 FROM Nyelv WHERE Nyelv_ID = 0) AS lang,
(SELECT CegNev FROM SajatAdat WHERE Nev = 'Normál') AS CegNev,
(SELECT Nev FROM Felhasznalo WHERE Felhasznalo_ID = dbo.Felhasznalo_ID()) AS Felhasznalo,
CONVERT(VARCHAR,GETDATE(),102)+'. '+CONVERT(VARCHAR,GETDATE(),108) AS Idopont
FOR XML RAW('Fejlec'), ROOT('Parameterek'), TYPE)
A Lap elem az Excelben egy lap definiálására szolgál. Több lapos excel esetén több Lap elemet kell definiálni.
Nev: Excel fül neve.
UtolsoOszlop: Számszerűen hány oszlopot tartalmaz a fül.
T: Ez egy technikai mező. Fixen n0-t kell, hogy visszaadjon.
A Lap elemen belül a Fejlec elem az egy vagy több soros jellemzően szürke fejlécet definiálja.
ListaNev: A szürke fejéc felett kerül kiírásra a fül neve.
A Sor elem a konkrét eredmény sorokat definiálja. Saját attribútuma nincs. C - cella elemeket tartalmaz.
Cella definiálására szolgál. Az elem értéke tartalmazza a kiírandó szöveget.
O: 1-től induló oszlop szám.
T: Cella típusa:
Txt - szöveges,
n0, n1, n2 - szám mező, 0,1,2 tizedessel.
%0, %1, %2 - szazalék mező, 0,1,2 tizedessel.
Date - Datum, yyyy-mm-dd formátummal
shortDate - Datum, yy-mm-dd formátummal
time - idő
W: Cella szélessége.
colspan: Összevonandó oszlokok száma.