Access – Funkcije i opcioni parametri

Access 2000 i VBA omogućavaju korišćenje opcionalnih parametara. Drugim rečima, ovom mogućnošću nije neophodno da znamo koliko će parametara biti poslato funkciji na obradu. U sledećem primeru imamo funkciju „VratiInicijalne()“, koja prihvata drugi i treći parametar kao opcionalne. Funkcija proverava da li neki od parametara nedostaje i na osnovu toga kreira odgovor:


Function VratiInicijalne(ByVal strIme As String, _
Optional ByVal strSred,
Optional ByVal strPrezime)
If IsMissing(strSred) Then
strSred = InputBox("Unesi srednji inicijal")
If IsMissing(strPrezime) Then
strPrezime = InputBox("Unesite prezime")
VratiInicijalne = strPrezime & "," & strIme & "
" & strSred
End Function

Funkcija može biti pozvana na sledeći način:


strName = VratiInicijalne("Milan", ,"Maric")

Kao što možete videti, drugi parametar nedostaje. Funkcija „IsMissing“, koja je ugrađena u Access, određuje da li je parametar poslat funkciji. Nakon identifikacije nedostajućih parametara, morate odlučiti kako ćete dalje upravljati kodom. U našem primeru, funkcija od korisnika traži unos nedostajućih parametara (ukoliko već nisu poslati). Drugi mogući izbor bi mogao da bude sledeći:
  • Ukoliko nema parametara, ubacite podrazumevane vrednosti.
  • Obezbedite nedostajuće parametre programskim kodom.
U sledećem primeru možete videti kako se koriste podrazumevane vrednosti umesto nedostajućih parametara:


Function VratiInicijalne2(ByVal strIme As String, _
Optional ByVal strSred,
Optional ByVal strPrezime)
If IsMissing(strSred) Then
strMI = "K"
If IsMissing(strPrezime) Then
strLName = "Maric"
VratiInicijalne2 = strPrezime & ",
" & strIme & " " & strSred
End Function

Funkcija koristi podrazumevanu vrednost „K“ za srednji inicijal i podrazumevano prezime „Maric“ ukoliko dati parametri nisu prosleđeni. Pošto ovakva dodela vrednosti uglavnom nema smisla, u sledećem primeru videćemo kako funkcija može da vrati različite vrednosti, a u odnosu na to da li je parametar uključen u poziv ili ne.


Function VratiInicijalne3(ByVal strIme As String, _
Optional ByVal strMSred,
Optional ByVal strPrezime)
Dim strRezultat As String
If IsMissing(strSred) And IsMissing(strPrezime)
Then
VratiInicijalne3 = strIme
ElseIf IsMissing(strSred) Then
VratiInicijalne3 = strPrezime & ",
" & strIme
ElseIf IsMissing(strPrezime) Then
VratiInicijalne3 = strIme & " " & strSred
Else
VratiInicijalne3 = strPrezieme & ",
" & strIme & " " & strSred
End If
End Function

U ovom primeru manipulišemo vrednostima koje funkcija vraća, i to onim parametrima koji su primljeni. Kada nije prosleđen nijedan opcioni parametar, funkcijom se vraća samo obavezni parametar „strIme“.

Pratite Krstaricu na www.krstarica.com