Škola Accessa
predavač: Branislav Mihaljev

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Škola Praktikuma

Škola Accessa
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 Praktikum na Webu
 

Čas 9 - Funkcije komandne table

Razvoj jednostavne aplikacije namenjene poslovanju biblioteke ulazi u završnu fazu. Paralelno sa "šminkom" razvićemo odgovarajuće upite (za izdvajanje podataka po nekom kriterijumu) i izveštaje bazirane na upitima.

Tasterima na komandnoj tabli dodelićemo odgovajuće nazive, tasterske prečice i programske akcije.

Komanda tabla, kao centralni deo aplikacije, povezuje ostale elemente baze, odnosno programa. O osnovama ovog elementa aplikacije više možete pročitati na prethodnom času.

Otvorimo formu frmKomandnaTabla u režimu izmene dizajna. Tasterima ćemo prvo dodeliti nazive i prečice sa tastature za brz pristup. Na prošlom času napravljeni plan za raspored tastera ćemo dopuniti na sledeći način, predviđajući naziv tastera i tekst koji će se nalaziti na njemu:

Opis Name Caption
Izdavanje / vraćanje knjige Izdavanje &Izdavanje / Vraćanje knjiga
Forma 'frmCitaoci' Citaoci Čitao&ci
Forma 'frmKnjige' Knjige Knji&ge
Pregled dužnika Duznici Pregled &dužnika
Pregled svih knjiga SveKnjige Pregled &svih knjiga
Pregled izdatih knjiga po čitaocima IzdateKnjige Pregled i&zdatih knjiga
Arhiviranje baze + Kompresija baze Arhiva Kompesija i &arhiviranje programa
Kraj rada Kraj &Kraj rada

Osobina Name je naziv tastera čije se ime upotrebljava u programu, dok je Caption tekst koji će se ispisivati na tasterima. Znak & (tzv. ampersend) ispred određenog karaktera označava prečicu sa tastature za pristup tom tasteru. U našem primeru ispred karaktera "d" na tasteru "Pregled &dužnika" stoji znak &, što Accessu (ovo je standardizovano na nivou operativnog sistema) govori da se pritiskom na tastaturu, na slovo "d" aktivira odgovarajući taster na formi, kao da smo levim klikom miša kliknuli na njega. Obratite pažnju da, dok je forma u fokusu, nije neophodno kombinovati hot-key sa tasterom ALT. Za pretpostavku, ako se nekom od menija pristupa preko tastera sa &d i ako je u isto vreme aktivna forma koja na sebi ima taster sa &d, meniju ćemo pristupiti sa ALT+d, a tasteru na formi samo pritiskom na d.

Valja obratiti pažnju da se na formi ne postavi isti hot-key za pristup dvoma komandnim tasterima: pri aktiviranju "vrućeg tastera" aktiviraće se prvi na formi.

Postavimo osobinu fonta za taster "Kraj rada" na "bold". Sada komandna tabla treba da ima sledeći izgled:

Klikni za punu sliku

NAPOMENA: da bi datum u naslovu bio formatiran tačno kao na ovoj slici, potrebno je da u apletu Regional Settings u Control Panelu, na listu Date, u polje Long Date Style postavite masku datuma dddd, d. MMMM yyyy.

Vratimo se u režim izmene dizajna za ovu formu i pođimo od jednostavnijih događaja. Prvo, za taster "Kraj" postavimo sledeći program u njegov događaj OnClick:

Dim Response As Integer
Response = MsgBox("Kraj rada?", vbYesNo, "Pažnja!")

If Response = vbYes Then
    DoCmd.Quit
Else
    Cancel = True
    Response = acDataErrContinue
End If

Klikom na taster "Kraj rada" ili pritiskom na taster (sa tastature!) k Access postavlja kontrolno pitanje.

Odgovorom na Yes (ili samo y sa tastature) program završava rad. Odgovorom naNo (ili n) poništava se akcija, preskače se poruka o grešci koju Access generiše i program nastavlja rad. Kontrolno pitanje nije neophodno, ali sprečava slučajan izlazak iz programa, ako operater nehotice pritisne taster k na komandnoj tabli.

Forma za pristup knjigama i čitaocima ćemo pristupati preko tastera "Citaoci" i "Knjige". Za taster "Citaoci" postavimo sledeći program u događaj OnClick:

DoCmd.Minimize
DoCmd.OpenForm "frmcitaoci", acNormal

Ova dva reda programa prvo minimizuju Komandnu tablu i prikazuju formu frmCitaoci. Nakon što operater zatvori formu frmCitaoci, Komandna tabla treba da vrati prvobitni oblik. Za taster "Citaoci" postavimo još jedan programski red u događaju OnGotFocus:

DoCmd.Restore

Nakon što snimite izmene i kliknete na taster "Citaoci", Komandna tabla se minimizuje i otvara se forma za rad sa čitaocima. Ali, kada na formi za rad sa čitaocima kliknemo na taster "Zatvori masku", aktivna forma se zatvara, a Komandna tabla ostaje umanjena! Naime, nama je aktivan i prozor baze i on prvi dobija fokus nakon zatvaranja forme frmCitaoci. U normalnim okolnostima, prozor baze se drži sakriven i Komandna tabla će prva dobiti fokus, odnosno, aktiviraće se događaj OnGotFocus na tasteru "Citaoci" koji će vratiti formi prvobitnu veličinu. Ovo ponašanje će biti jasnije u kasnijoj fazi razvoja programa, kada budemo prozor baze držali sakrivenim.

Proceduru opisanu za taster "Citaoci" sprovedimo i na njemu susedni - "Knjige" sa jednom izmenom: umesto frmCitaoci u događaju OnClick postavićemo frmKnjige.

Ovim smo razrešili ponašanje tri tastera na komandnoj tabli.

NAPOMENA: u programima sa mnogo formi ne praktikuje se stalno otvaranje i zatvaranje formi, jer se tako gubi na brzini rada aplikacije. Umesto metoda DoCmd.OpenForm i DoCmd.Close koriste se metode Hide i Show. Naime, sve forme se po startu aplikacije učitaju u memoriji i sakriju se od prikaza. Zatim se, po potrebi, promenom parametara Hide i Show menja njihova vidljivost. Ova operacija je praktično trenutna, ali po cenu povećane potrošnje radne memorije.

Prvi izveštaj

Prvi izveštaj ćemo kreirati za taster Komandne table "Pregled svih knjiga". Izveštaj je jednostavan i ne zahteva posebne kriterijume upita, jer prikazuje sve knjige u našoj biblioteci.

Zatvorimo Komandnu tablu i pređimo na karticu Reports. Klikom na taster New i iz menija odaberimo Design View. Otvorimo karticu osobina za izveštaj i Record Source postavimo na Knjige. Spisak polja table knjige dobijamo u zasebnom prozoru.

Pre nego što pređemo na dizajniranje izveštaja i raspoređivanje polja, objasnićemo izgled "sirovog", praznog izveštaja.

Osnovni izveštaj je podeljen na tri sekcije. U prvu, gornju, pod nazivom Page Header se postavlja naslov izveštaja, eventualno datum i neki drugi sličan sadržaj koji se pojavljuje samo na prvo strani. U drugu sekciju pod nazivom Details se postavljaju polja koji su nosioci podataka. Tu se može postaviti i tekst, ali će se on za svaki zapis iz tabele ili upita ponavljati za svaki prikazani slog. U poslednju sekciju Page Footer postavlja se sadržaj koji se nalazi samo na kraju izveštaja.

Izveštaj treba da je pregledan i jednostavan, uz minimalnu količinu dodatnih informacija. Ako nije neophodno postaviti vreme i datum štampanja to ne treba ni raditi. U našem slučaju interesuje nas sa koliko ukupno knjiga raspolaže biblioteka i kog datuma je izveštaj sačinjen.

U sekciju Page Header postavićemo jednu labelu u kojoj ćemo upisati Pregled svih knjiga. Za font i veličinu predlažem Arial, 16, bold. Uravnajmo centralno u odnosu na list ovu labelu. Postavimo još jednu labelu u gornjem levom uglu hedera i u nju upišimo Biblioteka: ovde dođe naziv!.

Iz liste polja tabele Knjige selektujmo prvu stavku ID_Knjiga i prevucimo je na izveštaj u drugu sekciju - Details:

Selektujmo labelu ID_Knjiga i obrišimo je, tako da ostane samo polje sa podacima ID_Knjiga. Ovo polje umanjimo i premestimo ga u gornji levi ugao sekcije Details. Zatim u sekciji Page Header postavimo novu labelu, u nju upišimo ID i uravnajmo ispis teksta centralno. Ovu labelu postavimo tik iznad sekcije Details iznad polja ID_Knjiga, tako da po veličini bude jednaka sa poljem:

Uradimo to i za preostala polja tabele Knjige:

Klikni za punu sliku

Sada "dovucimo" sekciju Page Footer do polja iz tabele Knjige:

Kako smo rekli da je datum veoma bitan za ovakvu vrstu izveštaja, postavimo jedan Text Box u sekciju futera, obrišimo njegovu labelu i za vrednost upišimo =Date(). Ova funkcija daje vrednost trenutnog datuma. Način ispisa možemo podesiti na kartici osobina za ovo polje, a ja predlažem da bude tipa Long Date, gde se ispisuje datum u obliku poput Ponedeljak, 5. Mart 2001. Uravnajmo ovo polje uz desnu ivicu izveštaja i ispis teksta postavimo na desno uravnanje.

Konačno, snimimo izveštaj pod imenom rptPregledSvihKnjiga i proverimo njegov izgled pritiskom na taster Preview.

Vratimo se Komandnoj tabli i događaju On Click pridružimo sledeći programski red:

DoCmd.OpenReport "rptPregledSvihKnjiga", acViewPreview
DoCmd.Maximize

U događaj On Got Focus postavimo:

DoCmd.Restore

Obratite pažnju da ako u programskom redu izostavite acViewPreview klik na taster će štampati izveštaj, umesto da ga prikaže na ekran.

Kako su događaji ostalih tastera neposredno vezani za modul izdavanja i vraćanja knjiga njih ćemo obraditi na sledećem času, jer prvo moramo osmisliti najefikasniji način rada sa zaduživanjem i razduživanjem.

Ako ste pažljivo pratili sve prethodne časove, verovatno ćete naći "rupu" u programu. Nešto što je veoma bitno za rad biblioteke, a na neki način je ispušteno, odnosno, na formama nije predviđeno da se nađe. Ako ste sami uspeli da dođete do pitanja i odgovora, možete opušteno sačekati sledeći čas. A ako niste, ne budite nestrpljivi! Odgovor ćete naći u jednom od sledećih časova. Do tada možete sami proširiti Komandnu tablu tasterom "Pregled svih čitalaca", uz koga ćete kreirati izveštaj za čitaoce.

Na sledećem času počinjemo od modula za izdavanje i vraćanje knjiga na koga će se nadovezati ostale funkcije Komandne table.

 Datoteka cas09.zip (127 kb) Možete preuzeti spakovanu datoteku baze Bibl_09.MDB sa razrađenim primerom (veličina ZIP datoteke je 127 kB), ako vam je ovaj deo do sada poznat ili ako vam vežba negde zapne.

REZIME ČASA 9

Nakon što smo u prvom delu kursa pažljivo razradili strukturu baze biblioteke i samo definisali par formi, odjednom smo prešli na suprotni kraj, definišući komandnu tablu koja je "najviši" sloj aplikacije; tek smo onda počeli da se bavimo operativnim jezgrom aplikacije. Neka vas to ne začudi, pošto je to uobičajena metoda brzog razvoja aplikacija (RAD - rapid application development). Malo smo pričali o povezivanju događaja sa tasterima komandne tabele, a potom krenuli sa još jednim važnim elementom aplikacije - izveštajima. Potrudite se da savladate elementarne tehnike povezivanja tabele i izveštaja, pošto izveštaji čine jedan od krajnjih ciljeva svake ozbiljne aplikacije.

 

Čas 10 - Izvršni moduli aplikacije

 

  (C) 2000-2011 Praktikum na Webu

8. mart 2001.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2011; Valinor Design; sva prava pridržana.