Microsoft Office Access |
|
|
Saveti za efikasan rad, drugi deo - VBANivo:
Život čine male stvari, a efikasan rad počiva na sitnicama. Sadržaj
Problem programera-početnika u Accessu je sintaksa naredbi koja se koristi u Visual Basicu. Generalna preporuka je da, ako ne želite da prevrćete ogromne knjige samo da biste našli kako se sabiraju časovi, zapisujete ili ukucavate u jedan tekst fajl po jedan primer za svaku primenu. Bez obzira na to da li vam primer koristi u datom trenutku, ovo prikupljanje primera će vam višestruko uštedeti vreme kad nešto zapne samo zbog sintakse. Recimo, ono što me stalno muči i nikako da zapamtim (naravno dok nisam počeo da zapisujem primere na posebno mesto) je kako postaviti filter za otvaranje izveštaja. Kao po pravilu, redom probam sledeće kombinacije: DoCmd.OpenReport "GamFix", _ od kojih, naravno, ni jedan ne radi. Prava kombinacija glasi: DoCmd.OpenReport "GamFix", _ Dakle, filter za otvaranje izveštaja treba ograditi navodnicima, dok znakovi
uzvika znače da se referencira polje sa maske-forme (pogledajte objašnjenje
u prvoj grupi saveta o efikasnom radu u Accessu Neki od sledećih saveta sadrže primere koje možete iskoristiti za svoju "knjigu beležaka primera" za rad sa Visual Basicom. Sabiranje časovaSabiranje časova zna da bude muka u Accessu, jer ako postavite dva polja Data/Time u tabeli i njih poželite da saberete tako da rezultat uvek bude u časovima, sigurno nećete dobiti to što želite - ne bar dok ukupan zbir ne prelazi 24 časa. Za razliku od Excela, Accessovo polje Data/Time je ograničeno na realno vreme kod koga sekunde i minute mogu ići samo do 60, časovi samo do 24 itd. Ako želite da saberete, recimo, 23:00 časa i 02:00 časa rezultat neće biti očekivanih 25:00 časova, već će u polju pisati 01:00. Access jednostavno ne sabira časove kako vi želite, pa se mora pribeći stalnoj konverziji - časove pretvarajte u decimalni zapis. Uz ovaj savet prilažem jedan od primera za vašu beležnicu. Časovi se sabiraju na sledeći način: Me!UkVreme = Me!Vreme1 + #02:00:00# Ovaj primer na Vreme1 dodaje dva časa i smešta ga u polje UkVreme. Undo ili Cancel?Iako rade slične stvari razlike postoje: Cancel zabranjuje snimanje sloga (record), a Undo uklanja unete podatke (vraća pređašnje stanje). Pretvaranje praznog polja u vrednost 0Kada u polju tabele ne stoji ništa, to ne znači da je vrednost tog polja nula, te se kao takvo ne može sabrati sa nekim brojem. Prilažem funkciju koja će prazna polja određene tabele popuniti nulama: Sub FillDown(ByVal strTable As String, _ Funkciju pozovite sa: FillDown "table1", "Auto#", "Field1" Forma sa List-boksom automatski selektuje prvu vrednostPo otvaranju forme sa list-boksom, Access očekuje da kliknete na neko polje u okviru liste kako bi prikazao ostale podatke koji se filtriraju upravo na osnovu vrednosti iz liste. Zgodna stvar je da se po otvaranju forme automatski selektuje prvo polje. U događaju GotFocus list-boksa ubacite sledeći kod: Me!lstBox.ListIndex = 0 Kumulativan zbir (Running Sum) u izveštaju AccessaRunning Sum je polje u izveštaju koje daje kumulativan zbir, kao što to pokazuje sledeći primer:
Prilažem kod koji ćete čuvati u modulima kao funkciju: Private Function GetRunningSum(pvarItemNo As Variant) U polju u kome vam treba ovakva suma, za Control Source upišite "=GetRunningSum([ItemNo])" pod pretpostavkom da je ItemNo broj i da je jedinstveno polje u čitavoj tabeli. Izdvajanje slogova se delom teksta u upituSem što upit izdvaja podatke iz tabele ili više njih, ponekad je potrebno i dodatno izdvojiti slogove u kojima se pojavljuje deo reči (Any Part Of Field). Uzmimo za primer da imate bazu iz koje treba izdvojiti samo one slogove u kojima se pojavljuje reč "Preduzeće". U dizajn modu upita, u polju Criteria upišite *Preduzeće* i biće izdvojeni samo oni slogovi kod kojih bilo gde u tom polju postoji reč "Preduzeće". Autofill polja kod unosaFunkcija Autofill radi tako da kad započnete unos i pritisnete prvo slovo ili cifru polje se dopunjava sa prvom, već unetom vrednošću. Ovo se, takođe, može rešiti bez programiranja. Polje za koje želite da ima funkciju Autofill promenite u ComboBox, RowSource mu postavite na polje iz tabele odakle potiče i postavite mu visinu na 1. "Pokvarena" bazaAko ste jedan od onih srećnika kojima je "pukla" baza i gotovo više ništa se ne može uraditi sa njom (nakon što ste već pokušali Repair i Compact), ostaje vam da pokušate čuveni nedokumentovani trik: pokrenite Access iz komandne linije sa parametrom /decompile. Npr: c:\<putanja_do_Accessa>\Access.exe baza.mdb /decompile
|
|
Vrh stranice Prethodna stranica Naslovna strana Mapa sajta Pretraga |
| AFORIZAM ZA DANAS | OVIH DANA SLUŠAMO... |
| Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana. |