VBA – Provera da li određeni objekt postoji u Access bazi

Pomoću sledeće funkcije možemo saznati da li određeni objekat (tabela, upit, izveštaj, makro ili modul) postoji u određenoj Access bazi podataka. U Access-u postoji funkcija IsLoaded na osnovu koje možemo dobiti podatak da li je neka forma otvorena, ali uz pomoć navedene funkcije možemo odrediti da li bilo koji objekat baze uopšte postoji u bazi. Korišćenje je vrlo jednostavno, samo iskopirajte kod funkcije u novi modul. Funkcija vraća vrednost True ili False u zavisnosti od toga koji ste objekat poslali funkciji. Jednostavno pošaljite funkciji tip objekta (acTable, acQuery, acForm, acReport, acMacro, acModule) i string-naziv samog objekta, na primer:


If ObjectExists(acTable, „tblNarudzbe“) Then … ILI
If ObjectExists(acForm, „frmMojaForma“) Then …

Funkcija može biti vrlo korisna kada imate ogroman broj objekata u jednoj Access bazi.


Function ObjectExists(ObjType As Integer, ObjName As String) As Boolean
‘Primer: If ObjectExists(acTable, „tblNarudzbe“) then …
On Error Resume Next
Dim db As Database
Dim strTemp As String, strContainer As String
Set db = CurrentDb()

Select Case ObjType
Case acTable
strTemp = db.TableDefs(ObjName).NAME
Case acQuery
strTemp = db.QueryDefs(ObjName).NAME
Case acMacro, acModule, acForm, acReport
Select Case ObjType
Case acMacro
strContainer = „Scripts“
Case acModule
strContainer = „Modules“
Case acForm
strContainer = „Forms“
Case acReport
strContainer = „Reports“
End Select
strTemp = db.Containers(strContainer).Documents(ObjName).NAME
End Select

ObjectExists = (Err.Number = 0)
End Function

Pratite Krstaricu na www.krstarica.com