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.165 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. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. |
||||||||||||||||
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. |