SQL Exp
 |
U većini slučajeva bolje je koristiti upite na izvještaju umjesto SQLExp funkcije. |
SQLExp je funkcija koja vam omogućuje pristup podacima koji inače nisu dostupni u izvornom skupu podataka izvještaja. Na ovaj način možete uključiti podatke iz drugih tablica u korisnički definirane izvještaje.
Naslov
funkcija SQLExp(sql:String): String;
Jednostavni Primjeri
Pogledajmo prvo dva jednostavna primjera koja se mogu koristiti na svakom izvještaju. Prvi izraz vraća adresu subjekta nazvanog 'Tvornica'
[SQLexp('select acAddress from tHE_SetSubj where acSubject = ''Factory''')]
Drugi primjer vraća ime naše tvrtke. Koristi spoj dviju tablica
[SQLexp('select S.acSubject from tHE_SetSubj S, tPA_SysParam P where S.acSubject = P.acOurCompany')]
Primjer korištenja na izvještaju 103 - Izvještaj o narudžbama - detaljno
Prikupljate narudžbe i jednom tjedno isporučujete te narudžbe primateljima. U izvještaju o narudžbama možete stvoriti izvještaj o neisporučenim narudžbama s unesenim Dostava poljem (metoda dostave) Dostava - vlastitim kamionom.
U skupu podataka izvještaja o narudžbama nisu navedeni adresa i pošta kupca. Svi ovi podaci dostupni su u registru subjekata, dok je ID subjekta već prisutan u skupu podataka ' 103 - Izvještaj o narudžbama - detaljno izvještaja'.
Svi kriteriji su ispunjeni za korištenje funkcije SQLExp na izvještaju. Pogledajmo!
Stavite objekt "Tekst" na izvještaj. Kliknite na objekt da otvorite uređivač teksta. Napišite izraz u uređivaču. Morate staviti izraz između uglatih zagrada. jer je napisan kao izraz u objektu "Tekst".

[SQLExp('select acAddress from tHE_SetSubj where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]
Objašnjenje
acConsignee je polje u skupu podataka qReportIzpis koje se koristi za generiranje izvještaja.
Funkcija dlQuotedStr (registrirana za izvještaj od Datalaba) pretvara niz u citiranu verziju.
Nakon zamjene dlQuotedStr(<qReportIzpis."acConsignee">), SQL naredba je:
'select acAddress from tHE_SetSubj where acSubject = '''Customer&Co.''' '
i tako je upit koji se izvršava:
select acAddress from tHE_SetSubj where acSubject = 'Customer&Co.''
 |
Buduci da se imena skupova podataka i polja mogu razlikovati u svakom izvještaju, morate provjeriti ime skupa podataka i polja za svaki konkretni izvještaj. |
Izvještaj o mjestu kupca iz narudžbe
SQL klauzula je u ovom slučaju spoj dviju tablica
[SQLExp('select P.acName from tHE_SetSubj S left join tHE_SetPostCode P on S.acPost = P.acPost where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]
Primjer Zbirnog Računa
Pogledajmo primjer gdje je zbirni račun (prijemnica ili izdan) stvoren iz internih dokumenata (prijemnica ili izdanja) u kojima ste primili ili izdali robu praćenu serijskim brojevima.
Izvještaj o zbirnom računu ili pregled serijskih brojeva neće proizvesti informacije o primljenim ili izdanima serijskim brojevima stavki iz zbirnog računa, jer su ti serijski brojevi primljeni ili izdani putem internih dokumenata.
Ali možete izvijestiti o popisu primljenih ili izdanih serijskih brojeva! Da biste to učinili, koristite funkciju SQLExp. Serijski brojevi će se izravno izvještavati koristeći povezanost tablice, gdje je tip povezanosti između internog dokumenta i zbirnog računa 4.
Izvještaji ove vrste koriste se za izvještavanje o serijskim brojevima u zbirnom računu koji je stvoren izravno iz internih dokumenata.
Stvorite novu kopiju već postojećeg izvještaja za račun. Dodajte novi tekstualni objekt i napišite sljedeću SQL rečenicu:
[SQLExp('select S.acSerialNo + '' ('' + LTrim(Str(Sum(S.anQty), 10, 2)) + '')'' as SN from tHE_MoveItemSerialNo S, tHE_LinkMoveItemMoveItem V where V.acLnkKey = S.acKey and V.anLnkNo = S.anNo and V.acType = ''4'' and V.acKey = ''' + <tbIzpisPrometPoz."acKey"> + ''' and V.anNo = ' + VarToStr(<tbIzpisPrometPoz."anNo">) + ' group by S.acSerialNo')]
Primjer Zbirnog Dokumenta Stvorenog s Internim Dokumentima
Pogledajmo primjer gdje je zbirni račun (prijemnica ili izdan) stvoren iz internih dokumenata za izdanja u kojima ste izdali robu praćenu serijskim brojevima.
Izvještaj o zbirnom računu ili pregled serijskih brojeva neće proizvesti informacije o izdanima serijskim brojevima stavki iz zbirnog računa, jer su ti serijski brojevi izdani putem dokumenta za izdanja za kupca.
Ali možete izvijestiti o popisu izdanih serijskih brojeva! Da biste to učinili, koristite funkciju SQLExp. Serijski brojevi će se izravno izvještavati koristeći povezanost tablice, gdje je povezanost između internog dokumenta i zbirnog računa unesena s tipom V.
1. Stvorite novu kopiju iz izvještaja već postojećeg izvještaja za račun. Dodajte novi tekstualni objekt i napišite sljedeću SQL rečenicu:
[SQLExp('select S.acSerialNo + '' ('' + LTrim(Str(Sum(S.anQty), 10, 2)) + '')'' as SN from tHE_MoveItemSerialNo S, tHE_LinkMoveItemMoveItem V where V.acLnkKey = S.acKey and V.anLnkNo = S.anNo and V.acType = ''V'' and V.acKey = ''' + <tbIzpisPrometPoz."acKey"> + ''' and V.anNo = ' + VarToStr(<tbIzpisPrometPoz."anNo">) + ' group by S.acSerialNo')]
Razlika od prethodnog primjera je samo u tome što je tip povezanosti u ovom slučaju "V" umjesto 4.
Primjer Pozivanja Spremne Procedure
Parametar funkcije može također biti spremljena procedura. Sljedeći primjer vraća mjesto naše tvrtke pozivajući spremljenu proceduru "fHE_GetOurCompanyCity"
[SQLExp('select dbo.fHE_GetOurCompanyCity()]