Seite 2 von 2
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Sa 19. Jan 2019, 16:41
von RobertG
Hallo Marcel,
hier die Abfrage, die nach den Baugruppen die Summen bildet:
Code: Alles auswählen
SELECT "ID_Baugruppe", "ID_Komponente", "Bauteil Anzahl",
( SELECT "Bruttopreis" FROM "Komponenten" WHERE "ID" = "a"."ID_Komponente" ) AS "Brutto",
"Bauteil Anzahl" * ( SELECT "Bruttopreis" FROM "Komponenten" WHERE "ID" = "a"."ID_Komponente" ) AS "Bruttopreis gesamt",
(SELECT SUM("rel_Komponenten"."Bauteil Anzahl" * "Komponenten"."Bruttopreis")
FROM "rel_Komponenten", "Komponenten"
WHERE "Komponenten"."ID" = "rel_Komponenten"."ID_Komponente"
AND "rel_Komponenten"."ID_Baugruppe" = "a"."ID_Baugruppe") AS "Summe_Baugruppe"
FROM "rel_Komponenten" AS "a"
Ich hoffe, dass es das ist, was Du dachtest.
Gruß
Robert
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Sa 19. Jan 2019, 19:55
von marcel00
Hallo Robert,
genauso habe ich mir das gedacht.
Jetzt müssten "nur" noch die Summen für die Hauptbaugruppen in das Hauptformular Zuordnungen_Komponenten_Grd_List unter Baugruppe Kosten eingefügt werden. In der Abfrage taucht ja mehrmals die Summe für eine Hauptbaugruppe auf. Es könnte jeweils die zum ersten mal auftrende Summe übertragen werden. Nur wie drücke ich das in SQL aus?
Ich wünsche noch ein schönes Wochenende.
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Sa 19. Jan 2019, 21:13
von RobertG
Hallo Marcel,
die Beträge berechnest Du doch in Abhängigkeit von den Informationen des Unterformulars, oder sehe ich das falsch. Dann kannst Du die Informationen nicht im Hauptformular aktuell darstellen. Du müsstest ja jedes Mal, wenn Du einen Datensatz im Unterformular erstellst, das Hauptformular aktualisieren und dazu noch auf den vorhergehenden Datensatz des Hauptformulars springen.
Die Darstellung macht also in dem Hauptformular nur Sinn, wenn Du mit der Eingabe fertig bist.
Gruß
Robert
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Sa 19. Jan 2019, 21:34
von marcel00
Deswegen hatte ich ursprünglich die Schaltfläche Berechnen über dem Subformular , damit erst nach Auswahl der Komponenten der Gesamtpreis der Hauptgruppe aktualisiert wird.
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: So 20. Jan 2019, 09:34
von RobertG
Hallo Marcel,
Du müsstest diesen Button wieder einfügen, allerdings nicht im Hauptformular sondern ein einem gesonderten Formular, das nur die Baugruppen und die Gesamtbeträge darstellt und nicht zur Eingabe gedacht ist. Dann bekommst Du auch keine Sprünge in dem Eingabeformular, wenn Du eine andere Baugruppe wählst um dort im Unterformular Eingaben zu machen.
Gruß
Robert
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Mo 21. Jan 2019, 09:36
von marcel00
Hallo Robert,
wie müsste die Abfrage aussehen, so dass jeder Hauptbaugruppe nur einmal die Summe der Komponenten gegenübersteht. Gibt es die Möglichkeit die ID_Baugruppe über eine Zählschleife zu iterieren und dann die zugehörigen Komponenten über eine Selektion also z.B. WHERE "rel_Komponenten"."ID_Baugruppe" = zähler aus der Tabelle rel_Komponenten zu summieren? Wird irgendwo die Anzahl der Hauptbaugruppen hinterlegt oder kann man sich ein Maximum für ID_Baugruppe bestimmen lassen, welches dann als Oberwert für zähler der Zählschleife gesetzt wird?
Vielen Dank für Deinen Einsatz selbst noch am Wochenende.
Gruß
Marcel
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Mo 21. Jan 2019, 17:27
von RobertG
Hallo Marcel,
so etwas wie
Code: Alles auswählen
SELECT "rel_Komponenten"."ID_Baugruppe", SUM("rel_Komponenten"."Bauteil Anzahl" * "Komponenten"."Bruttopreis")
FROM "rel_Komponenten", "Komponenten"
WHERE "Komponenten"."ID" = "rel_Komponenten"."ID_Komponente"
GROUP BY "rel_Komponenten"."ID_Baugruppe"
Ist jetzt auf die ID der Baugruppe bezogen.
Gruß
Robert
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Mo 21. Jan 2019, 20:20
von marcel00
Hallo Robert,
ich habe versucht noch Baugruppen ID und Namen aus der Tabelle Baugruppen als Spalte in der Abfrage zu ergänzen mit
Code: Alles auswählen
SELECT "rel_Komponenten"."ID_Baugruppe", SUM( "rel_Komponenten"."Bauteil Anzahl" * "Komponenten"."Bruttopreis" ), "Baugruppen"."Baugruppe ID", "Baugruppen"."Baugruppe Name" FROM "Komponenten", "rel_Komponenten", "Baugruppen" WHERE "Komponenten"."ID" = "rel_Komponenten"."ID_Komponente" AND "rel_Komponenten"."ID_Baugruppe" = "Baugruppen"."ID" GROUP BY "rel_Komponenten"."ID_Baugruppe"
Jetzt erhalte ich die Fehlermeldung Not in aggregate function or group by clause. Müssen jetzt Baugruppe ID und Baugruppe Name auch zur Gruppe hinzugefügt werden?
Gruß
Marcel
Re: Makro um in einem Subformular nach Wahl aus Listenfeld ein entsprechend zugehöriges Feld in Spalte zu übertragen
Verfasst: Mo 21. Jan 2019, 21:03
von RobertG
Hallo Marcel,
wenn Du bei einer Funktion wie der SUMME ein anderes Feld dazu schreibst, dann muss die Summe in Abhängigkeit von dem Feld berechnet werden. Jedes Feld, das Du zusätzlich einbringst, gehört also in die GROUP BY-Formulierung.
Code: Alles auswählen
SELECT "rel_Komponenten"."ID_Baugruppe",
SUM( "rel_Komponenten"."Bauteil Anzahl" * "Komponenten"."Bruttopreis" ),
"Baugruppen"."Baugruppe ID", "Baugruppen"."Baugruppe Name"
FROM "Komponenten", "rel_Komponenten", "Baugruppen"
WHERE "Komponenten"."ID" = "rel_Komponenten"."ID_Komponente" AND "rel_Komponenten"."ID_Baugruppe" = "Baugruppen"."ID"
GROUP BY "rel_Komponenten"."ID_Baugruppe", "Baugruppen"."Baugruppe ID", "Baugruppen"."Baugruppe Name"
... wobei hier doch die Baugruppen-ID doppelt vorkommt, oder? Zuerst in der Tabelle "rel_Komponenten" und dann in der Tabelle "Baugruppen".
Gruß
Robert
Finale Version Baugruppen Datenbank
Verfasst: Di 22. Jan 2019, 11:41
von marcel00
Hallo Robert,
die Bezeichnung ID_Baugruppe in rel_Komponenten ist unglücklich gewählt. Sie stellt lediglich den Foreign key (Integer)zur Verknüpfung zwischen Komponenten und Baugruppen dar, während Baugruppe ID in Baugruppen die Kurzbezeichnung der Baugruppe(Text) angibt. Jetzt klappt alles so wie erhofft. Ich habe die finale Version der Datenbank angehängt. Vielleicht braucht jemand sowas ähnliches.
Danke Robert