title image


Smiley Re: Paßworteingabe bei Jetdatenbank2.6
Hi,



bin selbst nicht so fit in diesem Gebiet und muss erst immer rumbasteln, bis es funktioniert :-)



Ich hab mir das bisher so zusammengereimt:

Bei OpenDatabase übergibst du das Passwort als String. Mit diesem String kannst du aber noch mehr Informationen mit übergeben, z.B. welche Datenquelle verwendet werden soll, sprich ob zum Öffnen der Datenbank die ODBC Treiber oder die MS Access Treiber verwendet werden sollen oder was auch immer auf dem Rechner installiert ist.



Eine Übersicht über die installierten Datenquellen findest du normalerweise unter Start -> Einstellungen -> Systemsteuerung -> Verwaltung -> Datenquellen (ODBC)

(hab hier nur Win2000, keine Ahnung ob es bei anderen Windowsversionen ebenfalls dort zu finden ist...)



Versuch mal bei deinem String als Datenquelle MS Access mitzugeben:

Set dbsDB = OpenDatabase(pfad, True, False, "MS Access;pwd=" & pwd)



Wie gesagt, kenn mich selbst nicht so gut aus, hab ich mir halt so zusammengereimt, also keine Garantie auf Richtigkeit :-)





Zweite Vermutung:

Ist in pfad der korrekte Pfad zur Access Datenbank enthalten?

Auf meinem Rechner bekomme ich die von dir genannte Fehlermeldung wenn hier z.B. ein Leerstring enthalten ist.

Kann z.B. schnell passieren, wenn du die Variable nicht definierst. In meinem Beispiel wird in MySub die Variable pfad an OpenDatabaseWithPWD übergeben, ohne dass sie vorher definiert wurde.

VB erzeugt dann an der Stelle automatisch eine leere Variant Variable.

Das Verhalten kann man unterbinden, indem man in jede Datei zu Beginn folgendes rein schreibt:

Option Explicit



Damit muss jede Variable definiert werden, in meinem Beispiel würde beim Kompilieren eine Fehlermeldung erscheinen.

Sehr zu empfehlen, unbedingt immer rein schreiben!







Mit accessDenied hat der Fehler nichts zu tun. Das ist nur eine von mir so genannte Variable.

In Kurzform macht mein Programmbeispiel folgendes:

MySub():

Ruft in einer Schleife die Funktion OpenDatabaseWithPWD so oft auf, bis der Benutzer das Richtige Passwort eingibt oder entnervt auf Abbrechen klickt :-)



OpenDatabaseWithPWD(..):

Öffnet die Datenbank mit dem übergebenen Passwort. Wenns das falsche Passwort ist wird der Fehler aufgefangen und accessDenied auf false gesetzt.

accessDenied wurde von MySub als ByRef übergeben. Das bedeutet, wenn accessDenied in OpenDatabaseWithPWD verändert wird, ist sie auch in MySub verändert.

Das ganze wird benötigt, da OpenDatabaseWithPWD zwei Rückgabewerte braucht, einmal natürlich die geöffnete Datenbank und einmal die Information, ob das falsche Passwort übergeben wurde.

Da eine Funktion aber nur einen Rückgabewert haben kann hab ich die zweite Information als ByRef Parameter accessDenied realisiert.



Der Zusatz ByRef ist übrigens nicht unbedingt nötig, da ByRef die Standardeinstellung ist.

Wenn du nicht möchtest, dass sich eine Änderung des Parameters auf die Variable in der aufrufenden Funktion auswirkt, musst du den Paramter als ByVal übergeben.



Gruß

Bostich

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: