• Rezultati Niso Bili Najdeni

3 Načrtovanje programske rešitve

4.4 Urejanje zavihka Vsi podatki

Zavihek z vsemi podatki je namenjen prikazovanju podatkov o vseh transformatorjih, torej o transformatorjih, ki so že bili in še bodo odpremljeni. Zavihek je pomemben za dodajanje novih datumov o odpremah, saj v drugih zavihkih praviloma ne bodo prikazani transformatorji brez datuma odpreme, razen v redkih primerih. Najprej je torej treba poskrbeti za prikaz podatkov.

4.4.1. Prikaz podatkov

Najprej je bilo treba pregledati podatke, ki so nam dostopni v že obstoječi podatkovni bazi. Pregledali smo jih v programu MySQL Workbench. Želimo prikazati osnovne podatke transformatorja, na primer element PPS, serijsko številko, številko SAP, kupca in podobno. Želimo dodati in prikazati tudi podatke, ki še ne obstajajo v podatkovni bazi. Te tabele je bilo treba oblikovati in dodati v bazo.

Kot glavni identifikator smo določili serijsko številko, saj je med množico unikatnih oznak za transformator edina oznaka, ki vsebuje samo številke brez posebnih znakov, kar omogoča lažjo manipulacijo.

Prvi manjkajoči podatek je datum odpreme. V testno podatkovno bazo smo dodali tabelo z imenom odprema. Prvi stolpec te tabele vsebuje podatkovni tip številk, imenovan int(11). Vrednost v polju se samodejno povečuje in deluje kot primarni ključ. Drugi stolpec prav tako vsebuje samo številke.

Prikazuje serijske številke transformatorjev. Ta podatek je glavni za povezovanje tabel med seboj.

Naslednji je prikaz datuma v ustreznem podatkovnem tipu. Sledi podatek o tipu odpreme v podatkovnem tipu varchar(5). To pomeni, da je v polje lahko vnesen znakovni niz, dolg največ 5 znakov. Poznamo tri tipe odprem, in sicer glavni del, oprema ter avtocisterna. Uporabljene so oznake GD, O in AC.

V zavihku želimo tudi prikazati podatek o tem, ali se transformator nahaja na zunanjem skladiščenju.

Oblikovati je bilo treba tudi tabelo za to. Vsebuje ID, ki je primarni ključ in se samodejno povečuje, stolpec s serijsko številko transformatorja in stolpec, ki prikazuje, ali je transformator na skladiščenju v podatkovne tipu tinyint(1). Podatkovni tip je primeren za shranjevanje vrednosti TRUE/FALSE oz da/ne v obliki 1/0.

Za prikaz podatkov v tabeli je bil oblikovan pogled, imenovan pregled_vseh_podatkov. Ker elementa PPS v celoti ne dobimo iz podatkovne baze, ga je bilo treba sestaviti. Element PPS je sestavljen iz projektne številke, oznake kosa in karakteristične številke. Prikazuje se v svojem stolpcu, sestavimo pa ga znotraj poizvedbe. V tabeli prikazujemo še stolpec serijska številka, SAP naročilo, matični podatek, ponudbo, oznako, kupca, državo, datum odpreme glavnega dela, obrat, v katerem je bil izdelan, uspešnost FAT meritev in postavitev na zunanje skladiščenje. Pogled je bil oblikovan s

poizvedbo SQL z uporabo ukazov SELECT DISTINCT, SELECT MIN, WHERE, CASE, CONCAT, LEFT JOIN, ORDER BY, LIMIT ter operatorjev AND, OR in NOT.

Po oblikovanju pogleda je bilo treba prikazati podatke v gradniku, ki omogoča pregled podatkov v tabeli. V kodi je treba vzpostaviti povezavo do podatkovne baze. Na začetku vsake .cs datoteke, iz katere želimo dostopati do podatkovne baze, moramo dodati knjižnico MySql.Data.MySqlClient. Če tega ne storimo, nas razhroščevalnik opozori, da želene funkcije ne obstajajo.

Kodo za odpiranje povezave je priporočljivo umestiti v varovalni blok try catch kot prikazano na sliki 7. Namenjen je obravnavanju prekinitev, ko program naleti na napako ali neizvedljivo kodo, v nasprotnem primeru se program nepričakovano zaustavi. V try blok napišemo kodo, ki jo želimo izvesti. V našem primeru je to povezava do podatkovne baze. Tudi če je koda v celoti napisana pravilno, lahko pride do napak oz. izjem, če je na primer strežnik preobremenjen ali zaustavljen. V catch blok napišemo kodo, za katero želimo, da jo program izvede, če pride do napake. V našem primeru je to samo prikaz sporočila o napaki v novem oknu.

Vir: Lastni

Slika 7. Povezava do baze v varnostnem bloku

Za prikaz podatkov moramo v try bloku najprej instancirati razreda MySQLConnection in MySQLCommand. Določiti jima moramo parametre, kot so besedni niz za vzpostavitev povezave, poizvedba in prej instanciran razred MySQLConnection. Besedni niz za vzpostavitev povezave mora vsebovati podatke za povezavo v podatkovno bazo, kot so ime strežnika, vrata, uporabniško ime in geslo. Pomembno je, da razrede instanciramo znotraj using funkcije, ki v primeru, da pride do izjeme, poskrbi, da se povezava pravilno zapre. Naenkrat je namreč lahko odprto samo določeno število povezav, kar pomeni, da ko je dosežena zgornja meja, ni mogoče odpreti nove povezave.

Po odpiranju povezave moramo za prikaz tabele prebrati podatke s funkcijo ExecuteCommand iz objekta MySQLCommand. Če funkcija vrne tabelo, se podatki prikažejo v gradniku pregledovalnik tabel, v nasprotnem primeru se odpre pojavno okno z opozorilom, da želena tabela ne obstaja.

4.4.2. Dodajanje podokna Zunanje skladiščenje

V tabeli so prikazani podatki o vseh transformatorjih, ki bodo še odpremljeni ali pa so že bili. Je edini vir podatkov o transformatorjih, ki še nimajo vnesenega predvidenega datuma odpreme glavnega dela. Na zunanje skladiščenje včasih postavimo tudi transformator, za katerega predhodno še nismo bili obveščeni o datumu odpreme.

Na osnovnem oknu preimenujemo prvi gumb in spremenimo besedilo v Zunanje skladiščenje. V orodni vrstici izberemo možnost pogled in nato raziskovalec rešitve. Z desnim klikom na rešitev se nam odpre podmeni, iz katerega izberemo dodaj in s tem dodamo novo okno oz. obrazec v programsko rešitev. Oknu določimo lastnosti in ga ustrezno poimenujemo. V okno dodamo gradnike, ki jih potrebujemo. To so Label oz. oznaka, TextBox oz. vnosno polje, Button oz. gumb, GroupBox oz. vsebnik z obrobo in besedilom, CheckBox oz. potrditveno polje in ComboBox oz. kombinirano vnosno polje.

Na gumbu v osnovnem oknu dodamo dogodek, ki odpre novo okno za zunanje skladiščenje. V oknu prikažemo element PPS in serijsko številko transformatorja iz celice, ki je bila izbrana ob pritisku na gumb. Če je izbranih več celic in se te nahajajo v več vrsticah, se pokaže pojavno okno z opozorilom in v kodi je preprečeno odpiranje novega okna. V oknu prikazanem na sliki 8 lahko določimo, ali je transformator na zunanjem skladiščenju ali ne. Če je transformator na zunanjem skladiščenju, je pred shranjevanjem podatkov obvezna tudi določitev lokacije. Vse lokacije, ki obstajajo v podatkovni bazi, se pojavijo v spustnem seznamu ob kliku na kombinirano vnosno polje. Ko so podatki pravilno vneseni v polja, se ob pritisku na gumb Shrani vnesejo v podatkovno bazo.

Vir: Lastni

Slika 8. Podokno Zunanje skladiščenje

4.4.3. Dodajanje podokna Uredi lokacije

Zaradi spreminjanja lokacij skladiščenja transformatorjev smo dodali novo okno, kjer lahko urejamo poimenovanja lokacij skladiščenja. Dostopno je samo iz okna Zunanje skladiščenje. V okno smo poleg prej omenjenih oznak, gumbov, vnosnih polj in vsebnikov dodali gradnik ListBox oz. izbirni seznam.

V podatkovni bazi smo, da bi se izognili podvajanju podatkov, oblikovali novo tabelo za lokacije skladiščenja, imenovano lokacija_skladiscenja. Tabela vsebuje samo dva stolpca. Prvi stolpec je ID tabele podatkovnega tipa int(11). Je primarni ključ tabele in se samodejno povečuje. Drugi stolpec je podatkovnega tipa varchar(50) in je namenjen shranjevanju imen lokacij. Pri vpisovanju podatkov v tabelo za skladiščenje transformatorjev se v tabelo vpiše ID imena lokacije, tako se ob spreminjanju imena lokacije ime spremeni za vse skladiščene transformatorje na tej lokaciji.

Pri odpiranju okna za urejanje lokacije se vse obstoječe lokacije izpišejo v izbirnem seznamu. Okno, ki je prikazano na sliki 9, je oblikovano tako, da lahko obstoječe lokacije urejamo in brišemo iz seznama ali dodajamo povsem nova. Ob zapiranju okna se podatki v prej odprtem oknu Zunanje skladiščenje posodobijo in pri vnašanju podatkov lahko izberemo posodobljene vrednosti.

Vir: Lastni

Slika 9. Podokno Uredi lokacije 4.4.4. Dodajanje podokna Odprema

V rešitev smo dodali nov obrazec. Preimenovali in spremenili smo tekst na drugem gumbu na zavihku. Na gumb je vezan dogodek ob kliku, ki odpre novo dodano okno. Pri grafičnem oblikovanju okna smo uporabili gradnike, kot so vsebniki z obrobo in besedilom, gumb, oznaka ter vnosno polje.

Če je datum odpreme glavnega dela že vnesen v podatkovno bazo, se v odprtem oknu, kot je razvidno na sliki 10, prikaže obstoječi podatek, ki ga lahko spreminjamo.

Vir: Lastni

Slika 10. Podokno Odprema z vnesenim datumom

Zaradi načina vnosa podatkov v bazo je v primeru, ko še ni vnesenega podatka o številu posameznih odprem, treba najprej klikniti na gumb Dodaj vnos, ki je viden na sliki 11. V podatkovno bazo se v tabelo z imenom odprema doda zapis s serijsko številko in tipom odpreme GD.

Vir: Lastni

Slika 11. Podokno Odprema brez vnosa v tabelo

Ob kliku na gumb in dodanem zapisu v podatkovno bazo se v oknu pojavi nov vsebnik, ki vsebuje tri oznake in tri plošče s kombiniranim vnosnim poljem za vpis datuma. Vnosna polja omogočajo vpis datuma. Omejen je na pravilen format z upoštevanjem prestopnih let in ostalih zakonitosti. Na sliki 12 je prikazano kako je uporabnik opozorjen na nepravilnost s tem, da se vnosno polje obarva z rdečo barvo, če je vnos nepravilen ali če manjka. Ko je podatek v ustreznem formatu, se s klikom na gumb Shrani podatek vnese v podatkovno bazo in okno se zapre.

Vir:Lastni

Slika 12. Podokno Odprema s prikazovanjem napake pri vnosu podatkov