Berechnung der offenen Produktionsmengen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von Toxitom »

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 :)
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

test.odb
(32.9 KiB) 183-mal heruntergeladen
Hey, Jan hier !
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 :(
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von RobertG »

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:

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"
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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

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 :

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 :(
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von RobertG »

Hallo Jan,

die Abfrage passt nicht zu Deiner bisherigen Datenbank. Ohne ein Beispiel kann ich schlecht nachvollziehen, welches Problem Du dabei hast.

Gruß

Robert
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

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 :(
Dateianhänge
problemfall.odb
(3.74 KiB) 168-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von RobertG »

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:

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"
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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

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
Dateianhänge
problemdatenbank.odb
(3.42 KiB) 149-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von RobertG »

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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

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 :(
Dateianhänge
problemdatenbank.odb
(5.5 KiB) 146-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von RobertG »

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
Jacko7350
*
Beiträge: 15
Registriert: Mi, 17.02.2016 11:04

Re: Berechnung der offenen Produktionsmengen

Beitrag von Jacko7350 »

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.
Dateianhänge
problemfalldatenbank.odb
(6.35 KiB) 148-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Berechnung der offenen Produktionsmengen

Beitrag von RobertG »

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 ...

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"
Zeigt dann hoffentlich all das an, was Du benötigst.

Gruß

Robert
Antworten