Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: ewald am 25.02.05 - 13:36:07

Titel: problem beim rechnen mit datum
Beitrag von: ewald am 25.02.05 - 13:36:07
Hallo zusammen,

hab folgenden code um zu prüfen, ob ein Datum kleiner ist als das heutige:

--- start code
        .
        .
        .
   Dim heute As String
   heute$ = Today()   
   
   Messagebox "Heutiges Datum:  " +heute$,MB_OK+MB_ICONSTOP, BoxTitle$
   
   If doc.StartDateReq(0) < heute$ Then
      Messagebox MsgStartDatePast$,MB_OK+MB_ICONSTOP, BoxTitle$
      uidoc.gotofield("StartDateReq")
      Continue = False
      Exit Function      
   End If
----end code

Komischerweise funktioniert die Abfrage nur manchmal und ich kann einfach nicht nachvollziehen, warum manchmal nicht. D.h., die Fehlermeldung in der if kommt manchmal, obwohl das Datum definitiv nicht kleiner ist.
Hab ich da in dem Code irgendwo 'nen Bock drin?

Danke

Gruss ewald
Titel: Re: problem beim rechnen mit datum
Beitrag von: Axel am 25.02.05 - 13:42:25
Hi,

was steht denn, wenn die Fehlermeldung kommt im Feld StartDateReq drin.

Von welchem Typ ist den das Feld, Textfeld usw. ?


Axel
Titel: Re: problem beim rechnen mit datum
Beitrag von: Marinero Atlántico am 25.02.05 - 13:48:44
   
doc.StartDateReq(0) < heute$ Then
Du vergleichst Strings.
Versuch mal
Code
DateValue(docStartDateReq(0)) < today()
Titel: Re: problem beim rechnen mit datum
Beitrag von: Marinero Atlántico am 25.02.05 - 13:49:42
Von welchem Typ ist den das Feld, Textfeld usw. ?
Retuniert nicht durch die Kurzschreibweise immer String? Ich glaube ja.
Titel: Re: problem beim rechnen mit datum
Beitrag von: Axel am 25.02.05 - 13:54:39
Retuniert nicht durch die Kurzschreibweise immer String? Ich glaube ja.

Hi,

da bin ich mit nicht so sicher. Ich glaube das ist ein Variant-Typ.


Axel
Titel: Re: problem beim rechnen mit datum
Beitrag von: koehlerbv am 25.02.05 - 14:09:15
Die "Kurzschreibweise" gibt den passenden Datentyp zum Feld zurück. Ist das Feld also vom Type Datum/Zeit, dann wird ein Variant vom Typ 7 (Datum/Zeit) zurückgegeben.

Die Vergleiche, die Ewald anstellt, verstehe ich nicht. Der Datums/Zeitwert Today wird einem String zugewisen. Warum ?
Wenn der Feldinhalt doch vom Type String sein sollte (was man sowieso nicht machen sollte, wenn man sich die Datumswerte nicht nur noch anschauen möchte), dann kann der Vergleich auch nicht funktionieren, denn
"01.03.2005" < "28.02.2005"

Bernhard
Titel: Re: problem beim rechnen mit datum
Beitrag von: Marinero Atlántico am 25.02.05 - 14:16:59
Die "Kurzschreibweise" gibt den passenden Datentyp zum Feld zurück. Ist das Feld also vom Type Datum/Zeit, dann wird ein Variant vom Typ 7 (Datum/Zeit) zurückgegeben.
Nö. Ganz sicher.
Probier mal: Maske mit 1 Feld als Typ Datum/Uhrzeit. Stil Kalender/Uhrzeit Steuerelement.
Name des Feldes: Unbekannt

Das im QuerySave:
Code
Sub Querysave(Source As Notesuidocument, Continue As Variant)
	Dim doc As NotesDocument
	Set doc = Source.Document
	
	Print Datatype (doc.Unbekannt(0))	
End Sub


Das Print gibt 8 zurück. Es ist String. 
Ansonsten würde auch ein Error geworfen, da heute$ < wert_vom_Typ_Datum nicht geht. So strongly typed ist LotusScript.

Durch doc.getItemValue("xxx") wird hingegen immer der "richtige" Typ zurückgegeben.
Titel: Re: problem beim rechnen mit datum
Beitrag von: koehlerbv am 25.02.05 - 14:23:20
Also, bei mir ergibt das Datatype = 7. Hast Du Dein Feld "Unbekannt" auch gefüllt vor dem Testen, Axel ?

Bernhard
Titel: Re: problem beim rechnen mit datum
Beitrag von: Marinero Atlántico am 25.02.05 - 14:30:01
Ja.
Nachdem ich jetzt aber das Feld von Unbekannt in Test umbenannt habe, gibt er auch 7 zurück.
Jetzt geht es auch mit Unbekannt.
Weiss nicht was das war. Sorry und keine Absicht.
Hab die Felder aber gefüllt.
Titel: Re: problem beim rechnen mit datum
Beitrag von: ewald am 25.02.05 - 14:36:16
Thanks all,

mit DateValue und @Today funktionierts.

Gruss Ewald
Titel: Re: problem beim rechnen mit datum
Beitrag von: koehlerbv am 25.02.05 - 14:45:38
Das muss aber noch nicht unbedingt eine gute Idee sein: Wenn irgendeiner auf die Idee kommt, seine OS-Einstellungen auf amerikanisch zu setzen, hast Du in Deinem Textfeld einen String, den ein Client mit deutschen Einstellungen nicht interpretieren kann.

Datumswerte in Textfeldern sind immer dann eine schlechte Wahl, wenn man weiter mit ihnen rechnen möchte.

Bernhard
Titel: Re: problem beim rechnen mit datum
Beitrag von: Marinero Atlántico am 25.02.05 - 14:50:29
versuch bitte mal:
Zitat
doc.StartDateReq(0) < today()
Vielleicht ist es ein Datumsfeld und der castet für den Vergleich mit String (heute$) automatisch?
Titel: Re: problem beim rechnen mit datum
Beitrag von: ewald am 25.02.05 - 15:33:07
@Bernhard,

die Datumswerte stehen nicht in einem Textfeld, sonder in Datumsfeldern.

Gruss Ewald
Titel: Re: problem beim rechnen mit datum
Beitrag von: koehlerbv am 25.02.05 - 15:44:41
Wozu brauchst Du dann DateValue ?

Bernhard