SQL Exp
 |
Në shumicën e rasteve është më mirë të përdoren pyetje në raport në vend të SQLExp funksionit. |
SQLExp është funksioni që ju lejon të aksesoni të dhëna që ndryshe nuk janë të disponueshme në datasetin origjinal të raportit. Kështu mund të përfshini të dhëna nga tabela të tjera në raportet e përcaktuara nga përdoruesi.
Kreu
funksioni SQLExp(sql:String): String;
Shembuj të Thjeshtë
Le të shohim së pari dy shembuj të thjeshtë që mund të përdoren në çdo raport. Shprehja e parë kthen adresën e subjektit të quajtur 'Fabrika'
[SQLexp('select acAddress from tHE_SetSubj where acSubject = ''Fabrika''')]
Shembulli i dytë kthen emrin e kompanisë sonë. Ai përdor bashkimin e dy tabelave
[SQLexp('select S.acSubject from tHE_SetSubj S, tPA_SysParam P where S.acSubject = P.acOurCompany')]
Shembulli i Përdorimit në Raportin 103 - Raporti i Porosive - të detajuar
Po mbledhni porositë e shitjeve dhe një herë në javë i dorëzoni këto porosi te konsignantët. Në raportin e porosive të shitjeve mund të krijoni një raport të porosive të pa dërguara me të dhënat e futura Dorëzimi fushë (metoda e dorëzimit) Dorëzimi - me kamionin tuaj.
Në datasetin e raportit të porosive të shitjeve nuk janë të dhëna adresën dhe postën e klientit. Të gjitha këto të dhëna janë të disponueshme në regjistrin e Subjekteve, sa për ID-në e Subjekteve, ajo tashmë është e pranishme në datasetin e '103 - Raporti i Porosive - të detajuar raportit'.
Të gjitha kriteret ishin përmbushur për të përdorur funksionin SQLExp në një raport. Le të shohim!
Vendosni objektin "Tekst" në raport. Klikoni mbi objektin për të hapur redaktorin e tekstit. Shkruani shprehjen në redaktor. Duhet ta mbyllni shprehjen mes kllapave katrore. sepse është shkruar si shprehje në objektin "Tekst".

[SQLExp('select acAddress from tHE_SetSubj where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]
Shpjegimi
acConsignee është fusha në dataset qReportIzpis e cila përdoret për të gjeneruar një raport.
Funksioni dlQuotedStr (i regjistruar për raport nga Datalab) konverton stringun në versionin e cituar.
Pas zëvendësimit të dlQuotedStr(<qReportIzpis."acConsignee">) , komanda SQL është:
'select acAddress from tHE_SetSubj where acSubject = '''Klienti&Co.''' '
dhe kështu pyetja që ekzekutohet është:
select acAddress from tHE_SetSubj where acSubject = 'Klienti&Co.''
 |
Për shkak se emrat e datasetëve dhe fushave mund të ndryshojnë në çdo raport, duhet të kontrolloni emrin e datasetit dhe fushave për çdo raport konkret. |
Raporti i vendit të klientit nga porosia e shitjes
Klauzola SQL është në këtë rast bashkimi i dy tabelave
[SQLExp('select P.acName from tHE_SetSubj S left join tHE_SetPostCode P on S.acPost = P.acPost where acSubject = ' + dlQuotedStr(<qReportIzpis."acConsignee">) + '')]
Shembulli i një Fature Kolektive
Le të shohim një shembull ku fatura kolektive (pranimi ose lëshimi) është krijuar nga dokumente të brendshme (pranime ose lëshime) në të cilat keni marrë ose lëshuar mallra të ndjekura nga numra serialë.
Raporti i një fature kolektive ose një përmbledhje e numrave serialë nuk do të prodhojë informacion mbi numrat serialë të marrë ose të lëshuar të artikujve nga fatura kolektive, sepse këta numra serialë janë marrë ose lëshuar përmes dokumenteve të brendshme.
Por mund të raportoni një listë të numrave serialë të marrë ose të lëshuar! Për ta bërë këtë, përdorni funksionin SQLExp. Numrat serialë do të raportohen drejtpërdrejt duke përdorur tabelën e lidhjes, ku lloji i lidhjes midis dokumentit të brendshëm dhe faturës kolektive është 4.
Raportet e këtij lloji përdoren për të raportuar numrat serialë në një faturë kolektive që është krijuar drejtpërdrejt nga dokumentet e brendshme.
Krijoni një klon të ri të një raporti ekzistues për një faturë. Shtoni objektin e ri të tekstit dhe shkruani fjalinë SQL të mëposhtme:
[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')]
Shembulli i një Dokumenti Kolektiv të Krijuar me Dokumente të Brendshme
Le të shohim një shembull ku fatura kolektive (pranimi ose lëshimi) është krijuar nga dokumente lëshimi të brendshme në të cilat keni lëshuar mallra konsignation të ndjekura nga numra serialë.
Raporti i një fature kolektive ose një përmbledhje e numrave serialë nuk do të prodhojë informacion mbi numrat serialë të lëshuar të artikujve nga fatura kolektive, sepse këta numra serialë janë lëshuar përmes një dokumenti lëshimi për klientin.
Por mund të raportoni një listë të numrave serialë të lëshuar! Për ta bërë këtë, përdorni funksionin SQLExp. Numrat serialë do të raportohen drejtpërdrejt duke përdorur tabelën e lidhjes, ku lidhja midis dokumentit të brendshëm dhe faturës kolektive është e futur me llojin V.
1. Krijoni një kopje të re nga raporti i një raporti ekzistues për një faturë. Shtoni një objekt të ri të tekstit dhe shkruani fjalinë SQL të mëposhtme:
[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')]
Dallimi nga shembulli i mëparshëm është vetëm se lloji i lidhjes është në këtë rast "V" në vend të 4.
Shembulli i Thirrjes së Procedurës së Ruajtur
Parametri i funksionit mund të jetë gjithashtu procedura e ruajtur. Shembulli i mëposhtëm kthen vendin e kompanisë sonë me thirrjen e procedurës së ruajtur "fHE_GetOurCompanyCity"
[SQLExp('select dbo.fHE_GetOurCompanyCity()]