Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage mit Suchfeld auf Formular verbinden

Begonnen von ChemSim, Februar 25, 2024, 21:08:28

⏪ vorheriges - nächstes ⏩

ChemSim

Hallo,

in meiner Datenbank gibt es eine Tabelle tblAnlagen, in der die Produktionsanlagen von mehreren Unternehmen mit dem Produkt, Standort und der produzierten Menge gelistet sind. Da die Tabelle die Anlagen zu mehreren Produkten enthält, habe ich mir einige einfache Abfragen erstellt, die die gewünschten Spalten anzeigen, dabei jedoch nach einem bestimmten Produkt (qryProdukt1, qryProdukt2, etc.) filtern, sodass mir alle Anlagen mit diesem Produkt angezeigt werden.

Zur Steuerung der Datenbank benutze ich ein ungebundenes Formular als Navigationsseite. Ist es möglich, auf diesem Formular eine Suchfunktion einzubauen, mit der ich dann die Abfragen zu den einzelnen Produkten schnell aufrufen kann? Dazu müsste quasi dieses Such- / Kombinationsfeld mit den Abfragen verknüpft werden und wenn ich in das Suchfeld beispielsweise "Produkt 1" eingebe, möchte ich zur Abfrage qryProdukt1 weitergeleitet werden.

Ist so etwas möglich? Würde mich über Hilfe und Vorschläge freuen!

Viele Grüße
Simon

andyfau

Hallo,
du kannst im Kriterienfeld der Abfrage direkt das ungebundene Feld aus dem Formular nutzen.

Formulare![Formularname]![Feldname]
Dabei muss das Formular zum Zeitpunkt des Aufrufs der Abfrage geöffnet sein. Also baust Du im Formular am besten auch einen Button zum Start der Abfrage ein.

Viele Grüße
Andreas
Beste Grüße
Andreas

Beaker s.a.

Hallo Simon,

Unterscheiden sich die einzelnen Abfragen nur durch das Kriterium "Produkt"
oder sind die von Produkt zu Produkt unterschiedlich?
Wenn ersteres zutrifft brauchst du doch nur eine einzige Abfrage. Die öffnest
du dann mit Übergabe der Produkt-Nr. zur Filterung.
Und, wenn du schon auf deinem Steuerungsform eine Suche nach einem Produkt
starten willst, frage ich mich warum dann nicht gleich ein Formular zur
Produktverwaltung öffnest, gefiltert auf die eingegebene Produkt-Nr.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ChemSim

Hallo Andreas,

Zitatdu kannst im Kriterienfeld der Abfrage direkt das ungebundene Feld aus dem Formular nutzen.

Als ungebundenes Formular nutze ich das Formular frmDashboard. Dort habe ich ein ungebundenes Kombinationsfeld mit dem Namen cboAnlagen erstellt. In der Abfrage qryProdukt1 habe ich dann in der Spalte "Produktname" in der Zeile "Kriterien" den Code

[Formulare]![frmDashboard]![cboAnlagen]

eingegeben. Leider hat es nicht funktioniert und ich kann im Kombinationsfeld auf dem Formular frmDashboard kein Produkt auswählen, obwohl sowohl das Formular als auch die Abfrage geöffnet sind.

Viele Grüße
Simon

ChemSim

Hallo Ekkehard,

ZitatUnterscheiden sich die einzelnen Abfragen nur durch das Kriterium "Produkt"

Richtig, die einzelnen Abfragen unterscheiden sich nur durch das Kriterium "Produkt", alle anderen Spalten der Abfrage sollen gleich bleiben. Vielleicht sollte ich erwähnen, dass die Tabelle tblAnlagen mit der Tabelle tblProdukte verknüpft ist, sodass eine Fremdschlüsselbeziehung zwischen den beiden Tabelle besteht und im Feld "Produktname" nur die Fremdschlüssel-ID steht.

ZitatWenn ersteres zutrifft brauchst du doch nur eine einzige Abfrage. Die öffnest du dann mit Übergabe der Produkt-Nr. zur Filterung.

Wie genau meinst du das bzw. wie kann ich das realisieren?

Zitatwarum dann nicht gleich ein Formular zur Produktverwaltung öffnest, gefiltert auf die eingegebene Produkt-Nr.

Ich habe ein Formular frmProdukteBearbeiten, dass dazu genutzt wird, neue Datensätze ich die Tabelle tblProdukte einzutragen.

Viele Grüße
Simon

MzKlMu

Hallo,
ZitatIch habe ein Formular frmProdukteBearbeiten, dass dazu genutzt wird, neue Datensätze ich die Tabelle tblProdukte einzutragen.
Warum nutzt Du dieses Formular nicht auch zur Suche ?
Das kann mit einem Kombifeld erfolgen das alle Produkte zur Suche anzeigt.
Oder Du erstellst ein Listenfeld das nur die Produkte zeigt und per Klick das Formular frmProdukteBearbeiten auf das gewünschte Produkt positioniert. Das ist doch viel einfacher und übersichtlicher (und logischer vom Ablauf) als das Suchfeld auf dem Dashboard.
Gruß Klaus

