Berechnung der offenen Produktionsmengen
Moderator: Moderatoren
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
hmm, also trotz mehrmaligen durchlesens ist mir Deine Struktur nicht wirklich klar.
Also: Du hast eine Tabelle (T1) mit den Auftragsdaten: Auftragsnummer Produkt Auflage
Eine zweite Tabelle (T2) erfasst die Produktion: Auftragsnummer Mitarbeiter 'Produzierte Menge'
Der gemeinsame Schlüssel ist die Auftragsnummer.
Nun möchtest du gerne eine Ergebnistabelle, die Dir anzeigt, wieviel Restauflage noch produziert werden muss?
Nun, dafür nutzt man an sich Select-Abfragen, die Dir diesen Wert jederzeit problemlos darstellen können - in dem Fall eben mit Unterabfragen.
Soetwas wie:
Select T1. Auftragsnummer, T1 Produkt, T1.Auflage, T1.Auflage-SUM(T2.'Produzierte Menge') From T1..T2 Where T2.Auftragsnr = T1.Auftragsnummer) etc.
Stichwort: InnerJoin
Soetwas liesse sich theoretisch auch in einen View einbinden - ist aber eher unüblich. Views stellen kombinierete Abbildungen von Tabellen dar - nicht unbedingt Select-Anweisungen.
Vielleicht hilft es
hmm, also trotz mehrmaligen durchlesens ist mir Deine Struktur nicht wirklich klar.
Also: Du hast eine Tabelle (T1) mit den Auftragsdaten: Auftragsnummer Produkt Auflage
Eine zweite Tabelle (T2) erfasst die Produktion: Auftragsnummer Mitarbeiter 'Produzierte Menge'
Der gemeinsame Schlüssel ist die Auftragsnummer.
Nun möchtest du gerne eine Ergebnistabelle, die Dir anzeigt, wieviel Restauflage noch produziert werden muss?
Nun, dafür nutzt man an sich Select-Abfragen, die Dir diesen Wert jederzeit problemlos darstellen können - in dem Fall eben mit Unterabfragen.
Soetwas wie:
Select T1. Auftragsnummer, T1 Produkt, T1.Auflage, T1.Auflage-SUM(T2.'Produzierte Menge') From T1..T2 Where T2.Auftragsnr = T1.Auftragsnummer) etc.
Stichwort: InnerJoin
Soetwas liesse sich theoretisch auch in einen View einbinden - ist aber eher unüblich. Views stellen kombinierete Abbildungen von Tabellen dar - nicht unbedingt Select-Anweisungen.
Vielleicht hilft es
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: Berechnung der offenen Produktionsmengen
Erstmal vielen Dank für deine Antwort !
Ich denke, du hast mein Anliegen ganz gut verstanden. Ich danke dir auch für den Hinweis von InnerJoin.
Allerdings will es immernoch nicht so richtig klappen. Wenn ich deinen Vorschlag (angepasst) in der Abfrage eingebe, erhalte ich jedesmal einen Syntaxfehler
Ich habe diesmal die datenbank angehangen. Vllt hast du oder wer anderes ja kurz Lust mal reinzuschauen. Dort ist auch nochmal gut einsehbar, was die Problematik ist. In der Ansicht ist ein und der selbe Auftrag mehrmals mit einer kleinen Teilauflage produziert. Die noch zu produzierende Menge ist somit leider immer falsch
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
ich nehme an, dass es um die Summierung von des Felds "Fortdruck" geht, das bei gleicher "Auftragsnummer" jetzt insgesamt schon 3000 Drucke gemacht hat. Richtig?
Ersetze einmal den Inhalt Deiner Ansicht durch diesen:
Da wird alles zu einem Auftrag zusammengezählt. Das Ergebnis ist bei Deinen Angaben eine einzige Datenzeile mit allen Abzügen aus dem Druck.
Gruß
Robert
ich nehme an, dass es um die Summierung von des Felds "Fortdruck" geht, das bei gleicher "Auftragsnummer" jetzt insgesamt schon 3000 Drucke gemacht hat. Richtig?
Ersetze einmal den Inhalt Deiner Ansicht durch diesen:
Code: Alles auswählen
SELECT "kunden"."Kundennummer", "a"."Auftragsnummer", "kunden"."Name", "a"."Objekt", "a"."Auflage", "Auflage" - (SELECT SUM("Fortdruck") FROM "maschine" WHERE "Auftragsnummer" = "a"."Auftragsnummer") AS "Noch zu drucken", (SELECT SUM("Fortdruck") FROM "maschine" WHERE "Auftragsnummer" = "a"."Auftragsnummer") AS "Bereits gedruckt" FROM "eingang" AS "a", "kunden" WHERE "a"."Kundennummer" = "kunden"."Kundennummer"
Gruß
Robert
Re: Berechnung der offenen Produktionsmengen
Ich muss das Thema leider doch nochmal anfangen.
Mit der Select eingabe kam ich in dem ersten Beispiel gut zurecht. Anders sieht es jetzt momentan aus.
Vllt kannst du mir hier nochmal helfen?
Ich habe die Druckliste "F1.0.Druckplanung". Da sind quasie alle Druckaufträge drin und diese sind durch Signaturen gekennzeichnet.
Nun habe ich "F1.1.Druckmaschine_1" und "F1.2.Druckmaschine_2". Diese produzieren unabhängig voneinander.
In der Abfrage soll nun immer stehen, wieviel noch zu produzieren ist. Unabhängig davon , ob eine Maschine produziert oder beide. Zudem soll mir immer die aktuelle Menge an fehlenden Druckbogen angezeigt werden und nicht jede Rechnung einzeln. Wie also oben schonmal angesprochen.
Mein Code :
Also unabhängig voneinander werden sie so schonmal ausgegeben. Allerdings werden die werte der jeweiligen Signatur noch nicht addiert Habe das mit deinem Code oben versucht umsetzen aber ich habe jedesmal einen Syntax-Fehler
Mit der Select eingabe kam ich in dem ersten Beispiel gut zurecht. Anders sieht es jetzt momentan aus.
Vllt kannst du mir hier nochmal helfen?
Ich habe die Druckliste "F1.0.Druckplanung". Da sind quasie alle Druckaufträge drin und diese sind durch Signaturen gekennzeichnet.
Nun habe ich "F1.1.Druckmaschine_1" und "F1.2.Druckmaschine_2". Diese produzieren unabhängig voneinander.
In der Abfrage soll nun immer stehen, wieviel noch zu produzieren ist. Unabhängig davon , ob eine Maschine produziert oder beide. Zudem soll mir immer die aktuelle Menge an fehlenden Druckbogen angezeigt werden und nicht jede Rechnung einzeln. Wie also oben schonmal angesprochen.
Mein Code :
Code: Alles auswählen
SELECT "F1.0.Druckplanung"."Auftragsnummer", "F1.0.Druckplanung"."Signatur", "F1.0.Druckplanung"."Fortdruckbogen" - IFNULL( "F1.1.Druckmaschine_1"."Gedruckte Auflagebogen", 0 ) - IFNULL( "F1.2.Druckmaschine_2"."Gedruckte Auflagebogen", 0 ) AS "Restliche Auflagebogen" FROM "F1.0.Druckplanung" LEFT JOIN "F1.1.Druckmaschine_1" ON "F1.1.Druckmaschine_1"."Signatur" = "F1.0.Druckplanung"."Signatur" LEFT JOIN "F1.2.Druckmaschine_2" ON "F1.2.Druckmaschine_2"."Signatur" = "F1.0.Druckplanung"."Signatur"
Also unabhängig voneinander werden sie so schonmal ausgegeben. Allerdings werden die werte der jeweiligen Signatur noch nicht addiert Habe das mit deinem Code oben versucht umsetzen aber ich habe jedesmal einen Syntax-Fehler
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
die Abfrage passt nicht zu Deiner bisherigen Datenbank. Ohne ein Beispiel kann ich schlecht nachvollziehen, welches Problem Du dabei hast.
Gruß
Robert
die Abfrage passt nicht zu Deiner bisherigen Datenbank. Ohne ein Beispiel kann ich schlecht nachvollziehen, welches Problem Du dabei hast.
Gruß
Robert
Re: Berechnung der offenen Produktionsmengen
Hey Robert,
tut mir sehr leid. Ich habe die Tabellen als Datenbank angelegt und hier jetzt nochmal hochgeladen.
Wie gesagt, die unabhängige Berechnung von 1+n Maschinen funktioniert soweit. Aber in der Abfrage werden die gesamten Produktionsmengen der jeweiligen Signatur leider nicht summiert und ausgegeben sondern jeweils einzeln.
Ich habe das schon mit deiner Hilfestellung oben versucht. Bei einer Maschine habe ich das auch soweit mal hinbekomen. Bei zwei Maschinen funktionierte es leider bisher noch nicht
tut mir sehr leid. Ich habe die Tabellen als Datenbank angelegt und hier jetzt nochmal hochgeladen.
Wie gesagt, die unabhängige Berechnung von 1+n Maschinen funktioniert soweit. Aber in der Abfrage werden die gesamten Produktionsmengen der jeweiligen Signatur leider nicht summiert und ausgegeben sondern jeweils einzeln.
Ich habe das schon mit deiner Hilfestellung oben versucht. Bei einer Maschine habe ich das auch soweit mal hinbekomen. Bei zwei Maschinen funktionierte es leider bisher noch nicht
- Dateianhänge
-
- problemfall.odb
- (3.74 KiB) 175-mal heruntergeladen
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
ich habe das einmal kurz und leider dann vielleicht nicht auf die einfache Tour gelöst, da ich nicht so viel Zeit habe:
Der Haken bei Deiner Auflistung war, dass die Abfrage natürlich zwei Datensätze darstellt, da in einer Tabelle 2 und in der anderen 1 Datensatz waren. Hier musst Du zuerst die einzelnen Elemente gruppieren und die Summen von den bereits erfolgten Drucken zu den Gruppierungen aufstellen. Das Ergebnis aus dieser Auflistung habe als Grundlage für die Abfrage genommen, bei der aus den geplanten Drucken und den Erfolgten Drucken die Differenz gezogen wird. Das geht so nicht direkt innerhalb einer Gruppierung.
Gruß
Robert
ich habe das einmal kurz und leider dann vielleicht nicht auf die einfache Tour gelöst, da ich nicht so viel Zeit habe:
Code: Alles auswählen
SELECT "a".*, "a"."Fortdruckbogen" - "a"."Gedruckte Auflagebogen" AS "Restliche Auflagebogen" FROM (SELECT "F1.0.Druckplanung"."Auftragsnummer", "F1.0.Druckplanung"."Signatur", "F1.0.Druckplanung"."Fortdruckbogen", SUM(IFNULL( "F1.1.Druckmaschine_1"."Gedruckte Auflagebogen", 0 )+ IFNULL( "F1.2.Druckmaschine_2"."Gedruckte Auflagebogen", 0 )) AS "Gedruckte Auflagebogen" FROM "F1.0.Druckplanung" LEFT JOIN "F1.1.Druckmaschine_1" ON "F1.1.Druckmaschine_1"."Signatur" = "F1.0.Druckplanung"."Signatur" LEFT JOIN "F1.2.Druckmaschine_2" ON "F1.2.Druckmaschine_2"."Signatur" = "F1.0.Druckplanung"."Signatur" GROUP BY "F1.0.Druckplanung"."Auftragsnummer", "F1.0.Druckplanung"."Signatur", "F1.0.Druckplanung"."Fortdruckbogen") AS "a"
Gruß
Robert
Re: Berechnung der offenen Produktionsmengen
Hey Robert,
vielen Dank ! Ich wollte das ganze erst ein wenig verinnerlichen und selbstständig auf weitere Beispiele anwenden bevor ich mich melde.
Es funktioniert ganz wunderbar und ich denke, ich kann es ganz gut nachvollziehen. Vielen Dank also, es hat mich sehr viel weitergebracht.
Schöne Grüße
Jan
vielen Dank ! Ich wollte das ganze erst ein wenig verinnerlichen und selbstständig auf weitere Beispiele anwenden bevor ich mich melde.
Es funktioniert ganz wunderbar und ich denke, ich kann es ganz gut nachvollziehen. Vielen Dank also, es hat mich sehr viel weitergebracht.
Schöne Grüße
Jan
Re: Berechnung der offenen Produktionsmengen
Halli Hallo,
es ist mal wieder an der Zeit ein paar Probleme mit Produktionsmengen zu haben ^^
Ich habe meine alte Produktionsdatenbank noch einmal überarbeitet. Es ging ja immer darum, dass ein Auftrag an zwei Produktionsmaschinen produziert werden sollte und in der Abfrage diese dann miteinander berechnet werden sollten. Unabhängig davon, ob eine Maschine produziert hat oder beide.
Bisher habe ich für diese Aufträge nur eine einzige "Signatur" verwendet. Diese bestand aus einem VARCHAR text. Bei einem hohen Datenbankvolumen wurde die rechenzeit so leider jedoch recht hoch, weshalb ich mich dafür entschieden habe, das ganze nochmal aufzufächern in "Aufragsnummer", "Version" "Produktteil" und "Bogennummer". Diese vier Parameter zeigen im Grunde "hey, das ist der Auftrag mit der Version, davon der Umschlag und Bogensatz nummer 1".
So, das ganze soll nun an einer, zwei oder beiden Maschinen laufen. Bisher haben wir das hier über den sql code direkt gelöst. das funktionierte bei einem parameter, der passen musste auch gut. jetzt müssen jedoch vier parameter zueinander passen und da bekomme ich probleme
Zudem würde ich das ganz gerne über das Frontend bzw die Benutzeroberfläche direkt lösen und nicht über den sql code. Gibt es da eine Möglichkeit?!
Wäre für Hilfe dankbar und viele Grüße
Jan
es ist mal wieder an der Zeit ein paar Probleme mit Produktionsmengen zu haben ^^
Ich habe meine alte Produktionsdatenbank noch einmal überarbeitet. Es ging ja immer darum, dass ein Auftrag an zwei Produktionsmaschinen produziert werden sollte und in der Abfrage diese dann miteinander berechnet werden sollten. Unabhängig davon, ob eine Maschine produziert hat oder beide.
Bisher habe ich für diese Aufträge nur eine einzige "Signatur" verwendet. Diese bestand aus einem VARCHAR text. Bei einem hohen Datenbankvolumen wurde die rechenzeit so leider jedoch recht hoch, weshalb ich mich dafür entschieden habe, das ganze nochmal aufzufächern in "Aufragsnummer", "Version" "Produktteil" und "Bogennummer". Diese vier Parameter zeigen im Grunde "hey, das ist der Auftrag mit der Version, davon der Umschlag und Bogensatz nummer 1".
So, das ganze soll nun an einer, zwei oder beiden Maschinen laufen. Bisher haben wir das hier über den sql code direkt gelöst. das funktionierte bei einem parameter, der passen musste auch gut. jetzt müssen jedoch vier parameter zueinander passen und da bekomme ich probleme
Zudem würde ich das ganz gerne über das Frontend bzw die Benutzeroberfläche direkt lösen und nicht über den sql code. Gibt es da eine Möglichkeit?!
Wäre für Hilfe dankbar und viele Grüße
Jan
- Dateianhänge
-
- problemdatenbank.odb
- (3.42 KiB) 156-mal heruntergeladen
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
auch nach mehrmaligem Durchlesen verstehe ich jetzt nicht, wovon eine Summe gezogen werden soll und wonach irgendwelche Felder gruppiert werden sollen.
Grundsätzlich aber: Wenn es um Geschwindigkeit geht, dann ist die Datenbank beim Berechnen deutlich schneller irgendetwas auf der Benutzeroberfläche. Denn die Benutzeroberfläche ist zwar für Dich der kürzeste Weg, aber eben nicht für die Daten. Dass Du das Ergebnis Deiner Eingaben vernünftig sehen kannst, das sollte ein Formular lösen. Nie aber die Berechnung.
Gruß
Robert
auch nach mehrmaligem Durchlesen verstehe ich jetzt nicht, wovon eine Summe gezogen werden soll und wonach irgendwelche Felder gruppiert werden sollen.
Grundsätzlich aber: Wenn es um Geschwindigkeit geht, dann ist die Datenbank beim Berechnen deutlich schneller irgendetwas auf der Benutzeroberfläche. Denn die Benutzeroberfläche ist zwar für Dich der kürzeste Weg, aber eben nicht für die Daten. Dass Du das Ergebnis Deiner Eingaben vernünftig sehen kannst, das sollte ein Formular lösen. Nie aber die Berechnung.
Gruß
Robert
Re: Berechnung der offenen Produktionsmengen
Hey Robert,
sorry für die schlechte Beschreibung. Ich habe das Beispiel nochmal etwas umgeändert.
Also :
Zwei Maschinen produzieren einen Auftrag. Der Auftrag wird identifiziert durch "Auftragsnummer" , "Version" , "Produktteil".
Wenn zwei Maschinen also beide einen Auftrag mit diesen 3 Kennzeichnungen fertigen, dann fertigen sie genau das gleiche.
Maschine 1 fertigt nun einen Auftrag z.B. mit der Auftragsnummer 1234 , der Version Englisch , den Umschlag des Produktes. Menge : 500 Stk.
Maschone 2 fertigt nun ebenfalls : Auftragsnummer 1234, Version Englisch, Umschlag 500 Stk.
und zusätzlich
Maschine 2 : 1234, Version Englisch, Inhalt 300 Stück
Dann wären dies insgesamt 1000 Stk. für 1234, Englisch Umschlag und 300 Stück für 1234 Englisch Inhalt.
Ich habe es so versucht anzuweden wie du oben bereits mal beschrieben hattest. Also für jede Maschine die Parameter in einer ansicht gruppiert und dann die fertigte Menge summiert. In der Abfrage sollten dann beide maschinen miteinander berechnet werden. Die Abfrage soll dann am Ende die insgesamt gefertigten Mengen ausgeben. Ganz egal, ob sie an einer Maschine oder an beiden Maschinen gefertigt wurden.Leider funktioniert das nciht
sorry für die schlechte Beschreibung. Ich habe das Beispiel nochmal etwas umgeändert.
Also :
Zwei Maschinen produzieren einen Auftrag. Der Auftrag wird identifiziert durch "Auftragsnummer" , "Version" , "Produktteil".
Wenn zwei Maschinen also beide einen Auftrag mit diesen 3 Kennzeichnungen fertigen, dann fertigen sie genau das gleiche.
Maschine 1 fertigt nun einen Auftrag z.B. mit der Auftragsnummer 1234 , der Version Englisch , den Umschlag des Produktes. Menge : 500 Stk.
Maschone 2 fertigt nun ebenfalls : Auftragsnummer 1234, Version Englisch, Umschlag 500 Stk.
und zusätzlich
Maschine 2 : 1234, Version Englisch, Inhalt 300 Stück
Dann wären dies insgesamt 1000 Stk. für 1234, Englisch Umschlag und 300 Stück für 1234 Englisch Inhalt.
Ich habe es so versucht anzuweden wie du oben bereits mal beschrieben hattest. Also für jede Maschine die Parameter in einer ansicht gruppiert und dann die fertigte Menge summiert. In der Abfrage sollten dann beide maschinen miteinander berechnet werden. Die Abfrage soll dann am Ende die insgesamt gefertigten Mengen ausgeben. Ganz egal, ob sie an einer Maschine oder an beiden Maschinen gefertigt wurden.Leider funktioniert das nciht
- Dateianhänge
-
- problemdatenbank.odb
- (5.5 KiB) 151-mal heruntergeladen
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
die letzte angehangene Datenbank lässt sich leider nicht komplett laden. Der Zugriff auf die Tabellen ist wegen eines "Error im Scriptfile" nicht möglich. Kannst Du nicht nur die vorhergehende Datenbank um ein paar Datensätze ergänzen, damit auch irgendetwas in den Summen berechnet werden kann? Oder ist die letzte Version schon wieder anders von den Feldern her?
Bei der Bildung von Summen oder ähnlichem solltest Du immer einen Alias für das daraus entstehende Feld vergeben. Dann klappt der Aufruf von solchen Abfragen oder Ansichten z.B. auch später bei Berichten besser.
Gruß
Robert
die letzte angehangene Datenbank lässt sich leider nicht komplett laden. Der Zugriff auf die Tabellen ist wegen eines "Error im Scriptfile" nicht möglich. Kannst Du nicht nur die vorhergehende Datenbank um ein paar Datensätze ergänzen, damit auch irgendetwas in den Summen berechnet werden kann? Oder ist die letzte Version schon wieder anders von den Feldern her?
Bei der Bildung von Summen oder ähnlichem solltest Du immer einen Alias für das daraus entstehende Feld vergeben. Dann klappt der Aufruf von solchen Abfragen oder Ansichten z.B. auch später bei Berichten besser.
Gruß
Robert
Re: Berechnung der offenen Produktionsmengen
Guten Morgen Robert,
sehr seltsam. Jetzt müsste man es öffnen können.
Habe eben Alias für die antworten von m1 und m2 verwendet. leider werden nach wie vor nur die berechnungen in der ansicht ausgegeben, bei denen BEIDE maschinen dran beteildigt waren....trotz ifnull.
sehr seltsam. Jetzt müsste man es öffnen können.
Habe eben Alias für die antworten von m1 und m2 verwendet. leider werden nach wie vor nur die berechnungen in der ansicht ausgegeben, bei denen BEIDE maschinen dran beteildigt waren....trotz ifnull.
- Dateianhänge
-
- problemfalldatenbank.odb
- (6.35 KiB) 155-mal heruntergeladen
Re: Berechnung der offenen Produktionsmengen
Hallo Jan,
Du hast nicht beachtet, dass die Produktionsplanung maßgebend ist, also alle Datensätze hieraus erscheinen müssen. Das läuft über "Produktionsplanung LEFT JOIN ...
Zeigt dann hoffentlich all das an, was Du benötigst.
Gruß
Robert
Du hast nicht beachtet, dass die Produktionsplanung maßgebend ist, also alle Datensätze hieraus erscheinen müssen. Das läuft über "Produktionsplanung LEFT JOIN ...
Code: Alles auswählen
SELECT "Produktionsplanung"."Auftragsnummer", "Produktionsplanung"."Version", "Produktionsplanung"."Produktteil", "Produktionsplanung"."Auflagenhöhe", IFNULL( "m1"."menge1", 0 ) AS "Maschine1", IFNULL( "m2"."menge2", 0 ) AS "Maschine2", ( IFNULL( "m1"."menge1", 0 ) + IFNULL( "m2"."menge2", 0 ) ) AS "bereits gedruckt", "Produktionsplanung"."Auflagenhöhe" - ( IFNULL( "m1"."menge1", 0 ) + IFNULL( "m2"."menge2", 0 ) ) "noch zu fertigende gesamtmenge" FROM "Produktionsplanung" LEFT JOIN "m1" ON "m1"."Auftragsnummer" = "Produktionsplanung"."Auftragsnummer" AND "m1"."Version" = "Produktionsplanung"."Version" AND "m1"."Produktteil" = "Produktionsplanung"."Produktteil" LEFT JOIN "m2" ON "m2"."Auftragsnummer" = "Produktionsplanung"."Auftragsnummer" AND "m2"."Version" = "Produktionsplanung"."Version" AND "m2"."Produktteil" = "Produktionsplanung"."Produktteil"
Gruß
Robert