Microsoft Office Access |
|
|
Funkcije datuma i vremenaNivo:
Access nudi brojne funkcije i operatore za rad sa datumima i vremenima koje se često koriste u programima radi utvrđivanja vremenskog raspona događaja. O nekima smo već pisali, a sada ćemo se podsetiti na njih, posvećujući posebnu pažnju na verziju programa 2003. Primere upita kojima ćemo ilustrovati upotrebu možete primeniti na bazi primera Norhtwind. Funkcije kojima ćemo ispitati tekući datum su Date i Now. Date vraća samo datum, a funkcija Now pridružuje datumu tekuće vreme. U upitu ćemo pridružiti naredbu SELECT: SELECT Format (Now(), "dd. mmm yyyy.") Za rezultat ćemo dobiti tekući datum u obliku "06. apr 2004.". Iskaz mmm kazuje da će se mesec u datumu prikazivati sa tri slova. Navođenjem četiri slova m naziv meseca će se prikazivati u punom obliku - "april", a skraćivanjem operatora na dva slova mm, mesec će biti iskazan u brojčanom obliku sa dve cifre - "04.". Prikaz i zapis datuma u Accessu zavisi od regionalnih podešavanja operativnog sistema, a pojedini korisnici zaboravljaju da postave ispravan region, pa ostaju na osnovnim podešavanjima, gde se datum prikazuje i čuva u američkom formatu. Za početak ne zaboravite da proverite kako je podešen vaš Windows: u Control Panelu pokrenite opciju Regional and Language Options, a zatim podesite region na Serbian (Latin) ili Serbian (Cyrilic). Kreirajte novi upit u bazi primera i pređite na prikaz SQL strukture. Prenesite sledeću SQL strukturu u okno upita: SELECT HireDate, Day(HireDate) AS Dan, Weekday(HireDate) AS Dan_u_nedelji, Month(HireDate) AS Mesec, Year(HireDate) AS Godina FROM Employees; Upit će za rezultat ispisati kolonu u kojoj se čuvaju datumi zaposlenja radnika, a u dodatne četiri kolone moći ćete da vidite redni broj dana zaposlenja, redni broj dana u nedelji, redni broj meseca i godinu zaposlenja. U ovom primeru redni broj 1 dana u nedelji označava nedelju, a redni broj 7 subotu! Sledeći primer ilustruje upotrebu funkcije DatePart kao kriterijum upita za izdvajanje podataka. U tabeli zaposlenih potražićete one koji su rođeni pre 1975. godine i čiji rođendan pada u trećem kvartalu godine, kako biste im priredili zajedničku proslavu:
SELECT * FROM Employees WHERE
((DatePart("q", [BirthDate]) = 3) and _
DatePart("yyyy", BirthDate) < 1975);
Funkcijom DatePart možete izdvojiti deo datuma po kriterijumu dana (d), meseca (m), godine (y) ili pak kvartalni period godine (q). Razliku između dva datuma iskazanu u godinama ćete pronaći upotrebom funkcije DateDiff:
SELECT
EmployeeID, FirstName, BirthDate,
DateDiff("yyyy", BirthDate, Date()) AS Godine
FROM Employees;
Ako upotrebite ovu SQL strukturu, primetićete da upit ignoriše mesec i datum pri proračunu, tako da se tek s početkom nove kalendarske godine povećava starost zaposlenih. Za precizno izračunavanje godina starosti upotrebite sledeću strukturu:
SELECT
EmployeeID, FirstName, BirthDate,
DateDiff("yyyy", [BirthDate], Now()) + _
Int(Format(now(), "mmdd") < _
Format([BirthDate], "mmdd")) AS Godine
FROM Employees;
Ponekad je potrebno na jednostavan način pronaći datum koji se nalazi u budućnosti u odnosu na događaj koji se desio, ili je potrebno pronaći npr. zaposlenog koji je napunio određeni staž. U sledećem primeru ćemo potražiti datum odloženog plaćanja na 60 dana. Na formi postavite nevezanu kontrolu i u nju prenesite sledeći sadržaj: = DateAdd("d", 60, [Datum isporuke robe]). Na istoj formi morate imati kontrolu pod nazivom "Datum isporuke robe". Koristeći funkciju DateAdd, potražićemo i zaposlene koji u firmi Northwind rade duže od 10 godina:
SELECT
EmployeeID, FirstName, HireDate,
DateAdd("yyyy", 10, HireDate)
FROM Employees;
Kada od korisnika zahtevate da unese datum kroz dijalog polje, potrebno ga je na neki način proveriti da li je ispravno unešen, ili će korisnici (verujte) svašta kucati na mestu separatora. Funkcija kojom proveravate ispravnost datuma je DateValue, a možete je upotrebiti na sledeći način: SELECT DateValue("05 Maj 2004") AS ValidDate; Funkcija DateSerial vraća datum za zadati ulazni podatak godine, meseca i dana u kojima se mogu izvršavati matematičke operacije. Funkcija prvo izračunava zadate operacije, a zatim vraća vrednost datuma. U sledećem primeru tražimo dan pre prvog marta ove godine: SELECT DateSerial(2004,3,1-1) AS Expr1; Za rezultat se dobija 29.2.2004, a konkretan primer može poslužiti pronalaženju prestupne godine. Obratite pažnju na redosled godine, meseca i dana u funkciji - godina je prvi parametar, a dan poslednji. Naredne dve funkcije se mogu koristiti samo od verzije Access 2002. Funkijom WeekdayName ćete potražiti naziv dana u nedelji. Fukciji je neophodno proslediti tri parametra: prvi parametar određuje da se naziv vraća u obliku teksta, drugi određuje skraćeni ili puni oblik i treći redni broj dana: SELECT WeekdayName(1, False, 1) AS PrviDanUNedelji; Slično ovoj funkciji radi MonthName(broj). Funkcija uzima samo jedan parametar - redni broj meseca u godini i vraća naziv meseca u tekstualnom obliku. Njome možemo dinamički potražiti naziv tekućeg meseca: SELECT MonthName( DatePart("m", Date()) ); Rezultat obe funkcije zavisi takođe od regionalnih podešavanja. Za kraj smo vam priprimeli veoma korisnu funkciju kojom ćete izračunavati radni staž ili starost, a rezultat dobiti kao broj godina, broj meseci i broj dana. Preostaje da analizirate neka od interesantnih primenjenih rešenja i eventualno proširite funkciju nekom od opisanih.
' Funkcija za izračunavanje dužine radnog staža
'
Function RStaz(Pocetak As Date, Kraj As Date)
Dim Pocetak1, Kraj1
Dim GS%, MS%, DS%
GS = Year(Kraj) - Year(Pocetak)
MS = Month(Kraj) - Month(Pocetak)
DS = Day(Kraj) - Day(Pocetak) + 1
If DS < 0 Then
MS = MS - 1: DS = DS + 30
End If
If MS < 0 Then
GS = GS - 1: MS = MS + 12
End If
If GS < 0 Then
MsgBox ("Greška")
Exit Function
End If
If DS = 30 Then
MS = MS + 1: DS = 0
ElseIf DS = 31 Then
MS = MS + 1: DS = 1
End If
MsgBox "Radni staž: " & GS & " godina, " & _
MS & " meseci i " & DS & " dana.", _
vbInformation, "Radni staž"
End Function
|
|
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. |