Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Auswahl in einem Kombifeld nach Auswahl in einem andern

Begonnen von Dietmar, Dezember 18, 2014, 15:53:27

⏪ vorheriges - nächstes ⏩

Dietmar

Hallo zusammen,

ich habe eine Tabelle in denen ich eine Auswahl häufig vorkommender Störungen zusammengefasst habe. In der Tabelle wird in der ersten Spalte die Maschine eingegeben und in der zweiten Spalte die Art der Störung.

So in meinem Formular habe ich ein Kombifeld1 in dem ich die Maschine wähle, dann möchte ich in dem Kombifeld2 in dem ich die Art der Störung auswählen kann, nur die Störungen wählen dürfen, die zur entsprechenden Maschine passen.
Wie kann ich das umsetzen?
Gruß
Dietmar

MaggieMay

Hallo Dietmar,

das nennt man abhängige Kombifelder und die Lösung könnte sein, die Datensatzherkunft der Störungen nach Auswahl der Maschine zu aktualisieren bzw. neu einzustellen. Anstoß hierzu könnte das Ereignis "Nach Aktualisierung" des ersten Kombifeldes geben.
Freundliche Grüße
MaggieMay

Dietmar

Hallo MaggieMay,
danke für deine Antwort. Habe jetzt einiges versucht.

Name Kombifeld für die Linie " Sto_Linie" (Übergeordnet)
Datensatzherkunft
SELECT [tblStoerart].[Stoerung_ID], [tblStoerart].[Linie] FROM [tblStoerart];

Name Kombifeld für die Störung  "sto_stoerung"
Datensatzherkunft
SELECT [tblStoerart].[Stoerung_ID], [tblStoerart].[Art_Stoerung] FROM [tblStoerart];

Mein Code in Nach Aktualisierung in Sto_Linie
Me! sto_stoerung.RowSource = "SELECT Art_Stoerung FROM tblStoerart WHERE Stoerung_ID = " & Me! Sto_Linie

Dabei bleibt mein 2.Kombi leer. Kannst du mir noch mal helfen?

Gruß
Dietmar

MaggieMay

Hallo Dietmar,

ein Screenshot vom Beziehungsfenster wäre hilfreich, damit man die beteiligten Tabelle, deren Strukturen und Verknüpfungen erkennen kann.

Anfangs sprachst du von Maschinen und Störarten. Welche Rolle spielt dabei jetzt die Linie?

BTW:
SQL- und VBA-Code bitte stets kopieren und nicht händisch eintippen.
Freundliche Grüße
MaggieMay

Dietmar

Hallo MaggieMay,

danke für deine Antwort.
Die Linie ist ein anderer Ausdruck für Maschine.
In der Tabelle tblStoerungen werden die Stoerungen die an einer Linie(Maschine) mit den Ausfallzeiten und dem dazugehörigen Auftrag erfasst hierfür existiert auch das Formular mit den beiden Kombifeldern Linie(Maschine) übergeordnet und Stoerung in der ich die Stoerung der einzelnen Linie(M) angezeigt bekommen möchte.

In der Tabelle tblStoerart sind die Linien(Maschinen) und die dazugehörigen Stoerungen erfasst.
Gruß
Dietmar

MaggieMay

Demnach sollte die Datensatzherkunft von Kombifeld-1 folgendermaßen aussehen:
Select lin_id, lin_Slinie From tblLinien

Und so setzt du die Datensatzherkunft für Kombifeld-2 nach Auswahl der Linie:
Me!sto_stoerung.RowSource = "SELECT Stoerung_ID, Art_Stoerung FROM tblStoerart WHERE Linie = " & Me!Sto_LinieDieses Kombifeld ist also ebenfalls zweistellig!

PS:
Stoerung_ID in tblStoerart sollte sinnvollerweise eher stoart_ID (o.ä.) heißen.
Freundliche Grüße
MaggieMay

Dietmar

Hallo MaggieMay,
ich verzweifel. So schwer kann das doch nicht sein.
Ich habe glaube ich, alles so gemacht wie du es mir beschrieben hast, aber ich bin einfach zu blöd.
https://www.dropbox.com/s/2uvr34l7lrqoiig/Datenerfassung15.accdb?dl=0
Würdest du dir meine Datei mal ansehen wenn du Zeit hast und mir den entscheidenen Tipp geben, was ich wo falsch mache?
Vielen Dank für deine Mühe!
Gruß
Dietmar

