16. Januar 2019 13:24
Hallo zusammen und zunächst einmal schon im Vorfeld Danke für die Hilfe.
Ich soll bei der Lagerlogistik die Prioritäten der Picks anpassen und versuche zu diesem Zweck erstmal, das vorhandene System zu verstehen. Dabei bin ich auf einen Codeabschnitt gestoßen, der mir seltsam erscheint. Unterstellend, dass die von mir an dem Code arbeitenden Kollegen nicht Nonsense schreiben und von Neugier (und Sorge hinsichtlich Fehlern, die aus meiner Unkenntnis heraus entstehen) geplagt versuche ich den Code zu verstehen.
Da könnt Ihr mir bestimmt helfen.
Es geht um folgendes Codestück:
- Code:
// Filter setzen habe ich mal rausgenommen
IF TempFromBinContent.FINDFIRST THEN BEGIN
REPEAT
lRanking := TempFromBinContent."Bin Ranking";
TempFromBinContent."Bin Ranking" := 1;
TempFromBinContent.MODIFY;
TempFromBinContent."Bin Ranking" := lRanking;
// Funktionaler Code gekürzt, der sich aber nicht auf Bin Ranking bezieht
UNTIL TempFromBinContent.NEXT = 0;
END;
Nach meinem Verständnis wird in TempFromBinContent."Bin Ranking" eine 1 in der Datenbank gespeichert, aber in der lokalen Instanz des Records der ursprüngliche Wert erhalten. Ich bin etwas verwirrt, warum das so gemacht wird. Soweit ich das überschauen konnte, wird das Feld auch nachfolgend nicht genutzt und auch nicht mehr per MODIFY in die Datenbank geschrieben. Dazu kommt: Das "Temp" im Namen ist schon ein Tell und es handelt sich tatsächlich um eine lokale, temporäre Variable. Was macht in so einem Fall ein MODIFY überhaupt?
Ich tendiere zu der Vermutung, dass das ganze irgendwas mit der Reihenfolge zu tun haben könnte und den Versuch darstellt, das NEXT zu beeinflussen. Macht aber auch wenig Sinn, imho. Vielleicht spielt es keine Rolle, ich würde es nur gerne verstehen, bevor ich anfange, daran herumzumanipulieren.