Autor Thema: Prüfung Datumswerte  (Gelesen 1762 mal)

Offline jimmyone

  • Junior Mitglied
  • **
  • Beiträge: 96
Prüfung Datumswerte
« am: 22.06.10 - 18:49:25 »
Hallo zusammen,

ich habe zwei Datumswerte... Überprüft mit IsDate und beide male kam True bei rum...
Also sollten es beides Datumswerte sein... Allerdings zieht meine Abfrage auch Daten, die in der Zukunft liegen und damit > als Date$ sind...

Was stimmt hier nicht?

Code
	Dim s As New NotesSession
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim item As NotesItem
	Dim item2 As NotesItem
	Dim view As NotesView
	
	Set db = s.CurrentDatabase
	Set view = db.GetView("nTestDate")
	Set doc = view.GetFirstDocument
	
	While Not (doc Is Nothing)
		Set item = doc.GetFirstItem("datum_test")
		Set item2 = doc.GetFirstItem("bez_feld")
		If item.Text <= Date$ Then
			Msgbox item2.Text & "   " & item.Text
		End If
		Set doc = view.GetNextDocument(doc)
	Wend

Grüße,
James

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Prüfung Datumswerte
« Antwort #1 am: 22.06.10 - 19:25:06 »
Hallo James,
 
in deinem Code steht kein isDate?
Bist du sicher, dass Date$ und item.text Datumswerte sind?
Ich tippe drauf, dass an der Stelle, wo du vergleichst, Strings stehen, und wenn du die mit größer oder kleiner miteinander vergleichst, erhältst du ein deutlich anderes Ergebnis als wenn da wirklich Datumswerte bzw. Zahlen stehen.

Bei Date$ würde ich implizit einen String erwarten, und bei item.text auch - auch wenn vorher Datumswerte da waren.

Grüße

Dau-in

edith: aus der Hilfe: Notes Item class

Text property 
Read-only. A plain text representation of an item's value.
Data type: String
Syntax
To get: itemText$ = notesItem.Text

und lies dir mal in Relational (comparison) operators  den Abschnitt String  comparison durch
« Letzte Änderung: 22.06.10 - 21:11:55 von DAU-in »
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline jimmyone

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Prüfung Datumswerte
« Antwort #2 am: 22.06.10 - 21:29:41 »
...ja das ist aber doch komisch.

Denn ich schreibe

If isDate(item.text) Then
  Msgbox "Ist Datum"
End If

Dann erscheint genau diese Messagebox und für Date$ auch.
Dann verstehe ich das nicht, aus genau diesem Grund hatte ich ja diese Prüfung gemacht...

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: Prüfung Datumswerte
« Antwort #3 am: 22.06.10 - 21:57:53 »

Hilfe für isDate:
IsDate returns TRUE (-1) if expr is any of the following:
A Variant value of DataType 7 (Date/Time)
A Variant value of type String, where the string represents a valid date/time value
A String value representing a valid date/time value
Otherwise IsDate returns FALSE (0).

Das sagt dann nur, dass ein String vorliegt, der als DateTime interpretiert werden kann, nicht dass der Wert auch als DateTime vorliegt .

Und meiner Meinung nach konvertierst du einen Datetime- wert eines Items zum String, wenn du das als über die Text-Property ziehst. 
und nochmals die Hilfe:
 Date returns the integer part of the value returned by the Now function. Date returns that value as a Variant of DataType 7 (Date/Time). Date$ returns that value as a String.
Entweder du musst danach wieder ein CDat(X) durchführen, oder du holst dir das anders. Warum holst du dir nicht via Punktnotation den ersten Array-Wert des Items? Dann solltest du den ursprünglichen Typ beibehalten.

if doc.hasItem(NameDeinesItems) then
    if document.NamedeinesItems(0) > Date  .....   usw.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz