Um ACCESS-Datenbanken wirklich zu schützen, muss man für die Datenbank eine Arbeitsgruppen-Datei (.mdw-Datei) erstellen. Netzwerk-User müssen beim Aufruf der Datenbank diese .mdw-Datei dann mit vollständigem Laufwerk/Pfad/Dateiname als Parameter angeben! Das Ganze hat natürlich viele Nachteile:
Dann geht gar nichts mehr und der Admin erntet (zu Recht) einen Riesenhaufen Telefon-Anfragen (weil das eben vorauszusehen war). Deshalb habe ich mir Gedanken gemacht und hierbei ist mir folgende Idee gekommen:
Lösung: Wir benötigen eine START-Access-Datenbank:
Wollen wir das Ganze also mal versuchen, zu realisieren: 1. Erstellen Sie eine neue Datenbank "START_(Hauptdatenbankname).mdb" in einem beliebigen Verzeichnis auf Ihrer Festplatte und fügen nachfolgenden Code in ein Modul ein: Option Compare Database Option Explicit Public Const MDW_DIR = "MDW" 'Unterverz. für die .mdw Public Function AppPath() As String ' Aktuellen Pfad vollständig ermitteln mit \ am ENDE ' Dieter Otter ' http://www.vbarchiv.net/archiv/tipp_1187.html Dim sPath As String ' Name und Pfad der aktuellen Datenbank sPath = CurrentDb.Name ' reine Pfadangabe extrahieren While Right$(sPath, 1) <> "\" sPath = Left$(sPath, Len(sPath) - 1) Wend ' Anwendungspfad zurückgeben AppPath = sPath End Function Public Function StartBankName() As String ' Nur Name dieser START....mdb ermitteln ' Microsys Kramer ' http://www.vbarchiv.net/archiv/tipp_892.html ' nur Dateiname ohne Pfad StartBankName = Dir$(CurrentDb.Name) End Function
Public Function MDW_Name() As String ' Name der Arbeitsgruppen-Datei .mdw If Left(StartBankName(), 6) = "START_" Then MDW_Name = Left$(MDB_Name(), Len(MDB_Name()) - 4) & ".mdw" End If End Function Public Function AccessPath() As String ' ACCESS-Pfad (der MSAccess.exe) mit \ am ENDE AccessPath = Application.SysCmd(acSysCmdAccessDir) End Function Fügen Sie ein weiteres Modul mit folgendem Code hinzu: Public Function BankStarten() Dim MDB_DAT As String ' MDB volle Länge Dim MDW_DAT As String ' MDW volle Länge Dim EXE_DAT As String ' MSACCESS-EXE volle Länge Dim X ' Shell-Prozess-ID Dim PAR_1 As String ' Parameter- (Optionen-) String für ACCESS-Aufruf ' *** MDB vorhanden ? *********** MDB_DAT = AppPath() & MDB_Name() If Len(Dir(MDB_DAT)) = 0 Then MsgBox "Datenbank:" & vbNewLine & MDB_DAT & vbNewLine & vbNewLine & "nicht gefunden !" DoCmd.Quit acQuitSaveNone End If ' *** MDW vorhanden ? *********** MDW_DAT = AppPath() & MDW_DIR & "\" & MDW_Name() If Len(Dir(MDW_DAT)) = 0 Then MsgBox "ArbeitsGruppenDatei:" & vbNewLine & MDW_DAT & vbNewLine & vbNewLine & "nicht gefunden !" DoCmd.Quit acQuitSaveNone End If ' *** MSACCESS.EXE vorhanden ? *********** EXE_DAT = AccessPath() & "MSACCESS.exe" If Len(Dir(EXE_DAT)) = 0 Then MsgBox "ACCESS-EXE:" & vbNewLine & MDW_DAT & vbNewLine & vbNewLine & "nicht gefunden !" DoCmd.Quit acQuitSaveNone End If ' **** Aufruf mit Parametern ********* ' Parameter- (Optionen-) String PAR_1 = "/wrkgrp " & Chr(34) & MDW_DAT & Chr(34) & " " & Chr(34) & MDB_DAT & Chr(34) ' mdb öffnen X = Shell(EXE_DAT & " " & PAR_1, vbMaximizedFocus) ' Start-Bank schliessen ! DoCmd.Quit acQuitSaveNone End Function Jetzt benötigen wir noch ein Makro "AUTOEXEC" mit folgenden Befehlen:
2. Kopieren Sie nun Ihre Haupt-Datenbank in das erstellte Verzeichnis. 3. Erstellen Sie in dem Verzeichnis ein weiteres Unterverzeichnis "MDW" und kopieren in das Verzeichnis die Arbeitsgruppen-Datei. 4. Jetzt nur noch die START_(Hauptdatenbankname).MDB aufrufen (der Start-...mdb kann man dann sogar noch ein einfaches Access-Datenbank-Kennwort verpassen...) Und wenn Sie jetzt das komplette Verzeichnis auf ein freigegebenes Netzlaufwerk kopieren, funktioniert das Ganze genauso, als würde die MDB lokal aufgerufen werden! Dieser Tipp wurde bereits 27.258 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |