# VB6 & Access 2000



## Icem@n (18. September 2003)

Hallo zusammen,

ich hab da eine Frage,

ich will unter Visual Basic 6(SP5) auf eine Access 2000 Datenbank zugreifen.
Nun bietet ja VB mithilfe von Datacontroll und einer Textbox die Möglichkeit über die Eigenschaften den zugrifff auf die Datenbank komplett ohne eine Zeile Code herzustellen.
Meine frage ist ob man dem Datencontroll auch per Code die Datenbankverbindung zuweisen kann.

Also ich hab 2 tabellen(Firma, Arbeitsplatz) für jede Tabelle ein Datencontroll für die Auswahl und eine Textbox für die Darstellung.

Mein Problem ist das ich zwei Tabellen hab in der ersten Tabelle soll die Firma ausgewählt werden.
Und in der zweiten sollen die zur Firma gehörenden Arbeitsplätze zur Auswahl angeboten werden.

ich muss aber irgend wie eine Abfrage für die Arbeitsplatzauswahl in das 2 Datacontroll reinbekommen damit nur die Arbeitsplätze angezeigt werden die zu der Firma gehören.

kann mir jemand weiterhelfen?

Mfg Icem@n


----------



## Cthulhu (18. September 2003)

Hallo

Willst es nicht mit einem SQL- Befehl machen? Währe ein bisschen  sauberer?


----------



## Icem@n (18. September 2003)

naja mir geht es ja darum wie man dem Datacontroll die verbindung per code übergeben kann, bei der Tabelle Firma ist es nicht unbedingt erforderlich, aber beim Arbeitsplatz will ich ja noch ne abfrage reinschreiben was ja nicht über die Eigenschaftsfunktion geht, da kann man halt nur alle einträge einer spalte auswählen, was ich ja nicht will, ich will ja das anhand der ausgewählten firma die entsprechenden arbeitsplätze angezeigt werden.


----------



## Dario Linsky (18. September 2003)

Vergiss das DataControl, das macht IMHO über kurz oder lang nur Probleme... Nimm lieber ein normales ADODB.Connection-Objekt und ein paar ADODB.Recordset-Instanzen, um die SQL-Abfragen selbst an die Datenbank zu schicken. Das ist meiner Erfahrung nach sinnvoller und man hat mehr Kontrolle über die Datenbankverbindung.
Mag sein, dass es sehr verlockend aussieht, eine DB-Anwendung zu erstellen, ohne dabei eine einzige Zeile Code zu schreiben, aber wirklich sinnvoll ist das sicher nicht.


----------



## Icem@n (18. September 2003)

> _Original geschrieben von Dario Linsky _
> * Nimm lieber ein normales ADODB.Connection-Objekt und ein paar ADODB.Recordset-Instanzen, um die SQL-Abfragen selbst an die Datenbank zu schicken. *



das hab ich auch schon mal probiert, ich hatte versucht die die spalten die ich brauche(von der Firma spalte firma_name und von arbeitsplatz die spalte Arbeitsplatz) in datacombo reinzupacken das hat auch soweit funktioniert aber da hatte ich das selbe problem wie man die arbeitsplatzauswahl einschränken kann auf die firma die man vorher gewählt hat.

siehe code ausschnitt:

Set conn = New Connection
conn.Open "Provider = Microsoft.jet.oledb.4.0;" & _
"Data Source = " & App.Path & "\Wartung.mdb"

Set rst = New Recordset
rst.CursorLocation = adUseClient
'rst.CursorType = adOpenStatic
'rst.LockType = adLockOptimistic
rst.Open "Select * from Firma", conn
Set DataGrid1.DataSource = rst

With DataCombo1
        .ListField = "firma_name"
        Set .RowSource = rst
End With

dann noch ein recordset für die tabelle arbeitsplatz

das problem was ich habe ist das ich dem benutzer den Firmenname zur auswahl geben will, aber für die Arbeitsplatzauswahl die firma_id übergeben muss. 

kannst du mir vielleicht da weiterhelfen?

Mfg Icem@n


----------



## Dario Linsky (18. September 2003)

Wo ist das Problem. Du kannst bei einem DataCombo ein Schlüsselfeld angeben und da die ID des jeweiligen Datensatzes reinschreiben. Die Eigenschaft zum Auslesen der ID hiess "KeyField", wenn ich mich nicht irre.
Dann musst Du nur noch die Abfrage für die Arbeitsplätze mit einer Bedingung versehen und schon hast Du das Recordset für die ausgewählte Firma gefiltert.


----------



## Icem@n (18. September 2003)

das verstehe ich nicht so ganz. In meiner access tabelle ist die firma_ id als Primärschlüssel festgelegt. Und bei datacombo mit keyfield kann mann doch auch nur den Primärschlüssel usw....festlegen oder liege ich da falsch?

Hast du vielleicht mal ein Codebeispiel wie du das meinst.

Icem@n


----------

