Hallo,
ich möchte im Rahmen meiner Masterarbeit die Matrix-Produktion simulieren.
Mit Hilfe mehrerer Tabellen möchte ich hierbei den aktuellen Produktbestand und den jeweiligen Arbeitsfortschritt auswerten.
Beim erzeugen der Produkte in der Quelle werden die Produkte alle in die Tabelle Gewichtung_AP geschrieben.
Dabei sollen die einzelnen Einträge quasi gleichzeitig nach Arbeitsfortschritt und Variante gruppiert werden.
Ich habe es schonmal hinbekommen, dass er die Einträge nach dem Attribut @.name zählt.
Nun soll er jedoch nur die Einträge mit einem Namen zählen, die den gleichen Arbeitsfortschritt (nächstes_AP) besitzen.
Folgende Methode habe ich dafür in die Ausgangssteuerung der Arbeitszellen hinterlegt.
-- Neuen Auftragsstatus einfügen
-- variablen einführen
var b: string :=@.name
var c: integer :=@.nächstes_AP
--suchen ob Eintrag bereits vorhanden
gewichtung_AP.setzezeiger(0,0)
repeat gewichtung_AP.finden({0,1}..{0,*},b)
until gewichtung_AP.zeigery=gewichtung_AP.ydim or gewichtung_AP["nächstes_AP",gewichtung_AP.zeigery]=c
-- wenn Eintrag vorhanden mit gleicher Variante und Arbeitsfortschritt vorhanden, dann Anzahl erhöhen
if gewichtung_AP.finden({0,1}..{0,*},b)=true and gewichtung_AP["nächstes_AP",gewichtung_AP.zeigery]=c
gewichtung_AP["Anzahl",gewichtung_ap.zeigery]:=gewichtung_AP["Anzahl",gewichtung_ap.zeigery]+1
--ansonsten neuer Eintrag
else
var d: integer :=gewichtung_AP.ydim
gewichtung_AP["Variante",d+1]:=@.name
gewichtung_AP["Anzahl",d+1]:=1
gewichtung_AP["Nächstes_AP",d+1]:=@.nächstes_AP
end
-- Anzahl des Eintrags mit vorherigem Arbeitsfortschritt um eins verringern
-- suchen des alten Eintrags
gewichtung_AP.setzezeiger(0,0)
repeat gewichtung_AP.finden({0,1}..{0,*},b)
until gewichtung_AP.finden({0,1}..{0,*},b)=true and gewichtung_AP["nächstes_AP",gewichtung_Ap.zeigery]=c-1
-- Eintrag um eins verringern
gewichtung_AP["Anzahl",gewichtung_AP.zeigery]:=gewichtung_AP["Anzahl",gewichtung_AP.zeigery]-1
Sobald die Methode ausgeführt wird bekomme ich eine Fehlermeldung die sich auf den folgenden Befehl bezieht:
until gewichtung_AP.zeigery=gewichtung_AP.ydim or gewichtung_AP["nächstes_AP",gewichtung_AP.zeigery]=c
Das Programm verweist darauf, dass die Operanden nicht kompatibel sind.
Wie könnte ich dieses Problem lösen?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP