Podrška #31670
ZatvorenRNAL, prebacivanje izvještaja na SQL / ODT reporting sistem
100%
Fajlovi
Povezani tiketi 1 (0 otvoreno — 1 zatvoren)
Izmjenjeno od Saša Vranić prije više od 12 godina
- Naslov promijenjeno iz F18, prebacivanje izvještaja na SQL / ODT reporting sistem u RNAL, prebacivanje izvještaja na SQL / ODT reporting sistem
Izmjenjeno od Saša Vranić prije više od 12 godina
sada se treba baciti na izvještajni dio...
Izmjenjeno od Saša Vranić prije više od 12 godina
ovdje sada imamo jednu situaciju a to je da imamo štampu iz
- pripremnog DBF fajla
- iz SQL baze sa servera
znači, moram napraviti neku centralnu funkciju koja će puniti neku matricu ili slično... ili ipak možda bolje lokalni dbf
_print.dbf
Izmjenjeno od Saša Vranić prije više od 12 godina
znači, ako štampamo iz pripreme
- pripr -> _print.dbf
ako sa servera
- sql qry -> _print.dbf
Izmjenjeno od Saša Vranić prije više od 12 godina
Izmjenjeno od Saša Vranić prije više od 12 godina
čitava ideja se svoji na sljedeće, ako imamo štampati neki dokument to se koristi ovako:
1) primjer kod štampanja sa jednom tabelom (recimo FAKT)
function print_fakt_dokument( idfirma, idtipdok, brdok )
local oPRINT
local _params := hb_hash()
local _dbf_print
// uzet ćemo za primjer da su parametri funkcije ti koji određuju da li će se štampati iz dbf-a ili sql-a
if PCOUNT() > 0
_dbf_print := .f. // štampat ćemo iz SQL-a
else
_dbf_print := .t. // štampat ćemo iz DBF-a
endif
if _dbf_print
_params["table_name"] := F_FAKT_PRIPR //koristi se ALIAS
_params["order"] := "1" // order tabele
else
_params["table_name"] := "fmk.fakt_fakt"
_params["order"] := { "idfirma", "idtipdok", "brdok", "rbr" }
_params["condition"] := { "idfirma = " + idfirma, "idtipdok = " + idtipdok, "brdok = " + brdok } // sql uslov
endif
oPRINT := F18_PRINT_UTIL():new()
oPRINT:dbf_print := _dbf_print
oPRINT:params := _params
oPRINT:prepare_print_table() // kreira se print tabela _PRINT.DBF
// sada možemo neparaviti index itd...
select _print (area: 255)
index on ...... tag "1"
index on ..... tag "2"
go top
do while !EOF() .....
// sada imamo praktično onaj dio koda koji smo koristili ranije za čupanje podataka iz PRIPR (area) u print tabele (T_DOKS, T_....)
2) primjer korištenja sa više print tabela
( takav je recimo slučaj kod RNAL-a), imamo više tabela na osnovu kojih treba da izvučemo podatke
U tu svrhu pravimo više print tabela i dodjeljujemo im unikatna imema (alijase)
function print_rnal_dokument( doc_no )
local oPRINT
local _params := hb_hash()
local _dbf_print
// uzet ćemo za primjer da su parametri funkcije ti koji određuju da li će se štampati iz dbf-a ili sql-a
if PCOUNT() > 0
_dbf_print := .f. // štampat ćemo iz SQL-a
else
_dbf_print := .t. // štampat ćemo iz DBF-a
endif
// pravimo prvu tabelu TMP_DOCS.DBF
if _dbf_print
_params["table_name"] := F__DOCS //koristi se ALIAS
_params["order"] := "1" // order tabele
else
_params["table_name"] := "fmk.rnal_docs"
_params["order"] := { "doc_no" }
_params["condition"] := { "doc_no = " + ALLTRIM( STR( doc_no ) ) }
endif
_params["area"] := 255 // ordeđujemo area
_params["alias"] := "tmp_docs" // određujemo naziv alijasa....
oPRINT := F18_PRINT_UTIL():new()
oPRINT:dbf_print := _dbf_print
oPRINT:params := _params
oPRINT:prepare_print_table() // kreira se print tabela TMP_DOCS.DBF
// kreiramo drugu tabelu TMP_DOC_IT
if _dbf_print
_params["table_name"] := F__DOC_IT //koristi se ALIAS
_params["order"] := "1" // order tabele
else
_params["table_name"] := "fmk.rnal_doc_it"
_params["order"] := { "doc_no", "doc_it_no" }
_params["condition"] := { "doc_no = " + ALLTRIM( STR( doc_no ) ) }
endif
_params["area"] := 256 // sljedeći area
_params["alias"] := "tmp_doc_it" // određujemo naziv alijasa....
oPRINT := F18_PRINT_UTIL():new()
oPRINT:dbf_print := _dbf_print
oPRINT:params := _params
oPRINT:prepare_print_table() // kreira se print tabela TMP_DOC_IT.DBF
// nakon toga možemo praviti indexe
select tmp_docs
index on .....
select tmp_doc_it
index on .....
i koristimo tabele za kreiranje izvještaja
ovim smo dobili emuliranje postojećeg stanja, bilo koja da se štampa koristi uvijek imamo baratanje sa DBF tabelama...
to mnogo uprosti i omogućuje da koristimo postojeći kod
Izmjenjeno od Saša Vranić prije više od 12 godina
Štampu
- naloga
- obračunskog lista
- naljepnica
prilagodio...
Izmjenjeno od Saša Vranić prije više od 12 godina
Klasa F18_PRINT_UTIL radi
- na osnovu dobivenih informacija u parametrima
1) ako je DBF varijanta:
- uzima strukturu zadate tabele i pravi novu tabelu te filuje podatke iz zadate tabele
2) ako je SQL varijanta
- uzima strukturu tabele sa servera
- kreira se tabela i puni sa podacima sa servera
Izmjenjeno od Saša Vranić prije više od 12 godina
sada se treba baciti na prebacivanje izvještaja, tu nema puno mudrovanja
Izmjenjeno od Saša Vranić prije više od 12 godina
prva 4 izvještaja su praktično identična, što znači da će moći jedan template da se koristi
M. montaža je već ODT
znači, sveukupno 5 izvještaja treba napraviti
Izmjenjeno od Saša Vranić prije više od 12 godina
izvještaj - pregled proizvodnje
Izmjenjeno od Saša Vranić prije više od 12 godina
- Status promijenjeno iz Dodijeljeno u Zatvoreno
- % završeno promijenjeno iz 0 u 100
