Access-Datenbank in visual basic 6.0 einbinden

Hello Again

Bin jetzt schon um einiges weiter, mein nächstes Problem ist jetzt folgendes:
Ich lade meine Datenbank per
Code:
Private Sub UserForm_Activate
ins VBA.

Es Funktioniert soweit wunderbar.
Habe allerdings mehrere Fenster in meinem Programm. Deshalb lädt er sie beim Aufruf eines Unterfensters per .Show doppelt und es kommt zu einem Fehler. Es ist nicht möglich, die Datenbank gleich wieder zu closen, da ich sie sofort im nächsten Sub wieder
benötige.

Welche Möglichkeiten habe ich nun?! Ich möchte verständlicherweise keinen eigenen Button dafür anlegen. Kann ich dem Programm nun evtl. sagen, es soll das Sub nur bei einer bestimmten UserForm ausführen? Oder die Prozedur des Subs in einem Modul ablegen und per Call klugerweise abrufen? Wenn ja wie

Hier mein Sub als Auszug:
Code:
Private Sub UserForm_Activate()


'Füllen der Comboboxes mit Datenbankinhalten
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Provider = "Microsoft.Jet.Oledb.4.0"
con.Open "Data Source=c:\Access\DB.mdb"
    
    
rec.Open "SELECT Agruppe from Artikel group by Agruppe", con, adOpenKeyset, adLockOptimistic

ComboArtGr1.Clear
ComboArtGr2.Clear
ComboArtGr3.Clear

rec.MoveFirst
While Not rec.EOF
ComboArtGr1.AddItem rec![Agruppe]
ComboArtGr2.AddItem rec![Agruppe]
ComboArtGr3.AddItem rec![Agruppe]

rec.MoveNext
Wend


End Sub

Bitte Euch um Hilfe!!

Vielen Dank, Bernhard
 
nimm die Funktion ins Form_Load Ereignis dann sollte sie nicht immer wieder aufgerufen werden.
Solltest du mit vba arbeiten dann definiere dir eine Static variable die du auf 1 setzt sobald deine Conneciton offen ist, dann brauchst du sie nicht nochmal zu öffnen.

Grüsse bb
 
Tut mir Leid aber ich kann mir nicht vorstellen wie das genau ablaufen soll...
Kommt dann meine komplette Prozedur von meiner jetzigen UserForm_Activate, sowie die Show-, Load- und Unload-Befehle ins Form_Load Ereignis

Grüße, Bernhard
 
Der Unterschied zwischen Form_Load und Form_Activate ist der, dass Form_Load nur einmal aufgerufen wird, wenn die Form in den Speicher geladen wird. Form_Activate wird dagegen jedesmal aufgerufen, wenn die Form aktiv wird, also den Focus erhält. Das heißt, selbst wenn nur eine simple Messagebox angezeigt wird (dadurch verliert die Form den Focus), und die Messagebox wieder beendet wird, tritt Form_Activate in Aktion.

Form-Activate sollte man weitgehend vermeiden, da es häufig zu unvorhergesehenen Aktionen führt.

Grüsse
ronaldh
 

Neue Beiträge

Zurück