Domino 9 und frühere Versionen > Entwicklung

vergleichen zweier Datumslisten

(1/2) > >>

Ranki:
Moin zusammen,

ich habe da mal ein Problem ...

Ich erstelle eine Urlaubsdatenbank und es gibt in dieser sogenannte "kritische Zeiten". Diese werden von der Administration eingetragen.

Wenn jetzt jmd. einen Urlaubseintrag tätigt soll direkt geprüft werden, ob sich der gewählte Zeitraum in kritischen zeiten befindet.

Soweit so gut; das mit den kritischen Zeiten eintragen ist kein Problem. Mit entsprechendem DBLookup kann ich mir auch die kritischen Zeiten für die jeweilige Gruppe ausgeben lassen. D.h., wenn das Dokument erstellt wird bekomme ich es hin, dass cih zwei Listen habe.

Einmal den gebuchten Zeitraum und einmal den kritischen Zeitraum. Jetzt möchte ich diese vergleichen. Funktionen wie @Keywords, @IsMember oder @Contains habe ich - Dank des Forums - schon ausprobiert. Das Ganze funktioniert aber nicht ganz sauber bzw. nicht so, wie ich es gern gewollt hätte.

Beispiel:

gebuchter Zeitraum: 24.07.2003 - 26.07.2003
kritischer Zeitraum: 25.07.2003 - 30.07.2003

Das klappt nicht. LN spuckt es nur richtig aus, wenn z. B. alle gebuchten Termine im kritischen Zeitraum sind, aber nicht, wenn auch nur einer innerhalb dieses Zeitraumes ist.

Die Formel ist Folgende:


REM "Festlegung bzw. Löschung der Variablen";
kritischer_zeitraum := @Implode(@Explode(@DbLookup("":"NoCache";"":"";"kritische_Zeiten_Liste_Gruppen";Gruppe;2)));
gebuchter_zeitraum := @Implode(@Explode(@TextToTime(@Text(StartDate) + "-" + @Text(EndDate))));

REM "Überprüfung des Zeitraumes.";
@If(@IsError(gebuchter_zeitraum) | @IsError(kritischer_zeitraum);"unkritisch";@If(@Keywords(gebuchter_zeitraum;kritischer_zeitraum;"")!="";"kritisch";"unkritisch"))


Ich hoffe, Ihr habt verstanden, was ich wollte; sonst einfach posten ...

Vielen, vielen Dank für Eure Mühen...

Ranki

Glombi:
Hi,
das geht folgendermaßen:
Du brauchst ein Feld KStartDate und KEndDate, in dem per @DbLookup der Beginn und das Ende des kritischen Zeitraums geholt wird.
Dann in der Validierungsformel:

@If(
 StartDate = "" | EndDate = "" | KStartDate = "" | KEndDate = "";
    @Success;
 StartDate > KEndDate;
    @Success;
  EndDate < KStartDate;
    @Success;
 @Failure("Der Zeitraum liegt innerhalb des kritischen Zeitraums!")
)

Andreas

Ranki:
Hallo Andreas,

danke erstmal für Deine Hilfe; aber ich glaube, dass das nicht die komplette Lösung ist.

Zum Background:

Das Ganze ist für unsere Ausbildungsabteilung; nebenbei mache ich diese Datenbank für die, um den Papierkram beizulegen.

Es gibt verschiedene Jahrgänge und verschiedene Ausbildungsberufe. Daraus entstehen dann Gruppen, wie IFK2001, IFK2002, IK2001, IK2002 ... usw.

Nun trägt die Ausbildung verschiedene Zeiträume oder einzelne Tage (bei Seminaren z.B.) ein, die dann als kritisch gelten.

Bei Deinem Vorschlag gehst Du glaube ich davon aus, dass es jeweils nur einen kritischen Zeitraum gibt, oder?

Ich werde es mal ausprobieren ...

Schöne, warme Grüße

Ranki

P.S.: Meine Vermutung war richtig; sobald es mehrere Einträge gibt ... klappt es leider nicht.  :(

Glombi:
Hi,
dann musst Du das ganze lin LotusScript machen. Im Querysave mit einer Forall-Schleife und Evaluate.
Du iterierst dann über alle Einträge in KStartDate und KEndDate und prüfst jeweils.

Mit Evaluate kannst Du meine Formel nehmen. Alternativ kannst Du auch mit TimeDifference aus der Klasse NotesDateTime arbeiten. Ist aber mehr Tipparbeit...

Andreas

Ranki:
Hallo,

ich hatte sowas schon befürchtet ... Lotus Script .. naja, werde ich mich mal daran machen. Von Klassen habe ich leider überhaupt keine Ahnung, aber mal schauen.

Ich hatte schon so Hoffnung, weil ich laut Hilfe eigentlich mit @Keywords hätte arbeiten können. Da steht nämlich, dass er mir von zwei Textlisten die übereinstimmenden Einträge übergibt ... und das wäre ja des Rätsels Lösung gewesen ... dann hatte ich noch 'ne andere Idee, aber dafür bräuchte ich 'ne Schleife in Formelsprache. Die gibt's aber nicht, wenn ich mich nicht irre.

Danke auf jeden Fall für Deine Hilfe. Wenn ich es geschafft habe, werde ich den Code hier posten.

Schönste Grüße

Ranki

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln