vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: Datenbank Pfad 
Autor: unbekannt
Datum: 22.02.02 17:59

Hi Raymond,

über das Problem: In einer Sitzung einmal die Datenbank zu öffnen und bei Beenden des Programms die Datenbank schließen, mit einer Klasse gelöst.
Füge einfach ein Klassenmodul ins Projekt ein und nenne sie: clsDBEngine

Definition der Klasse:

Public DBName As String
Public DBObject As DataBase
Public DBError As Variant
 
Private tmpDBOpen As Boolean
 
Public Function OpenDB(Optional Byval sPWD As String) As Boolean
    OpenDB = False
 
    If DBName = "" Then
            DBError = "Eigenschaft DBName nicht gefunden." 
            Exit Function
    End If
 
    On Error Resume Next
    If Dir(DBName) = "" Then 
           DBError = "Datenbank konnte nicht gefunden werden."
           Exit Function
    End If
 
    If Err.Number > 0 Then
           DBError = "Pfad nicht gefunden." 
           Exit Function
    End If 
 
    Set Set DBObject = DBEngine.OpenDataBase(DBName, false, false,";pwd=" & _
      sPwd)
    If Err.Number > 0 Then
          DBError = "Datenbank konnte nicht geöffnet werden."
    ElseIf Err.Number = 0 Then
          tmpOpen = True
          DBError = 0
          DBName = DBObject.Name
          OpenDB = True
    End If      
End Function
 
Private Sub Class_Terminate()
      If Not tmpOpen Then Exit Sub
      If DBObject Is Nothing Then Exit Sub
      CloseDB
End Sub 
 
Public Sub Class_Initialize()
     tmpOpen = False
     Set DBObject = Nothing
     DBError = vbNullChar
     DBName = vbNullChar
End Sub 
 
Public Sub CloseDB()       
     If Not tmpOpen Then Exit Sub
 
     DBEngine.Idle
     DB.Close
     Set DBObject = Nothing
     tmpOpen=False
End Sub
Nach außen gibt die Klasse also folgende Schnittstellen:

DBName = Pfad und Namen der Datenbank (Eigenschaft)
DBObject = Das Datenbankobjekt selbst (Eingenschaft)
DBError = Evtl. Fehlermeldungen beim Öffnungsversuch (Eigenschaft)
OpenDB = Methode. Öffnet die Datenbank, Rückgabewerte False, wenn
der Versuch fehlschlug, True, wenn die Datebank geöffnet ist.
CloseDB = Methode. Schließt die Datenbank.

Der Trick dabei ist, dass man sich um das Schließen nicht kümmern muß, da dies automatisch durch die Klasse erfolgt, wenn deren Instanz zerstört wird (Class_Terminate), sondern nur um das Öffnen derselben.

Diese Klasse wird in einem Modul einmal instanziert!

Im Modul, name des Moduls: StartUp
Public DB As New clsDBEngine
 
 
Private Sub Main()
      Dim b As Boolean
 
      'Open DB
      DB.DBName =  App.Path & "Test.DB"
      b = DB.OpenDB()
 
      If Not b Then
          MsgBox "Es ist ein Fehler aufgetreten: " & DB.DBError
          Set DB = Nothing
          Exit Sub
       End If
End Sub
In jeder Form kann auf das Object so zugegriffen werden:

Set Rs = Startup.DB.DBObject.OpenRecordset(".....")
Meiner Meinung nach die sauberste Lösung.


cu
Lordchen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datenbank Pfad46raymond22.02.02 16:47
Re: Datenbank Pfad288unbekannt22.02.02 17:59
Re: Datenbank Pfad42raymond22.02.02 18:05
Wieso denn? Da wird auch niemand gebissen (oT)208unbekannt22.02.02 19:29

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel