Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: nieke am 05.12.03 - 14:12:08

Titel: Datumsprobleme
Beitrag von: nieke am 05.12.03 - 14:12:08
Hallo Ihr!

Ich habe folgendes Problem:
Per Script möchte ich über eine Inputbox ein Datum eingeben lassen.
Jetzt will ich eine Collection bauen, in der alle Dokumente sind, deren Feld DatumErstellung (ein Datum-/Zeitfeld) kleiner oder gleich dem Datum aus der Inputbox sein soll.
Um das machen zu können muß ich wahrscheinlich die Eingabe irgendwie formatieren, oder?
Das Script sieht im Moment ungefähr so aus:
....
ende= Inputbox("Bis zu welchem Datum soll archiviert werden?", "Archivierung")
selection="form=""Maske"" & Feld1=""Wert1"" & DatumErstellung<='"+ende+"' & Feld2='"+wert2+"'"
Set collection=db.search(selection,datetime,0)
....

jedoch bleibt meine collection immer leer, da er das irgendwie nicht vergleichen kann.
Habt Ihr eine Idee, wie ich das machen muß?
Ich stehe da so ein bißchen auf dem Schlauch.
Titel: Re:Datumsprobleme
Beitrag von: mahonri am 05.12.03 - 16:15:57
Die Inputbox liefert dir Text zurück, den du in einen Datumswert umwandeln mußt oder den Datumswert aus dem Dokument in einen Text-Wert

Dabei ist zu beachten, dass der Anwender nicht immer das Datum in einem sauberen Wert éingibt
Titel: Re:Datumsprobleme
Beitrag von: Thomas Schulte am 05.12.03 - 16:22:14
Und wenn du solche SearchStrings aufbaust dann nimm lieber | anstelle von "" das liest sich einfacher und du kannst Fehler leichter finden.
selection=|form="Maske" & Feld1="Wert1" & DatumErstellung<="| +ende+ |" & Feld2= "|+wert2 +|"|

Thomas
Titel: Re:Datumsprobleme
Beitrag von: koehlerbv am 05.12.03 - 16:27:39
Zitat
Die Inputbox liefert dir Text zurück, den du in einen Datumswert umwandeln mußt oder den Datumswert aus dem Dokument in einen Text-Wert
Es geht nur der erste Weg, den mahonri aufgezeigt hast, ist ein machbarer - der zweite nicht: Wenn beide Werte Textwerte sind, funktioniert kein Datumsvergleich mehr ("15.11.2003" ist grösser als "05.12.2003").

Zu unterstreichen ist der Hinweis, dass der Wert aus der Inputbox immerhin von der fehlerträchtigen OSI-Schicht 8 gegeben wurde - er muss vor Verwendung also unbedingt auf Isdate geprüft werden.

HTH,
Bernhard
Titel: Re:Datumsprobleme
Beitrag von: mahonri am 05.12.03 - 16:32:53
@koehlerbv:
  Du hast natürlich recht mit dem Textvergleich
  Habe mich nur meistens dazu durchgerungen mein Datumsformat in Textfelden auf JJJJMMTT festzulegen, was man aber nich voraussetzen sollte

Titel: Re:Datumsprobleme
Beitrag von: nieke am 08.12.03 - 14:38:47
.. erstmal vielen Dank für den Tip für die Schreibweise, ohne die ganzen """""
Aber trotzdem geht's nicht so richtig.
Irgendwie versteht die Collection nicht, daß sie die Eingabe mit dem Datumsfeld "DatumErstellung" vergleichen soll. Die Collection bleibt immer leer. Muß ich die beiden Daten irgendwie noch auf das gleiche Format bringen?
Und wenn, wie mache ich das denn?
Titel: Re:Datumsprobleme
Beitrag von: mahonri am 08.12.03 - 14:57:41
Du soltest zwei Dinge checken
1: Wie ist dein DateTime gesetzt, denn die Collection besteht nur aus Dokumenten, die sein diesem Datum geändert worden sind
2: Wie gibst du das Vergleichsdatum ein.
 DatumErstellung<=@TextToTime(ende)
Titel: Re:Datumsprobleme
Beitrag von: nieke am 08.12.03 - 15:06:49
Das NotesDateTime habe folgendermaßen gesetzt:

Dim dateTime As New NotesDateTime( "01/01/2000" )

damit sollte alle Dokumente enthalten sein, da es vorher die Datenbank noch nicht gab.
Die Eingabe sieht so aus:

Dim entry As  Variant
...
entry= Inputbox("Bis zu welchem Datum soll archiviert werden?" "Archivierung")

Diese Eingabe soll im Suchstring für die Collection mit dem Feld "DatumErstellung" (ist ein Datum/Zeit-Feld in der Maske) verglichen werden:

selection=|form="Maske" & Feld1="Wert1"  & Feld2="|+wert2+|" & ((DatumErstellung) < ("|+entry+|"))|
         '
Set collection=db.search(selection,datetime,0)   

... es geht einfach nicht!
Titel: Re:Datumsprobleme
Beitrag von: ata am 08.12.03 - 15:09:44
... wenn du mit Datumswerten arbeitest, dann schau mal in der Notes-Hilfe, wie du Datumswerte in Formelsprache schreiben musst => sie müssen in eckigen Klammern gerahmt sein - die genauere Syntax findest du in der Hilfe...

ata
Titel: Re:Datumsprobleme
Beitrag von: Axel am 08.12.03 - 15:12:14
Hi,

warum setzt du den Feldnamen im Klammern?

Versuch es mal so:

selection=|Form="Maske" & Feld1="Wert1"  & Feld2="|+wert2+|" & DatumErstellung < "|+entry+|"|


Axel

         

Titel: Re:Datumsprobleme
Beitrag von: nieke am 08.12.03 - 15:17:09
... die Klammern waren nur ein Zwischenversuch, um sicherzugehen, daß Notes nicht "&" nicht vor "<" geht und andersrum, ohne geht's aber auch nicht.
Hatte keine tiefere Bedeutung.
Bezüglich der eckigen Klammern bei einem Datum muß ich noch mal in der Hilfe gucken...
Titel: Re:Datumsprobleme
Beitrag von: Axel am 08.12.03 - 15:20:27
Hi,

noch eine Alternative zum Testen. So was ähnliches hat beei mir funktioniert.


selection=|@Contains(Form;"Maske") & @Contains(Feld1;"Wert1")  & @Contains(Feld2;"| & wert2 & |") & @Date(DatumErstellung) < @Date("| & entry & |")|
         

Axel
Titel: Re:Datumsprobleme
Beitrag von: nieke am 08.12.03 - 15:31:21
... das ist es auch nicht.
Leider nicht. Der findet immer noch nix!
Das mit den eckigen Klammern habe ich, glaub' ich noch nicht ganz begriffen.
Könnt Ihr mir das mal kurz zeigen? In der Hilfe habe ich noch nichts dazu gefunden...
Titel: Re:Datumsprobleme
Beitrag von: ata am 08.12.03 - 15:33:18
... was die eckigen Klammern betrifft...

selection=|Form="Maske" & Feld1="Wert1"  & Feld2="|+wert2+|" & DatumErstellung < [|+entry+|]|

... sollte eigentlich schon passen...

ata
Titel: Re:Datumsprobleme
Beitrag von: nieke am 08.12.03 - 15:36:26
...ja! Das war's! Die Collection findet endlich die Dokumente, die sie finden soll.
DANKE!