SQL Exp
 |
U većini slučajeva je bolje koristiti upite na izvještaju umjesto SQLExp funkcije. |
SQLExp je funkcija koja vam omogućava pristup podacima koji inače nisu dostupni u originalnom skupu podataka izvještaja. Na ovaj način možete uključiti podatke iz drugih tabela u korisnički definirane izvještaje.
Header
funkcija SQLExp(sql:String): String;
Jednostavni Primjeri
Prvo ćemo pogledati dva jednostavna primjera koja se mogu koristiti na svakom izvještaju. Prvi izraz vraća adresu subjekta nazvanog 'Fabrika'
[SQLexp('select acAddress from tHE_SetSubj where acSubject = ''Fabrika''')]
Drugi primjer vraća ime naše kompanije. Koristi spajanje dviju tabela
[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 sedmično isporučujete te narudžbe primateljima. U izvještaju o narudžbama možete kreirati izvještaj o neisporučenim narudžbama sa unesenim Dostava poljem (metoda dostave) Dostava - vlastitim kamionom.
U skupu podataka izvještaja o narudžbama nisu navedeni adresa kupca i pošta. Svi ovi podaci su dostupni u registru subjekata, dok je ID subjekta već prisutan u skupu podataka103 - Izvještaj o narudžbama - detaljno izvještaja.
Svi kriteriji su ispunjeni za korištenje funkcije SQLExp na izvještaju. Pogledajmo!
Postavite "Tekst" objekat na izvještaj. Kliknite na objekat da otvorite uređivač teksta. Napišite izraz u uređivaču. Morate staviti izraz između uglastih zagrada. jer je napisan kao izraz u "Tekst" objektu.

[SQLExp('select acAddress from tHE_SetSubj where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]
Objašnjenje
acConsignee je polje u skupu podataka qReportIzpis koji se koristi za generisanje izvještaja.
Funkcija dlQuotedStr (registrovana za izvještaj od Datalab) konvertuje string u verziju sa navodnicima.
Poslije zamjene dlQuotedStr(<qReportIzpis."acConsignee">), SQL komanda je:
'select acAddress from tHE_SetSubj where acSubject = '''Kupac&Co.''' '
i tako je upit koji se izvršava:
select acAddress from tHE_SetSubj where acSubject = 'Kupac&Co.''
 |
Pošto se imena skupova podataka i polja mogu razlikovati u svakom izvještaju, morate provjeriti ime skupa podataka i polja za svaki konkretan izvještaj. |
Izvještaj o mjestu kupca iz narudžbe
SQL klauzula je u ovom slučaju spajanje dviju tabela
[SQLExp('select P.acName from tHE_SetSubj S left join tHE_SetPostCode P on S.acPost = P.acPost where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]
Primjer Kolektivnog Računa
Pogledajmo primjer gdje je kolektivni račun (prijem ili izdavanje) kreiran iz internih dokumenata (prijema ili izdanja) u kojima ste primili ili izdali robu praćenu serijskim brojevima.
Izvještaj o kolektivnom računu ili pregled serijskih brojeva neće proizvesti informacije o primljenim ili izdatim serijskim brojevima stavki iz kolektivnog računa, jer su ovi serijski brojevi primljeni ili izdati putem internih dokumenata.
Ali možete prijaviti listu primljenih ili izdatih serijskih brojeva! Da biste to uradili, koristite funkciju SQLExp. Serijski brojevi će biti direktno prijavljeni koristeći tabelu veza, gdje je tip veze između internog dokumenta i kolektivnog računa 4.
Izvještaji ove vrste se koriste za prijavu serijskih brojeva u kolektivnom računu koji je kreiran direktno iz internih dokumenata.
Kreirajte novu kopiju već postojećeg izvještaja za račun. Dodajte novi tekstualni objekat 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 Kolektivnog Dokumenta Kreiranog sa Internim Dokumentima
Pogledajmo primjer gdje je kolektivni račun (prijem ili izdavanje) kreiran iz internih dokumenata za izdavanje u kojima ste izdali robu praćenu serijskim brojevima.
Izvještaj o kolektivnom računu ili pregled serijskih brojeva neće proizvesti informacije o izdatim serijskim brojevima stavki iz kolektivnog računa, jer su ovi serijski brojevi izdati putem dokumenta za kupca.
Ali možete prijaviti listu izdatih serijskih brojeva! Da biste to uradili, koristite funkciju SQLExp. Serijski brojevi će biti direktno prijavljeni koristeći tabelu veza, gdje je veza između internog dokumenta i kolektivnog računa unesena sa tipom V.
1. Kreirajte novu kopiju iz izvještaja već postojećeg izvještaja za račun. Dodajte novi tekstualni objekat 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 veze 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 kompanije pozivajući spremljenu proceduru "fHE_GetOurCompanyCity"
[SQLExp('select dbo.fHE_GetOurCompanyCity()]