kb:pg:migracija_crystal_reports_obrazaca

Migracija Crystal Reports izveštaja na Postgres

TTX i COM izveštaji se ne moraju prepravljati jer njima Balans prosleđuje podatke.

Crystal Reports ne funkcioniše prirodno sa Postgres ODBC drajverom, jer ne vidi parametrizovane upite !

Izveštaji koji se oslanjaju na ODBC se moraju prebaciti na Crystal Reports Command objekat koji može da vidi parametrizovane upite na PGS bazama.


Na računaru na kojem je instaliran Balans i ima pristup bazama podataka u Data folderu postupak za prepravku takvih izveštaja je sledeći:

  1. Pokrenuti program Formula Checker
  2. Odabrati opciju 'obradi i podfoldere'
  3. Kliknuti na sličicu Postgres slona
    Direktorijum JET baze koja sadrži upite na koje se izveštaji oslanjaju zadaje se klikom na dugme foldera iznad sličice PGS slona.
  4. Na kraju procesa u Data folderu ili u folderu sa izveštajima će biti napravljen fajl Izvestaj_o_izvestajima.txt.
    Sadržaj tog fajla će biti spisak izveštaja sa pripadajućim SQL komandama za dobijanje podataka iz PGS baze.

    Ovi podaci biće neophodni za definisanje Command objekta u Crystal Designer-u !

    Na primer:

    E:\Razvoj\Assets\Reports_4\Artikli i Usluge\Kartica artikla (prosirena).rpt

Parametri: 5
{?inElID} {?inSklID} {?inDatStart} {?inDatEnd} {?InFal}
Tabele: 1
tabela rptProveraArtikla: ODBC —> SELECT * FROM {?dbSchemaName}rptProveraArtiklaMP({?inElID},{?inSklID},{?inDatStart},{?inDatEnd},{?InFal}::boolean)

  1. Otvoriti prvi izveštaj, desni klik na Database Fields pa opcija Set Datasource Location…
  2. U novom prozoru u gornjem polju 'Current Data Source' kliknuti na ime tabele/upita koji se koristi, a u donjem polju 'Replace with' kliknuti na 'Create New Connection' i unutar toga ODBC (RDO). Pojaviće se forma za odabir ODBC konekcije pa treba odabrati prethodno napravljeni PGS ODBC konektor sa isključenom opcijom TrueIsMinus1 (npr. PostgreSQL35W):
  3. Nakon toga treba kliknuti na Add Command u ODBC (RDO) odeljku pa na dugme 'Update'. Pojaviće se forma za unos SQL komande i parametara. U polje za SQL treba copy–paste komandu iz fajla Izvestaj_o_izvestajima.txt pa za svaki parametar u {?…} zagradama treba dodati odgovarajući bez tih zagrada klikom na dugme Create…

Uglavnom su parametri čiji naziv počinje sa InDat tipa DateTime, parametri koji se kastuju sa CBool () ili ::boolean su tipa Boolean, a ostali su tipa Number.


Value Type za parametre koji su dodatno uokvireni u apostrofe i za dbSchemaName je String, a za ostale je najbolje pogledati kroz QA za svaki slučaj.
Parametar dbSchemaName se od 7.3.2019. više ne koristi, a ako se koristi default value za njega ne treba zadavati.


VAŽNA NAPOMENA! Polje Parameter Name je case sensitive (osetljivo na velika i mala slova) i mora u potpunosti da odgovara nazivu parametra u Crstal Reports obrascu (sekcija Parameters).
U suprotnom, prilikom verifikacije baze podataka ne gine greška tipa:

Parameters exit but IPD isn't set. Please call SQLDescribeParam

ili

column "<ime parametra>" does not exist at character 95


Kada se izveštaj pravi na bazi koja je raščlanjena u DSN podešavanje na strani 2 u polje “Connect Settings” treba upisati SET SESSION search_path TO btek,bcus,bpub,public,pg_catalog;


Na kraju, kada se dodaju svi parametri u spisak, posle klika na OK pojaviće se forma za unos parametara (iz nepoznatog razloga pojavi se 2 puta) pa ako sve prođe kako treba u polju 'Current Data Source' će za Table Name pisati Command umesto imena tabele/upita.

Ako izveštaj ima podizveštaje ** koji koriste svoje upite onda u polju 'Current Data Source' treba za svaki od njih ponoviti postupak zamene upita SQL komandom iz fajla Izvestaj_o_izvestajima.txt

Ponoviti postupak za sve ostale izveštaje, ali ne zatvarati program Crystal Reports-a tako da se ne mora svaki put praviti nova ODBC (RDO) konekcija.

  • kb/pg/migracija_crystal_reports_obrazaca.txt
  • Last modified: 2020/01/13 23:43
  • by milano