PANTHEON™ manual

 Categories
 PANTHEON Ajutor - Bun venit
[Collapse]PANTHEON
 [Collapse]Ghiduri pentru PANTHEON
  [Collapse]Ghid pentru PANTHEON
   [Collapse]Setări
    [Expand]Subiecte
    [Expand]Articole
    [Expand]POS
    [Expand]Fabricare
    [Expand]Personal
     Calendar
    [Expand]Financiare
    [Expand]Vamă
    [Collapse]Program
     [Expand]Tipuri de Documente
     [Collapse]Rapoarte în PANTHEON
       Setări în Panoul de Administrare
      [Expand]Registrul Raporturilor
       Previzualizare imprimare
      [Expand]Designer de rapoarte
      [Expand]Crearea Raportelor
      [Expand]Grupuri și Agregate
      [Expand]Formatare și Evidențiere
       Rapoarte Încapsulate (Subrapoarte)
      [Expand]Specificațiilor printurilor în PANTHEON
      [Collapse]Script
        "Bună, lume!" Script
        Folosind variabile, câmpuri de bază de date și funcții agregate
        Folosind Obiecte de Raport în Script
        Evenimente
        Exemplu de utilizare a evenimentului "OnBeforePrint"
        Tipărirea unei sume de grup în antetul grupului
        Totalul acumulat
        "OnAfterData" Eveniment
        Obiecte de Serviciu
        Folosind obiectul "Motor"
       [Collapse]FUNCȚII PANTHEON pentru FastReport
         Declarații și exemple simple
         Funcția GetFormValue
        [Expand]Funcția EQLExp
       [Expand]Exemple cu Tabele și Interogări
       Considerații privind designul raportului
      Texte Document
      Metode de livrare
     [Expand]Cărți de fidelitate
     [Expand]Panoul de Administrare
     [Expand]Componente Dashboard
      Rapoarte de tabloul de bord
      Analiză ad-hoc
     [Expand]ARES
      SQL editor
    [Expand]Documentație
    [Expand]Schimbă utilizatorul
   [Expand]Comenzi
   [Expand]Produse
   [Expand]Fabricare
   [Expand]POS
   [Expand]Serviciu
   [Expand]Financiare
   [Expand]Personal
   [Expand]Analitică
   [Expand]Desktop
   [Expand]Ajutor
   [Expand]Mesaje și Avertizări
   [Expand]Programe suplimentare
   [Expand]Produse vechi
  [Expand]Ghid pentru PANTHEON Retail
  [Expand]Ghid pentru PANTHEON Vet
  [Expand]Ghid pentru PANTHEON Fermă
 [Expand]Manuale de utilizare pentru PANTHEON
[Expand]PANTHEON Web
[Expand]PANTHEON Granule
[Expand]Site utilizator

Load Time: 750,004 ms
print   |
Label

SQL Exp

 

 

000001.gif  În cele mai multe cazuri, este mai bine să folosești interogări pe raport în loc de SQLExp funcție.

SQLExp este funcția care îți permite să accesezi date care altfel nu sunt disponibile în setul de date original al raportului. În acest fel, poți include date din alte tabele în rapoartele definite de utilizator.

Header

funcție SQLExp(sql:String): String;

Exemple simple

Hai să ne uităm mai întâi la două exemple simple care pot fi folosite pe fiecare raport. Prima expresie returnează adresa subiectului numit 'Fabrica'

[SQLexp('select acAddress from tHE_SetSubj where acSubject = ''Factory''')]

Al doilea exemplu returnează numele companiei noastre. Folosește un join între două tabele

[SQLexp('select S.acSubject from tHE_SetSubj S, tPA_SysParam P where S.acSubject = P.acOurCompany')]

Exemplu de utilizare pe raportul 103 - Raport de comenzi - detaliat

Colectezi comenzi de vânzare și o dată pe săptămână livrezi aceste comenzi către destinatari. În raportul de comenzi de vânzare poți crea un raport al comenzilor neexpediate cu introduse Livrare câmp (metoda de livrare) Livrare - cu camionul propriu.