andyfau

Zitat von: ChemSim am Februar 26, 2024, 18:44:09Dort habe ich ein ungebundenes Kombinationsfeld mit dem Namen cboAnlagen erstellt.

Wie sehen denn die Eigenschaften des ungebundenen Kombifeldes aus? (Datenherkunft, gebundene Spalte) Steht dann VOR Öffnen der Abfrage ein gültiger Produktname im Kombifeld?

Beste Grüße
Andreas

ChemSim

ZitatWie sehen denn die Eigenschaften des ungebundenen Kombifeldes aus? (Datenherkunft, gebundene Spalte)

Naja, wie der Name schon sagt ist das Kombinationsfeld ungebunden und hat somit keine Datenherkunft. Gebundene Spalten habe ich aktuell auf 1 stehen.

ChemSim

Hallo Klaus,

ZitatWarum nutzt Du dieses Formular nicht auch zur Suche?

Ich möchte ja nicht innerhalb der Tabelle tblProdukte suchen, sondern in der Tabelle tblAnlagen. Es soll nur per Abfrage ein Produkt ausgewählt werden und dazu alle Anlagen angezeigt werden.

ZitatOder Du erstellst ein Listenfeld das nur die Produkte zeigt und per Klick das Formular frmProdukteBearbeiten auf das gewünschte Produkt positioniert.

Auch hier, es geht nicht um die Tabelle tblProdukte

Gruß
Simon


MzKlMu

#9
Hallo,
ZitatEs soll nur per Abfrage ein Produkt ausgewählt werden und dazu alle Anlagen angezeigt werden.
Und aus welcher Tabelle wählst Du das Produkt ? Produkt und Anlagen müssen doch in Beziehung stehen.
Gruß Klaus

ChemSim

In meiner Tabelle tblAnlagen habe ich alle anderen Tabellen meiner Datenbank per Fremdschlüssel verknüpft und nun möchte ich in einer Abfrage die ausgewählten Spalten anzeigen und dabei nach dem Produktnamen filtern. Dazu habe ich diese Abfrage erstellt. Wenn ich diese ausführe, werden mir aber keine Einträge in der Abfrage angezeigt, obwohl es letztens noch funktioniert hat:

Sie dürfen in diesem Board keine Dateianhänge sehen.

Wo liegt der Fehler?
Zitat von: MzKlMu am Februar 26, 2024, 20:07:10Hallo,
ZitatEs soll nur per Abfrage ein Produkt ausgewählt werden und dazu alle Anlagen angezeigt werden.
Und aus welcher Tabelle wählst Du das Produkt ? Produkt und Anlagen müssen doch in Beziehung stehen.
Das Produkt wird aus der Tabelle tblProdukte ausgewählt!




ChemSim

ZitatWenn ich diese ausführe, werden mir aber keine Einträge in der Abfrage angezeigt, obwohl es letztens noch funktioniert hat

Ich habe gerade bemerkt, dass nur dann keine Einträge in der Abfrage erscheinen, wenn ich ein Fremdschlüsselfeld leer lasse. Kann das irgendwie umgestellt werden?

andyfau

Na das Kombinationsfeld muss doch eine Datenherkunft (z.B. eine Abfrage die alle Produktnamen aus deiner Tabelle selektiert) haben, damit man überhaupt einen Wert auswählen kann.
Beste Grüße
Andreas

ChemSim

Also muss ich eine neue Abfrage erstellen, die nur die Produktnamen aus der Tabelle tblProdukte anzeigt?

MzKlMu

Hallo,
Du denkst zu kompliziert. Du willst auch immer Abfragen. Du brauchst hier keine speziellen Abfragen. Und selbst wenn, Abfragen zeigt man in Access nicht direkt an, sondern immer über ein Formular. Und das Formular zum Bearbeiten der Anlagen hast Du ja schon. Und in diesem Formular solltest Du auch das Suchen realisieren. Im Dashboard hat ein solches Suchfeld nichts verloren. Ein solches Dashboard dient der Steuerung der Datenbank.

Lege im Formular zur Bearbeitung der Anlagen ein Listenfeld an in dem die Produkte gezeigt werden.
Mit diesem Listenfeld filterst Du das Formular (bzw. dessen Datenherkunft).
Das gibt exakt 2 Zeilen VBA Code im Ereignis "Nach Aktualisierung" des Listenfeldes.

Me.Filter = "ProduktID_F = " & Me.NameListenfeld
Me.FilterOn = True
Gefiltert wird immer über die ID, nicht über den Text. Wie das geht mit den Spalten und den Spaltenbreiten hast Du ja schon über Kombifelder gelernt.

Per Button lässt sich der Filter auch wieder löschen.

Me.Filter = ""
Me.FilterOn = False

Mit etwas mehr VBA Code kann man in die Abfrage noch <Alle> integrieren und braucht dann den Button nicht mehr.
Aus Platzgründen kann man statt des Listenfeldes auch ein Kombifeld verwenden, das funktioniert genau so.

Damit hast Du alles was Du brauchst, sehr einfach und in einem gewohnten Formular.
Gruß Klaus