Autor Thema: problem beim rechnen mit datum  (Gelesen 3030 mal)

Offline ewald

  • Aktives Mitglied
  • ***
  • Beiträge: 140
  • Geschlecht: Männlich
problem beim rechnen mit datum
« 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
« Letzte Änderung: 25.02.05 - 15:31:06 von ewald »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: problem beim rechnen mit datum
« Antwort #1 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Marinero Atlántico

  • Gast
Re: problem beim rechnen mit datum
« Antwort #2 am: 25.02.05 - 13:48:44 »
   
doc.StartDateReq(0) < heute$ Then
Du vergleichst Strings.
Versuch mal
Code
DateValue(docStartDateReq(0)) < today()

Marinero Atlántico

  • Gast
Re: problem beim rechnen mit datum
« Antwort #3 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.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: problem beim rechnen mit datum
« Antwort #4 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: problem beim rechnen mit datum
« Antwort #5 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

Marinero Atlántico

  • Gast
Re: problem beim rechnen mit datum
« Antwort #6 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.
« Letzte Änderung: 25.02.05 - 14:19:30 von Marinero Atlántico »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: problem beim rechnen mit datum
« Antwort #7 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

Marinero Atlántico

  • Gast
Re: problem beim rechnen mit datum
« Antwort #8 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.
« Letzte Änderung: 25.02.05 - 14:34:03 von Marinero Atlántico »

Offline ewald

  • Aktives Mitglied
  • ***
  • Beiträge: 140
  • Geschlecht: Männlich
Re: problem beim rechnen mit datum
« Antwort #9 am: 25.02.05 - 14:36:16 »
Thanks all,

mit DateValue und @Today funktionierts.

Gruss Ewald

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: problem beim rechnen mit datum
« Antwort #10 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

Marinero Atlántico

  • Gast
Re: problem beim rechnen mit datum
« Antwort #11 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?

Offline ewald

  • Aktives Mitglied
  • ***
  • Beiträge: 140
  • Geschlecht: Männlich
Re: problem beim rechnen mit datum
« Antwort #12 am: 25.02.05 - 15:33:07 »
@Bernhard,

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

Gruss Ewald

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: problem beim rechnen mit datum
« Antwort #13 am: 25.02.05 - 15:44:41 »
Wozu brauchst Du dann DateValue ?

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz