Abfrage über Formular ausführen

HAllo Experten,

ich komm schon wieder nicht weiter: hab ein Formular mit vier Kombinationsfeldern. Beim Klicken auf ein Kombinationsfeld soll jeweils folgende VBA ausgeführt werden:

Private Sub Arbeitsplatz_Click()
DoCmd.OpenQuery „Abfr_Arbeitsplatz“
End Sub

Das hat den grund, dass jedes weitere Kombinationsfeld auf die ausgeführte Abfrage zurück greift. Mit dem Befehl wie ich ihn hab, wird die Abfrage geöffnet. Ich möchte aber, dass die Abfrage nur ausgeführt und nicht angezeigt wird. Ist das möglich? Wenn ja, wie?

Viele Grüße von Beate

Hallo Beate,

ich vermute mal, das du mittels diesen Vorgehens bewirken moechtest, das die Daten in den Kombofeldern abhaengig von der Auswahl im erstem Combo angezeigt werden.?

Wenn dem so ist, dann brauchst du die Abfrage nicht zu oeffnen, sonder diese Abfrage muss den Combofeldern als „Datensatzherkunft“ gesetzt werden. Dann braucht man nur ein Requery an die einzelnen Combos zu schicken.
Wenn den Combos immer die gleich Abfrage zugewiesen wird, kann man dies in den Eigenschaften machen, andernfalls setzt man dies in der Funktion mittels .RowSource.

Private Sub Arbeitsplatz_Click()
Combo1.RowSource = „Select * From Abfr_Arbeitsplatz“
Combo1.Requery
Combo2.RowSource = „Select * From Abfr_Arbeitsplatz“
Combo2.Requery
Combo3.RowSource = „Select * From Abfr_Arbeitsplatz“
Combo3.Requery
End Sub

Mit dem „Select *…“ kann man dann auch noch die Datenmenge Manipulieren und nur das/die relevanten Felder anzeigen ( „Select Feld1, Feld3 from …“.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

CurrentDB.Execute „Abfr_Arbeitsplatz“

Hallo Peter,

vielen Dank erstmal für deine Antwort.

Leider funktioniert das so noch nicht. es kommt immer ein Laufzeitfehler, der ein Objekt erfordert.
Ich beschreib mal ganz genau, wie das Programm laufen soll:

In einem Feld Bereich möchte ich diesen Auswählen. dieser bereich ist zum beispiel in zwei von vier Hallen zu finden.
Daraufhin soll im nächsten Kombi- Feld „Halle“ die halle ausgewählt werden. Allerdings sollen dort statt den vier nur noch die zwei möglichen angezeigt werden. Weiterhin gibt es in der gewählten halle nur ein bestimmtes Raster.
Im dritten Kombifeld soll dann nur noch das für die halle entsprechende raster auszuwählen sein, usw.

Bsp: Bereiche: Montage, fertigung
Hallen: Halle 1, Halle 2: Montage
Halle 2, halle 3:Fertigung
Raster: Halle 1: A1, A2, A3, B1, B2, B3
Halle 2: A1, A2, B1, B2, C1, C2
Halle 3: A1-A7, B1-B7, C1-C7

Folgende Auswahl wird zum beispiel gemacht:

Bereich: Fertigung

im Feld Halle hat man nur noch die Möglichkeit zw. H2 und H3 zu wählen:

Halle: Halle 2

im Feld raster kann man dann nur noch A1, A2,B1, B2, C1 oder C2 wählen

…usw.

Wie muss dann der VBA- Code genau aussehen?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Beate,

Vorraussetzung fuer die von mir Vorgschlagene Vorgehensweise ist eine passende Datenstruktur, aus der mal die Informationen entnehmen kann.
Dann ist es ein kleiner Unterschied ob du die eintraege ueber Indexes oder ueber die Begriffe selbst auswaehlst, jenachdem muss ein ob die Combobox einen Zahlenwert oder String liefert muss ein ’ die Bedingung einrahmen.

also einfach mal ganz abstrakt:

  1. Du hast eine Combobox mit den Werten von „Bereich“, die Datenherkunft kannst du in den Eigenschaften der Combobox festlegen.

  2. Im „NachAktualisiern“-Event setzt du die Datenherkunft der „Hallen“-Combobox:

Dim sqlString as String

sqlString = „Select HALLE_FELD FROM MEINETABELLEMITHALLE WHERE BEREICH = '“ & BereichCombo & „’“
HalleCombo.Rowsource = sqlString

  1. Im „NachAktualisiern“-Event der HallenCombo setzt du die Datenherkunft der „Raster“-Combobox:

Dim sqlString as String

sqlString = „Select RASTER_FELD FROM MEINETABELLEMITRASTER WHERE HALLE = '“ & HalleCombo & „’“
RasterCombo.Rowsource = sqlString

==================================
Das funktionert allerdings nur wenn die Datenstruktur einigermassen sauber normaliert ist.

Falls das nicht weiterhilft, kannst du mir ja ein Beispiel der Tabellen und des Formulars per PM schicken und ich schaus mir mal an.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]