MaggieMay

#7
Hi,

was hast du dir denn wohl bei diesem Feldnamen gedacht:Select lin_id, lin_Slinie From tblLiniendas sah doch vorher noch anders aus.

Ebenso verstehe ich nicht, was du mit den drei Kombifeldern im Formular "frmStoerungen" vorhast und wozu du die Tabelle "tblAuftragsbearbeitung" mit in die Datenherkunft des Formulars genommen hast.

Was den Fehler mit dem Kombifeld "Stoer" betrifft, so hast du leider in der Tabelle "tblStoerart" die Bezeichnung der Linie und nicht seine ID im Datenfeld "Linie" abgespeichert, daher funktioniert das Kriterium so nicht.
Ohne sonst etwas ändern zu müssen, sollte es hiermit klappen:    Me!Stoer.RowSource = "SELECT stoeart_ID, Art_Stoerung FROM tblStoerart " & _
                                    "WHERE Linie = '" & Me!Sto_Linie.Column(1) & "'"

Grundsätzlich sollte man aber die ID als Fremdschlüssel wählen.

Noch ein Tipp vorab:
Setze den Haken bei der VBA-Option "Variablendeklaration erforderlich" und füge den Eintrag "Option Explicit" im Kopf eines jeden Moduls hinzu. Anschließend alles kompilieren und Fehler bereinigen.
Freundliche Grüße
MaggieMay

Dietmar

Hallo MaggieMay,
vielen dank für deine Mühe  :)
Jetzt funktioniert das Ganze wie gewünscht.

ZitatEbenso verstehe ich nicht, was du mit den drei Kombifeldern im Formular "frmStoerungen" vorhast

Im ersten Kombi wähle ich den Auftrag zu dem diese Störung gehört
im Zweiten dann die Linie(M) und im Dritten habe ich dann dank deiner Hilfe die passenden Störungen zur Maschine.
Oder ist das nicht richtig so?
In der Auswertung später ist es wichtig zu wissen, welche Störungen ich an welcher Maschine hatte und eine Zuordnung des Auftrags ist ebenfalls wichtig!
Wenn ich in meiner Struktur Fehler habe, wäre ich dir für Tipps sehr dankbar :)
Gruß
Dietmar

MaggieMay

ZitatIm ersten Kombi wähle ich den Auftrag zu dem diese Störung gehört
Und warum hat diese Auswahl keine Auswirkung auf das nächste Kombifeld?

Ist dir klar, dass dies nur zur Erfassung neuer Datensätze eingesetzt werden und keineswegs mit einer Such- oder Filterfunktion verwechselt werden darf?

Die folgende Frage wäre noch offen:
Zitatverstehe ich nicht, [...] wozu du die Tabelle "tblAuftragsbearbeitung" mit in die Datenherkunft des Formulars genommen hast.
Freundliche Grüße
MaggieMay

Dietmar

Hallo MaggieMay,
danke für deine Geduld. ::)
ZitatUnd warum hat diese Auswahl keine Auswirkung auf das nächste Kombifeld?
Du hast recht habe ich geändert.
Zur zweiten Frage habe ich ehrlich gesagt keine Erklärung das muss beim Erstellen passiert sein.

Das mit der Linien ID in der Tabelle tblStoerart habe ich auch geändert. Nun habe ich wieder die Probleme mit dem 3. Kombifeld.
Kannst du dir das noch mal Ansehen, ob das mit der Beziehung Linie zur Störungsart so passt?

https://www.dropbox.com/s/znizerwck68gh3n/Datenerfassung16.accdb?dl=0
Gruß
Dietmar

MaggieMay

Ich möchte dich bitten, alle meine Fragen und Antworten zu berücksichtigen.

Der folgende Punkt wurde von dir offensichtlich nicht beachtet:
Zitat von: MaggieMay am Dezember 19, 2014, 20:56:12was hast du dir denn wohl bei diesem Feldnamen gedacht:Select lin_id, lin_Slinie From tblLiniendas sah doch vorher noch anders aus.
Freundliche Grüße
MaggieMay

Dietmar

Sorry. Du hast recht bin erst jetzt dahintergekommen was du meinst.
Gruß
Dietmar