"Od njive do trpeze", (Excela+VBA+SQL), autorski tekst Željko Ćulibrk, Business Controller, Volvo Truck Corporation

    [caption id="attachment_12917" align="alignnone" width="550"] Željko Ćulibrk, Business Controller, Volvo Truck Corporation Željko Ćulibrk, Business Controller, Volvo Truck Corporation[/caption]  

Bez obzira na veličinu, delatnost i kompleksnost, svako poslovno okruženje ima najrazličitije moguće izvore podataka i aplikacije koje ih opslužuju, kao što su SAP R3, Microsoft Dynamics NAV, Epicor iScala, Business Objects, Cognos, Access, Excel i slično. Ono što sve njih povezuje su ljudi koji proizvode razne izveštaje za potrebe upravljanja, merenja performansi ili zakonskih obaveza. Ti nadljudi, često u malim jedinicama vremena, povezuju SAP/BEx izveštaje, podatke o prodaji u raznim Excel tabelama, standardne izveštaje lokalnih ERP programa, korporativne podatke sa raznih data warehouses... Ta raznolikost formata i baza podataka kojima treba da se pristupi, istovremeno nameće potrebu da controlleri moraju da budu vešti u manipulaciji svima njima. Jedno od rešenja je mala lokalna baza podataka (uz korišćenje već postojećih baza kojima imamo direktan pristup) na kojoj će svi ti šaroliki podaci biti „presloženi“ i uređeni za dalju upotrebu.

Structure Query Language (SQL) je jezik kojim se komunicira sa bazama podataka kao što su MS SQL, ORACLE, IBM DB2, MySQL, MS Access, Excel... Zajedničko mesto gde bi se svi ti podaci sakupljali, manipulisali i vraćali nazad u baze podataka mogao bi da bude iExcel sa svojim neprikosnovenim Visual Basic for Applications (VBA) modulom. Mogućnosti koje daje Excel sa svojim funkcijama dižu se na kvadrat korišćenjem VBA, a na kub sa korišćenjem SQL-a. U redu su sve napredne Excel funkcije (INDEX, MATCH, OFFSET, VLOOKUP, GETPIVOTDATA, DSUM, SUMIF, SUBTOTAL, FIND, SUBSTITUTE itd), uslovno formatiranje, validacija podataka, „goal seek“, grafikoni i pivot tabele, ali tek kada „na dugme” mogu da dobacim do bilo čega i bilo gde na mreži, onda je to moć. VBA je sastavni deo svake Microsoft Office aplikacije (Alt+F11) i daje nam tu moć, a sa Record Macro bez ikakvog predznanja polako nas uvlači u taj bogati svet neograničenih mogućnosti.

    Slika 1

Svaki podatak (DATA) ima svog vlasnika (OWNER) i ima svoju fizičku lokaciju - nalazi se na određenom serveru u određenoj bazi/tabeli ili određenom Excel workbook/worksheet/cell. Taj podatak može da se menja (CREATE/UPDATE/DELETE) i može da se koristi (SELECT). Samo vlasnik sme da menja podatke! Ovo samo znači da svako “prekucavanje” podataka, copy/cut/paste predstavlja narušavanje integriteta podatka, a redundansa njegove fizičke lokacije predstavlja rizičnu avanturu u svakom daljem korišćenju tog podatka. Ako sve ovo prihvatimo, razumeli smo da je „baza“ podacima - baza podataka.

Od njive … U našoj kompaniji Marija unosi kurseve poslovnih banaka u sistem. Kasnije, Nataša pravi izlazni račun za prodate kamione ugovoreno u evrima po prodajnom kursu banke na dan fakturisanja. S obzirom na već primljeni avans, kalkulacija se polako usložnjava ... Kako pomoći da ne dođe do greške prilikom kursiranja?

Na sajtu poslovne banke nalazi se tabela sa važećim kursevima za tekući dan. “Tradicionalan” način podrazumeva korišćenje pretraživača, odlazak na stranicu banke i prekucavanje vrednosti u ERP aplikaciju u za to predviđeno mesto. Copy/Paste je malo bolja varijanta. Međutim, greška može da nastane ako smo u pogrešnom redu (USD umesto EUR) ili pogrešnoj koloni (prodajni za efektivu ili za devize) ili Marija nije došla na posao pa je menja koleginica kojoj ta operacija nije dnevna rutina …

Mnogo bolja varijanta je uvoz podatka. Umesto web pretraživača iskoristićemo Excel. Napravite sheet “Banka”. Probajte da odete u Data/From Web i u ćeliju A1 i povežite sadržaj stranice http://www.raiffeisenbank.rs/pocetna.849.html Lepo. Sada imamo podatke u sheetu “Banka”. U sheetu “Marija” odradimo gimnastiku uz pomoć poznatih Excel funkcija.

Slika 2

U ćeliji C17 imamo spreman SQL upit koji šaljemo na izvršenje. U njemu je definisana šifra valute, datum i vrednost. U Developer/Insert/Button (Form Control) ubacujemo “dugmiće” na koje “kačimo” odgovarajuće VBA procedure.

Sledećeg poslovnog dana Marija “osvežava“ stranicu i unosi novi kurs... Ceo proces sastoji se od dva klika, a integritet podataka je zadovoljen. Kontrolom pristupa aplikaciji obezbeđujemo se od neautorizovanog unosa podataka u naš sistem.

  Slika 3  

Slika 2

 

Connection ToSQL je set instrukcija za povezivanje sa bazom podataka u kojem se nalaze username, password, ime servera... Ove parametere možete da dobijete od vašeg IT administratora!

… do trpeze Nataša je u svoju aplikaciju ubacila iznos ugovorene cene, datum prijema avansne uplate i iznos avansa u EUR. Sada izdaje konačni račun i jedini ulazni parametar je datum konačnog računa (žute ćelije). Nataša ima VBA funkciju GetRate koja joj vraća vrednost kursa iz SQL-a.

Šire gledano, na ovaj način možemo da dobijemo bilo koji podatak iz cele baze na koju je ova funkcija „nakačena“. Prostim SQL upitom od jedne rečenice možemo da prevučemo na milione redova i desetine kolona u naš, s razlogom, neizostavni Excel.

  Tekst je preuzet iz Controlling magazina 04. Autor teksta je Željko Ćulibrk, Business Controller, Volvo Truck Corporation