Toegang tot VBA-database - Openen, verbinden, inloggen en meer

Deze zelfstudie laat zien hoe u VBA kunt gebruiken om een ​​Access-database te openen. Het zal ook demonstreren hoe u een login aanmaakt om toegang te krijgen tot de database - controleren of de gebruikersnaam en het wachtwoord bestaan ​​in de tblUsers-tabel van de database.

Open Access-database

Deze VBA-functie opent een Access-database:

Openbare functie OpenAccessDatabase (strDBPath As String) Indien niet IsNull (strDBPath) Dan Shell "MSACCESS.EXE """ & strDBPath & """", vbNormalFocus End-functie

Je kunt de functie als volgt aanroepen:

Private Sub OpenAccessDatabase_Example() Roep OpenAccessDatabase("C:\temp\Database1.accdb") End Sub aan

Verbinding maken met Access-database

Als alternatief kunt u deze code gebruiken die een nieuw exemplaar van Access maakt, een database opent en de database aan een variabele toewijst db:

 Dim objAccess As Access.Application Dim db As DAO.Database Set objAccess = New Access.Application Set db = objAccess.DBEngine.OpenDatabase(strDBPath, False, False)

of gebruik deze functie, die de bovenstaande code bevat om een ​​database naar een variabele te openen:

Openbare functie Connect_To_AccessDB(strDBPath As String) As DAO.Database Dim objAccess As Access.Application Dim db As DAO.Database Set objAccess = New Access.Application Set db = objAccess.DBEngine.OpenDatabase(strDBPath), Set Connect False, Set False, Functie beëindigen

U kunt de functie aanroepen en communiceren met de database met behulp van een procedure als deze:

Private Sub Connect_To_AccessDB_Example() Dim AccessDB As DAO.Database 'Voorbeeld om een ​​database toe te wijzen aan een variabele Set AccessDB = Connect_To_AccessDB("c:\temp\TestDB.accdb") AccessDB.Execute ("tabel maken tbl_test3 (num number,firstname char , achternaam char)") 'Voorbeeld om een ​​externe database AccessDB te sluiten.Close Set AccessDB = Nothing 'Voorbeeld om een ​​extern databasebestand (.accdb) te verwijderen 'Kill ("c:\temp\TestDB.accdb") 'Voorbeeld om te sluiten Toegang tot 'DoCmd.Quit End Sub'

Toegang tot database-login

Deze VBA-functie maakt gebruik van een login door een ingevoerde gebruikersnaam en wachtwoord te vergelijken met de tabel tblUsers. Om deze functie te laten werken, moet u een tabel tblUsers maken met de velden Wachtwoord en Gebruikersnaam.

Openbare functie UserLogin (gebruikersnaam als string, wachtwoord als string) 'Controleer of de gebruiker bestaat in de tblUsers-tabel van de huidige database. Dim CheckInCurrentDatabase As Boolean CheckInCurrentDatabase = True If Nz(UserName, "") = "" Dan MsgBox "U moet de gebruikersnaam invoeren.", vbInformation Exit Function ElseIf Nz(Password, "") = "" Dan MsgBox "U moet de Wachtwoord.", vbInformation Functie afsluiten End If If CheckInCurrentDatabase = True Then 'Gebruikersreferenties verifiëren If Nz(DCount("UserName", "tblUsers", "[UserName] = '" & Nz(UserName, "") & "'" ), 0) = 0 Dan MsgBox "Ongeldige gebruikersnaam!", vbExclamation Exit Function ElseIf Nz(Password, "") Nz(DLookup("Password", "tblUsers", "[UserName] = '" & Nz(UserName, " ") & "'"), "") Dan MsgBox "Ongeldig wachtwoord!", vbExclamation Exit Function ElseIf DCount("UserName", "tblUsers", "[UserName] = '" & Nz(UserName, "") & " '") > 0 Dim vervolgens strPW As String strPW = Nz(DLookup("Password", "tblUsers", "[UserName] = '" & Nz(UserName, "") & "'"), "") If Nz (Wachtwoord, "") = strPW Dan 'Stel gebruikersnaam en wachtwoord in als Global Veriables TempVars.Add "CurrentUserName", Nz(UserName, "") TempVars.Add "Cur rentUserPassword", Nz(Password, "") MsgBox "Succesvol ingelogd", vbExclamation End If End If Else 'Stel gebruikersnaam en wachtwoord in als Global Veriables TempVars.Add "CurrentUserName", Nz(UserName, "") TempVars.Add "CurrentUserPassword ", Nz(Password, "") MsgBox "Succesvol ingelogd", vbExclamation End If End Functie

Je kunt de functie als volgt aanroepen:

Private Sub UserLogin_Example() Bel VBA_Access_General.UserLogin("Gebruikersnaam", "wachtwoord") End Sub

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave