Neuigkeiten:

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

Mobiles Hauptmenü

Filtern bei Zuordnungstabelle

Begonnen von Carl, Juni 11, 2018, 18:17:21

⏪ vorheriges - nächstes ⏩

Carl

Ich versuche vielleicht doch mal, das mit der Zuordnungstabelle hin zu kriegen. Es ist für ich ziemlich undurchsichtig.

Ziel ist, den Wust um die Tabelle tblBatterien los zu werden.

tblWorkorder enthält Probanden
tblBatterien enthält Batterien

Jeder Proband kann verschiedenen Batterien zugeordnet werden.

Ich habe jetzt die Zuordnungstabelle ztblBatterien angelegt, aber es lassen sich irgendwie keine n:m-Beziehungen herstellen. Es bleibt immer bei 1:n. Wie kann man das einrichten?

Ich habe das mit diesen Beziehungen nicht verstanden.

Carl

MzKlMu

Hallo,
das ist schon richtig so. Eine n:m Beziehung sind zwei 1:n Beziehungen.
Wenn Du die andere Linie anklickst erhältst Du das gleiche Bild noch mal mit den entsprechenden Feldnamen.

Das die 12 Batteriezugeordnete Felder mitsamt den verknüpften Tabellen dann entfallken weißt Du ?

Du solltest Dich endlich mal dazu durchringen die ID Felder vernüftig (zur Tabelle) zu benennen. Du blickst Doch da nicht mehr durch wenn Du das nicht machst.

Gruß Klaus

Carl

Zitat von: MzKlMu am Juni 11, 2018, 18:27:47
Das die 12 Batteriezugeordnete Felder mitsamt den verknüpften Tabellen dann entfallken weißt Du ?

Du solltest Dich endlich mal dazu durchringen die ID Felder vernüftig (zur Tabelle) zu benennen. Du blickst Doch da nicht mehr durch wenn Du das nicht machst.

Ja, die Felder sollen entfallen.

Ich kann die ID's nicht mehr umbenennen, weil sich anderer VBA darauf bezieht, der nicht automatisch aktualisiert wird und ich sonst Salat bekomme. Ich machs aber beim nächsten Projekt gleich von Anfang an so.

Jetzt habe ich das Problem

Das Formular zum Zuordnen der Batterie
HF basiert auf tblWorkorder
UFOendlos basiert auf tblBatterie
beide verknüpft über die ID
im UFOendlos ein Kombifeld, das die Batterien zuordnen kann.

Wenn ich das HF aufrufe und im Kombifeld ein paar werte aussuche, speichert Access diese Auswahl in der Datei "tblBatterien", was aber sinnlos ist, weil ich ja keine neuen Batterien erzeugen möchte. (die dann im Kombifeld als Optionen auftauchen)

Was könnte ich falsch gemacht haben?

Carl


MzKlMu

Hallo,
ZitatUFOendlos basiert auf tblBatterie
beide verknüpft über die ID
das ist ja auch falsch. Das Ufo muss auf der Tabelle "ztblBatterien" (also der Zwischentabelle) bassieren. Verknüpft wird über die ID und IDWO_F.
Das Kombi bassiert auf der Tabelle "tblBatterien" und muss an das Feld "IDBAT_F" gebunden werden. Die erste Spalte des Kombis muss die ID der Tabelle "tblBatterien" anzeigen und weitere Spalten. Die ID Spalte wird mit Spaltenbreite 0cm ausgeblendet.
Gruß Klaus

Carl

ach, alles klar, okay. Mein erster Erfolg bei Zuordnungstabellen!

Was muss man denn machen, wenn man keine Batterie doppelt dem Probanden zuordnen lassen möchte?


Carl

Und jetzt habe ich folgendes Problem:

Ich habe ein HF_alles, das ein UFO_alles enthält, welches alle Probanden anzeigt. Dies lässt sich filtern.

Im HF_alles befindet sich ein Kombifeld, das schon die Batterien anzeigt.

Welches Feld soll man in dem UFO eintragen, damit das Formular weiß, welche Batterien alle dem Probanden zugeordnet sind?

Und wie kann man das Kombi ansteuern, das es filtert?

Carl




MzKlMu

Hallo,
lege über IDBAT_F und IDWO_F einen eindeutigen zusammengesetzten Index an. Dann wird das auf Tabellenebene unüberwindbar verhindert.
Gruß Klaus

MzKlMu

#7
Hallo,
Dein weiteres Problem verstehe ich nicht.
ZitatIm HF_alles befindet sich ein Kombifeld, das schon die Batterien anzeigt.
Im HF macht ein solches Kombifld keinen Sinn. Das HF zeigt die Daten des Probanten, sonst nix.
ZitatWelches Feld soll man in dem UFO eintragen, damit das Formular weiß, welche Batterien alle dem Probanden zugeordnet sind?
Das erfolgt ausschließlich über die Verknüpfung, vollkommen automatisch. Welche Felder da zu verwenden sind, habe ich oben schon geschrieben.
Zitat von: KlMzMuVerknüpft wird über die ID und IDWO_F.
Das muss auch kein Kombi gefiltert werden, was willst Du da filtern ?
Das Kombi wählt die zutreffenden Batterien aus und fertig.
Gruß Klaus

Carl

Zitat von: MzKlMu am Juni 11, 2018, 19:28:49
Hallo,
lege über IDBAT_F und IDWO_F einen eindeutigen zusammengesetzten Index an. Dann wird das auf Tabellenebene unüberwindbar verhindert.

Das hat geklappt. Danke

Carl

Carl

Nein, ich meinte das anders.

Es gibt ein weiteres, anderes HF-UFO-Formular, das der Übersicht dient. Das UFO zeigt ALLE Probanden an und lässt sich mit Kombis filtern.

Die Aufgabe ist jetzt, das UFO zu filtern nach den Batterien.

Im HF habe ich jetzt ein Kombifeld, das schon die Batterien zeigt. Ich möchte jetzt, das der Inhalt vom UFO immer nach der im Kombi angeklickten Batterie gefiltert wird.

Welches Feld soll ich in diesem UFO einfügen, damit gefiltert werden kann? Es sind ja pro Proband mehrere Batterien zuordenbar.

Carl

Carl

Also wenn ich beispielsweise nach allen DS filtern möchte, denen die Batterie mit der ID=1 zugeordnet ist. Soll man dazu eine Abfrage entsprechend gestalten und diese mit dem Kombi ansteuern?

Carl

MzKlMu

Hallo,
das würde ich völlig anders lösen.
Lege ein extra Hafo an mit den Batterien als Datenquelle.
In einem Ufo nimmst Du die Zwischentabelle und die Probantentabelle auf.
Verknüpft wird Hafo und Ufo über die ID (Batterie) und IDBAT_F.
Dann werden im Ufo automatisch alle zu einer Batterie gehörenden Probanten angezeigt.
Bei Bedarf kann man mit einem ungebunden Listenfeld im Hafo die Batterien filtern.
Oder Du blätterst einfach duch die Batterien, sind ja nur 12.
Gruß Klaus

Carl

#12
An das bereits bestehende Hauptformular haben sich die Mitarbeiter aber schon gewöhnt. Und es soll auch schneller zwischen Filtern hin- und her gewechselt werden. Die arbeiten mit diesem Formular und schränken die Ansicht mit Filtern ein, wobei die Batterie einer dieser Filter sein soll.

Siehst Du eine Möglichkeit, das UFO über ein Kombifeld zu filtern wie oben beschrieben?

Ich weiß zum Beispiel nicht, welches Feld ich in das UFO einfügen soll, auf das dann das Kombifeld zum filtern zugreifen kann. Weil ja jeder Proband mehreren Batterien zugeordnet sein kann.

Von der Lösung über mehrfach-Wert-Felder hattest Du ja in einem anderen Thread abgeraten wegen Instabilität bei vielen Datensätzen oder viel traffic.

Carl

MzKlMu

#13
Hallo,
es ist keine besonders gute Idee alles mit einem Formular erledigen zu wollen.
Um auf Deinen Wunsch zurückzukommen, wenn Du das Ufo auf eine Batterie filterst, so muss auch das Hafo gefiltert werden, denn es darf dann nur die Probanten anzeigen die auch zu der Batterie passen. Im Hafo gibt es aber kein Feld für die Batterie. Das bedeutet, in das Hafo muss auch die Zwischentabellle aufgenommen werden damit Du über das FS Feld zur Batterie filtern kannst. Gleichzeitig soll aber Hafo und Ufo dazu dienen die Batterien zuzuordnen.
Das ist mehr als verwirrend und letztendlich unpraktikabel.

Jedes Formular hat seine Aufgabe.

Mache ein kleines Formular mit Schaltflächen, das das Formular startet das für die Augabe gemacht wurde.
Die Mitarbeiter werden sich da schnell daran gewöhnen.
Gruß Klaus

Carl

Im Prinzip könnte man eine Batterie 0 anlegen und dann das HAFO darauf aufsetzen.

Oder mal eine andere Idee:
Wäre folgende Lösung denkbar:

Kann man in dieser Abfrage das so einrichten, dass sie auf eine in einem Kombi im HF vorgenommene Auswahl zurück greift und dann die Datensätze auf den jeweiligen ID-Wert eingrenzt?

Das UFO basiert auf einer Abfrage "abfworkorder"


SELECT tblworkorder.ID, tblworkorder.WOName, tblworkorder.WOBeschreibungKurz, tblworkorder.WOBeschreibungMemo, tblworkorder.WOBereich, tblBereiche.Bereich AS WOBereichUC, tblworkorder.WOKernkompetenz, tblKernkompetenz.Kernkompetenz AS WOKernkompetenzUC, tblworkorder.WOStufe, tblStufen.Stufe AS WOStufeUC, tblworkorder.WOAutor, tblworkorder.WOStaffel, tblAutoren.Autor AS WOAutorUC, tblworkorder.WOZeitstempel, tblworkorder.WOStandRohversion, tblworkorder.WOOrdnername, (DLookUp("Hilfstexte","tblHilfstexte","ID=1"))+([WOOrdnername]) AS Pfad1, (DLookUp("Hilfstexte","tblHilfstexte","ID=3")) AS Pfad0, (DLookUp("Hilfstexte","tblHilfstexte","ID=1"))+([WOOrdnername])+"\"+"Manual.docx" AS PfadManual, (DLookUp("Hilfstexte","tblHilfstexte","ID=1"))+([WOOrdnername])+"\"+"Instruktion.docx" AS PfadInstruktion, (DLookUp("Hilfstexte","tblHilfstexte","ID=1"))+([WOOrdnername])+"\"+"Auswertung.docx" AS PfadAuswertung, (DLookUp("Hilfstexte","tblHilfstexte","ID=1"))+([WOOrdnername])+"\"+"ExcelSheets.xlsm" AS PfadSheets, tblworkorder.Obs01, tblworkorder.Obs02, tblworkorder.Obs03, tblworkorder.Obs04, tblworkorder.Obs05, tblworkorder.ObsTime, tblworkorder.ausblenden, tblworkorder.ObsTimeVorgabe, tblStandRohversion.Rohversion, tblworkorder.WOParallelgruppe, IIf([WOParallelgruppe]=1,"","I") AS WOParallelgruppeIndex, tblparallelgruppe.parallelgruppeName, tblworkorder.istdirektaufgabe
FROM tblparallelgruppe INNER JOIN (tblStufen INNER JOIN (tblBereiche INNER JOIN (tblKernkompetenz INNER JOIN (tblStandRohversion INNER JOIN (tblAutoren INNER JOIN tblworkorder ON tblAutoren.ID = tblworkorder.WOAutor) ON tblStandRohversion.ID = tblworkorder.WOStandRohversion) ON tblKernkompetenz.ID = tblworkorder.WOKernkompetenz) ON tblBereiche.ID = tblworkorder.WOBereich) ON tblStufen.ID = tblworkorder.WOStufe) ON tblparallelgruppe.ID = tblworkorder.WOParallelgruppe
WHERE (((tblworkorder.ausblenden)=False) AND ((tblworkorder.istdirektaufgabe) Not In (True)));