În setul de date al raportului de comenzi de vânzare nu sunt furnizate adresa și poșta clientului. Toate aceste date sunt disponibile în registrul Subiectelor, deoarece pentru ID-ul Subiectelor, acesta este deja prezent în setul de date al103 - Raport de comenzi - detaliat raportului.

Toate criteriile au fost îndeplinite pentru a folosi funcția SQLExp pe un raport. Să ne uităm!

Pune obiectul "Text" pe raport. Fă clic pe obiect pentru a deschide editorul de text. Scrie expresia în editor. Trebuie să încadrezi expresia între paranteze pătrate, deoarece este scrisă ca expresie în obiectul "Text".

[SQLExp('select acAddress from tHE_SetSubj where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]

Explicație

acConsignee este câmpul din setul de date qReportIzpis care este folosit pentru a genera un raport.

Funcția dlQuotedStr (înregistrată pentru raport de Datalab) convertește șirul în versiunea între ghilimele.

După înlocuirea dlQuotedStr(<qReportIzpis."acConsignee">), comanda SQL este:

'select acAddress from tHE_SetSubj where acSubject = '''Customer&Co.''' '

și astfel interogarea care este executată este:

select acAddress from tHE_SetSubj where acSubject = 'Customer&Co.''

000001.gif Pentru că numele seturilor de date și câmpurilor ar putea diferi în fiecare raport, trebuie să verifici numele setului de date și câmpurile pentru fiecare raport concret.

Raportul locului clientului din comanda de vânzare

Clauza SQL este în acest caz un join între două tabele

[SQLExp('select P.acName from tHE_SetSubj S left join tHE_SetPostCode P on S.acPost = P.acPost where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]

Exemplu de Factură Colectivă

Hai să ne uităm la un exemplu în care factura colectivă (chitanță sau emitere) a fost creată din documente interne (chitanțe sau emiteri) în care ai primit sau emis bunuri urmărite prin numere de serie.

Raportul unei facturi colective sau o prezentare generală a numerelor de serie nu va produce informații despre numerele de serie primite sau emise ale articolelor din factura colectivă, deoarece aceste numere de serie au fost primite sau emise prin documente interne.

Dar poți raporta o listă de numere de serie primite sau emise! Pentru a face acest lucru, folosește funcția SQLExp. Numerele de serie vor fi raportate direct folosind tabela de legături, unde tipul de legătură între documentul intern și factura colectivă este 4.

Rapoartele de acest tip sunt folosite pentru a raporta numerele de serie într-o factură colectivă care a fost creată direct din documente interne.

Crează un nou clon al unui raport deja existent pentru o factură. Adaugă un nou obiect de text și scrie următoarea propoziție SQL:

[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')]

Exemplu de Document Colectiv Creat cu Documente Interne

Hai să ne uităm la un exemplu în care factura colectivă (chitanță sau emitere) a fost creată din documente interne de emitere în care ai emis bunuri de consignare urmărite prin numere de serie.

Raportul unei facturi colective sau o prezentare generală a numerelor de serie nu va produce informații despre numerele de serie emise ale articolelor din factura colectivă, deoarece aceste numere de serie au fost emise printr-un document de emitere pentru client.

Dar poți raporta o listă de numere de serie emise! Pentru a face acest lucru, folosește funcția SQLExp. Numerele de serie vor fi raportate direct folosind tabela de legături, unde legătura între documentul intern și factura colectivă este introdusă cu tip V.

1. Crează o nouă copie din raportul unui raport deja existent pentru o factură. Adaugă un nou obiect de text și scrie următoarea propoziție SQL:

[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')]

Diferența față de exemplul anterior este doar că tipul de legătură este în acest caz "V" în loc de 4.

Exemplu de Apelare a unei Proceduri Stocate

Parametrul funcției poate fi de asemenea procedura stocată. Următorul exemplu returnează locul companiei noastre apelând procedura stocată "fHE_GetOurCompanyCity"

[SQLExp('select dbo.fHE_GetOurCompanyCity()]



Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!