Ah ja. Dann spielt das eigentlich keine Rolle; es hängt in erster Linie davon ab, was Du sonst für Daten speicherst. Vorschläge:
Wenn die Buchhaltung oder Vertreter oder... in einer
DB stehen, dann passen auch diese Daten in eine Tabelle dieser
DB:
SQL-Code:
CREATE TABLE Rabatt
( ID INTEGER,
Geltung_ab DATE,
Geltung_bis DATE,
Promille INTEGER
);
Dazu gehören geeignete Indizes: ID, Geltung_ab. Geltung_bis ist eigentlich eine Redundanz, aber zur Prüfung des passenden Prozentsatzes ist es besser, dies extra zu speichern. Ich habe 'Promille' vorgeschlagen; dann kannst Du auch mit Dezimalstellen INTEGER speichern. Auf die ID kann auch verzichtet werden (dann ist Geltung_ab der PrimaryKey); aber mit ID bist Du bei Änderungen flexibler.
Eine vergleichbare Struktur kannst Du auch in
XML oder INI oder Textdateien speichern. Dann hängt es davon ab, wie Du damit weiter arbeiten willst. Eine Möglichkeit wäre:
Code:
[Rabatt]
01.01.2006=5
01.05.2006=3
Oder vorbereitet als TStringList.CommaText:
Code:
[Rabatt]
01.01.2006,30.04.2006,5
01.05.2006,31.05.2006,3
In allen diesen Fällen musst Du selbst entscheiden und regeln, wie Du die Werte in passende interne Strukturen einlesen willst.
Generell empfehle ich für eine solche Situation, nicht 'von 01.01.2006 bis 01.04.2006' festzulegen, sondern 'von 01.01.2006 bis 30.04.2006', damit alle Daten lückenlos erfasst werden.
Zu meiner ersten Frage: Du kommst dann wohl nicht um eine Schleife umhin.
Hilft das? Jürgen