Microsoft Office Access
uređuje Branislav Mihaljev, MVP

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

Još o Accessu
 


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

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Razni trikovi

Nivo:  NIVO 1 - klinite za objašnjenje


Verujemo da su trikovi u radu sa nekim programom uvek rado čitani. Pod "trikovima" smatramo jednostavne rutine kojima se postižu naizgled proste, ali svakako korisne operacije u Accessu. Pogledajmo neke od njih.

Promena aktivnog štampača

Poznato vam je da Access 2003 lokalizovan na srpski jezik. Kada korisnik zatraži da mu omogućite jednostavan odabir štampača, verovatno ćete mu omogućiti opcije podešavanja štampača (Print Setup) dostupnim. Od tog koraka, Windows preuzima dalje operacije - ako korisnik ima instaliran lokalizovani Windows, videće okno podešavanja štampača na srpskom jeziku. Svejedno, postoji nekoliko načina da u samom Accessu podesite željeni štampač na koji će biti prosleđeni izveštaji.

Za Access u verziji 2000 i ranije, potrebno je da napišete funkcije koje će se preko API interfejsa obraćati sistemu i "izvući" podatke o štampaču. Čak i najkraća funkcija koju smo uspeli da pronađemo poziva tri API funkcije i toliko je velika da je besmisleno da je ovde prenosimo (ako želite primer funkcije za odabir štampača, ). Međutim, ako koristite Access 2002 ili noviji, postoji veoma jednostavan način da odaberete štampač upotrebom objekta Printer.

Da biste utvrdili vrednost osnovnog štampača iskoristite sledeće komande:

dim strOsnovniStampac as string
strOsnovniStampac = Application.Printer.DeviceName

Zatim možete privremeno promeniti štampač sa osnovnog na neki drugi jednostavnom komandom:

Set Application.Printer = Application.Printers("Naziv štampača")

I konačno vratiti štampač na osnovni:

Set Application.Printer = Application.Printers(strOsnovniStampac)

Ugnežđeni upiti

U jednom od prošlih priloga, dotakli smo se tehnike ugnežđenih upita (upitima unutar upita). Proširimo stečeno znanje ne jednom primeru. Otvorite bazu primera Northwind i kreirajte tabelu Inventar (ili Inventory ako koristite engleski jezik). Polja tabele i relacije postavite prema slici:

Tabela inventara će sadržati ulaze robe u magacin, dok će tabela OrderDetails sadržati izlaze robe iz magacina. Ulaznu količinu utvrdite pozitivnom vrednošću polja UnitAdd, dok za izlaz možete koristiti vrednost polja Quantity tabele OrderDetails. Za ovaj primer je bitno da napunite tabelu inventara sa što više različitih vrednosti. Recimo da bi 200.000 zapisa u tabeli inventara i par hiljada zapisa u tabeli OrderDetails bilo dovoljno za test. Kreirajte i novi upit i pređite u SQL prikaz. Prenesite sledeću SQL strukturu:

SELECT
  Products.ProductName, Products.SerialNumber, Products.UnitPrice,
  (SELECT sum(UnitsAdd)
     FROM inventory
     WHERE ProductID = Products.ProductID) AS TotalAddStock,
  (SELECT sum(Quantity)
     FROM OrderDetails
     WHERE ProductID = Products.ProductID) AS TotalSoldStock,
  (TotalAddSTock-TotalSoldStock) AS InStock
FROM Products;

Prvi ugnežđeni upit će sabrati sve ulaze robe u magacin, dok će drugi ugnežđeni upit sabrati sve količine na izlazu. Količina prodate robe će biti oduzeta od broja kupljene. Pokrenite upit na prosečnom računaru i pokušajte da utvrdite vreme za koje će biti proračunato stanje zaliha. Upit će rezultate vratiti trenutno!

Otključavanje zaštite spolja

Da li se sećate komande za onemogućavanje automatskog pokretanja programa ili objekata u Access bazi? Možda je i koristite? Da vas podestimo: u dijalogu Tools / StartUp možete podesiti da se po učitavanju baze podataka pokrene određeni formular, a da se isključi prikaz ostalih objekata baze. U tom slučaju, bazu možete učitati bez automatskog pokretanja kada tokom učitavanja držite pritisnut taster Shift. Kako biste dodatno zaštitili aplikaciju, osobinu AllowBypassKey ćete postaviti na True; time ćete sprečiti dejstvo tastera SHIFT, ali ćete tako zaštititi bazu i od vas samih! I sad, šta ako nemate verziju baze koja nije zaštićena automatskim pokretanjem? Postoji nekoliko trikova da pomenutu osobinu vratite na False, ali postoji i veoma jednostavan i univerzalan način. Iskoristite sledeći program:

Dim db As Dao.Database
Set db = OpenDatabase(NazivBaze)
MsgBox ("Zaštita isključena, rezultat = " & _
ChangeProperty("AllowBypassKey",
_dbBoolean, False, MyDb))

Program možete upotrebiti u zasebnoj bazi podataka. Dovoljno je da izmenite parametar NazivBaze i pokrenete program.

Generisanje slučajnog datuma

Da li vam je nekada zatrebalo da generišete nasumični datum? Recimo, to bi moglo biti korisno u prilikama kada je potrebno da testirate aplikaciju na različite vrednosti datuma. Slučajni broj ćete generisati funkcijom Rnd, ali istu funkciju možete upotrebiti i za generisanje nasumičnog datuma. Prilažemo dva primera pomoću kojih možete generisati nasumični datum u zadatom intervalu, odnosno bilo koji nasumični datum.

'Generiše nesumičan datum u zadatom intervalu
Int((UpperDate - LowerDate + 1) * Rnd + LowerDate)

'Generiše bilo koji nasumičan datum
Int(Rnd() * CDbl(Date + 1))

Od ovih komandi možete generisati funkcije koje možete pozvati iz bilo kojeg događaja:

Function RandomDateInRange(LowerDate As Date, _
   UpperDate As Date) As Date
  RandomDateInRange = Int((UpperDate - LowerDate + 1) * _
     Rnd + LowerDate)
End Function

Function RandomDate() As Date
    RandomDate = Int(Rnd() * CDbl(Date + 1))
End Function

Funkciju možete testirati zadavanjem sledeće komande u oknu Intermediate:

? RandomDateInRange(#1/1/2006#, #31/12/2006#)
? RandomDate

Rezultat će biti nasumični datum 2006. godine, odnosno proizvoljan nasumični datum.

 

  (C) 2000-2009 Praktikum na Webu

PC 123


 
 

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.