Autor Thema: vergleichen zweier Datumslisten  (Gelesen 1982 mal)

Offline Ranki

  • Junior Mitglied
  • **
  • Beiträge: 63
  • Geschlecht: Männlich
    • Ranki.de
vergleichen zweier Datumslisten
« am: 10.08.03 - 11:46:32 »
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

  • Gast
Re:vergleichen zweier Datumslisten
« Antwort #1 am: 10.08.03 - 12:06:41 »
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

Offline Ranki

  • Junior Mitglied
  • **
  • Beiträge: 63
  • Geschlecht: Männlich
    • Ranki.de
Re:vergleichen zweier Datumslisten
« Antwort #2 am: 10.08.03 - 13:00:35 »
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.  :(
« Letzte Änderung: 10.08.03 - 13:21:00 von Ranki »

Glombi

  • Gast
Re:vergleichen zweier Datumslisten
« Antwort #3 am: 10.08.03 - 13:31:30 »
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

Offline Ranki

  • Junior Mitglied
  • **
  • Beiträge: 63
  • Geschlecht: Männlich
    • Ranki.de
Re:vergleichen zweier Datumslisten
« Antwort #4 am: 10.08.03 - 13:39:31 »
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

Offline Ranki

  • Junior Mitglied
  • **
  • Beiträge: 63
  • Geschlecht: Männlich
    • Ranki.de
Re:vergleichen zweier Datumslisten
« Antwort #5 am: 16.08.03 - 13:58:45 »
Hallöle,

habe die Lösung:

Mein Feld kritisch_status:

REM "Festlegung bzw. Löschung der Variablen";
kritischer_zeitraum := @DbLookup("":"NoCache";"":"";"kritische_Zeiten_Liste_Gruppen";Gruppe;2);
gebuchter_zeitraum := @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 hatte mir nochmal Gedanken darüber gemacht, dass die Hilfe die Funktion @Keywords genau so beschreibt, dass sie eigentlich mein Problem lösen müsste und, dass das Ganze mit manuellen Werten klappt ...

Na, dann habe ich mir die Variablen (gebuchter_zeitraum und kritischer_zeitraum) angeschaut und manuell den einen, dann den anderen durch manuelle Werte ersetzt. Siehe da, ein Fehler war in der Textliste "kritischer_zeitraum".

Die Lösung:

Im vorigen Script habe ich die Variable "kritischer_zeitraum" mit einem @DBLookup aus einer Ansicht geholt; einen @Explode gemacht ... und das war der Fehler. In der Ansicht, wo ich die Sachen herhole wird auch schon der @Explode gemacht ...

Sodenn klappt es jetzt. Wer doch noch Fragen dazu hat immer gerne!

Tschüssi Ranki  8)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz