Hallo,
einmal mehr mit einer Fragen bezüglich einer Abfrage.
Ich habe eine Tabelle mit Defekten angelegt. Dort wird unter der DefectID die Kunden-ID, der Name, das defekte Produkt und das Datum gespeichert.
Daneben habe ich eine Tabelle, indem die reparierten/ersetzen Teile ersichtlich sind.
Dort beziehe ich mich auf die DefectID und ordne das Repair/Replacement-Datum, das ersetzte/reparierte Einzelteil und ob es eben ersetzt oder repariert wurde etc. zu.
Da wir am Anfang nicht genau wissen, welches Einzelteil vom Produkt kaputt ist, wird unter der Tabelle Defekt immer dass gekaufte Produkt als "defekt" angegeben.
Da die Produkte aus mehreren Einzelteilen bestehen und es gegebenenfalls sein kann, dass mehr als 1 Einzelteil kaputt ist, gibt es DefektID's, denen man mehrere Reparatur/Ersatz-Vorgänge zuordnen lassen muss.
Nun möchte ich eine Abfrage gestaltet, in der man auf der linken Seite die Defekte sieht und auf der rechten Seite die Reparatur/Ersatz-Vorgänge, mit dem Ziel, dass ich durch das nebeneinander schreiben direkt ablesen kann, wieviele offene Defekte ich noch habe (wenn mehr Defekte als Reparatur/Ersatz-Vorgänge vorhanden).
Siehe vergleichend im Screenshot 9.
Mein Problem besteht jetzt bei den DefektID's, bei denen wir mehrere Reparatur/Ersatz-Vorgänge haben.
Mein gewünschtes Layout wäre dieses:
DefektID ... ... ... RepairReplaceID
1 ... ... ... 1
2
2 ... ... ... 3
3 ... ... ... 4
5
Heißt: Er soll mir links die Angaben aus der Defekt-Tabelle zeigen und im Falle von mehrere Reparatur/Ersatz-Vorgängen diese in mehrere Zeilen untereinander auf der rechten Seite schreiben, ohne (wie bei mir im Screenshot) nochmal die Defekt-ID in der zweiten Zeile anzugeben.
Mein bisheriges Layout wäre also...
DefektID ... ... ... RepairReplaceID
1 ... ... ... 1
1 ... ... ... 2
2 ... ... ... 3
3 ... ... ... 4
3 ... ... ... 5
Nun bin ich mir etwas unsicher, welche JOIN-Ausdrücke ich verwenden muss. Ich habe schon daran rumgespielt, aber dann kommen bei mir Fehlermeldungen.
Der SQL-Code meiner Abfrage lautet:
SELECT SA_Defect.DefectID, SA_Defect.DefectItem, SA_Defect.CustomerID, SA_Defect.CustomerName, MI_Villages.VillageID, MI_Villages.VillageName, SA_Defect_RepairedReplaced.RepairedReplacedID, SA_Defect_RepairedReplaced.RepairReplaceDate, SA_Defect_RepairedReplaced.RepairedReplacedItem, SA_Defect_RepairedReplaced.Replaced
FROM (MI_Villages INNER JOIN SA_Customer ON MI_Villages.VillageID = SA_Customer.VillageID) INNER JOIN (SA_Defect_RepairedReplaced RIGHT JOIN SA_Defect ON SA_Defect_RepairedReplaced.DefectID = SA_Defect.DefectID) ON SA_Customer.CustomerID = SA_Defect.CustomerID;
Kann mir jemand weiterhelfen?
Viele Grüße und vielen Dank,
Marcus
Hallo,
das geht nicht und hat auch mit JOIN nichts zu tun. Es ist auch nicht notwendig, denn die Sicht auf eine Abfrage sollte für den User gar nicht notwendig sein. Die gewünschte Darstellung erreichst Du mit einem (gruppierten) Bericht oder mit einem Hauptformular/Unterformular Aufbau.
Hallo,
auf Basis der Abfrage generiere ich ja einen Bericht.
Der sieht wie im Screenshot aus.
Wenn ich jetzt auf Gruppieren/Sortieren gehe und nach der DefectID gruppiere kommt etwas ganz gruseliges raus (siehe zweiter Screenshot). Bin ich zu blöd zum gruppieren oder geht das nicht besser?
Hi,
du brauchst keine Gruppierung, wenn du lediglich die Duplikate unterdrücken willst.
Dafür gibt es eine Eigenschaftseinstellung im jeweiligen Textfeld.
Aaaaaah...wie simpel... :)
Ganz lieben Dank, jetzt sieht das besser aus!
Hallo,
ich habe bewusst gruppieren genannt, denn die ID sagt ja nichts aus. Daher wird man ja wohl zu dieser ID nähere Infos brauchen und dann muss der Bericht gruppiert werden und die Daten die zur DefektID gehören im Gruppenkopf darstellen (als Überschrift sozusagen).