Autor Thema: Datumsproblem  (Gelesen 6014 mal)

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Datumsproblem
« am: 12.08.03 - 11:25:24 »
Ich hab vor kurzen von eknori ein Srcipt für ein logging bekommen nur gibt es da ein problem!

Es wir mit:

                 Dim item3 As New NotesItem(newdoc, LogDateField, Format(Date$, "dd/mm/yyyy"))
das feld gefüllt aber ich bekomme immer als ergebnis das:   "31.12.9999"

Was ist da falsch???
Ich glaube aber das es mit einem Englischen Notes funktioniert.
Da gibt er "12/08/2003"  aus.

Ich hab schon probiert ob das Feld "LogDateField" ein Datumsfeld sein muss das ist glaube ich aber egal.

Was macht der befehl "Format(Date$, "dd/mm/yyyy")" überhaupt?

Es wird auch vorher das verwendet:

Set temp = doc.GetFirstItem(LogDateField)
      If temp.text = Format(Date$,"dd/mm/yyyy") Then
         LogExists = -1
      Else
         Set doc = View.GetPrevDocument(doc)
      End If          

danke robert
« Letzte Änderung: 12.08.03 - 11:28:03 von robertpp »
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Glombi

  • Gast
Re:Datumsproblem
« Antwort #1 am: 12.08.03 - 11:42:27 »
Hi,
was steht denn in Date$ drin?

Eine Beschreibung zu Format findest Du in der Designer Hilfe. Dort steht eigentlich alles drin, was man zum Notes-Leben so braucht  ;)

Andreas

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Datumsproblem
« Antwort #2 am: 12.08.03 - 11:42:51 »
... in der deutschen Version kann er mit dieser Eingabe vermutlich nichts anfangen - nimm das Datum mal mit Punkten als Trennzeichen...

... um ganz sicher zu gehen, schau die mal die Klasse

     NotesInternational

... an. Dort kannst du die Einstellungen zum aktuellen Datumsformat und den Datumstrenner erfahren. Damit würde ich das Datum dann formatieren...

ata
Grüßle Toni :)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Datumsproblem
« Antwort #3 am: 12.08.03 - 11:46:44 »
... aus der aktuellen Bearbeitung des DateHandling - demnächst aktualisiert auf meiner Homepage...

Code
Function FormatDatum( sDatum As String ) As String
' # ata - Formatiert das Datum gemäß den Ländereinstellungen
' # sDatum beinhaltet einen Datumsstring - z.B. "28.3.03"
' # => Rückgabe als String
' # ... Format a Date to international convention
   Dim session As New NotesSession
   Dim international As NotesInternational
   Dim Jahr As Integer
   Dim Monat As Integer
   Dim Tag As Integer
   Dim sMonat As String
   Dim sTag As String
   '
   Jahr = Year(Datevalue(sDatum))
   Monat = Month(Datevalue(sDatum))
   Tag = Day(Datevalue(sDatum))
   sMonat = Cstr(Monat)
   sTag = Cstr(Tag)
   ' # Korrektur des Formates mit führender Null, falls erforderlich
   If Monat < 10 Then sMonat = "0" + Cstr(Monat)
   If Tag < 10 Then sTag = "0" + Cstr(Tag)
   '   
   Set international = session.International
   If international.IsDateDMY Then
      FormatDatum = sTag + international.DateSep + sMonat + international.DateSep + Ltrim$(Cstr(Jahr)) 
   Elseif international.IsDateMDY Then
      FormatDatum = sMonat + international.DateSep + sTag + international.DateSep + Ltrim$(Cstr(Jahr)) 
   Elseif international.IsDateYMD Then
      FormatDatum = Ltrim$(Cstr(Jahr))  + international.DateSep + sMonat + international.DateSep + sTag      
   End If
End Function

ata
« Letzte Änderung: 12.08.03 - 11:47:46 von ata »
Grüßle Toni :)

Glombi

  • Gast
Re:Datumsproblem
« Antwort #4 am: 12.08.03 - 11:49:18 »
Hi ata,
lt. Hilfe macht "/" das:
Date separator. Separates day, month, and year in formatted date values. The actual date separator used in the returned formatted value is the date separator specified in the operating system's international settings.

Ich trau dem ganzen aber auch nicht so recht. Besser wäre, das ganze anders so programmieren, denn Vergleich zweier Datumswerte über deren String-Repräsentation halte ich nicht für so gut. Da gibt es zu viele Unwägbarkeiten.

Es geht ja wohl nur darum zu prüfen, ob für das Datum bereits ein Log-Eintrag da ist.
Da kann man dann auch mit TimeDifference hinkriegen und das ganze bspw. als GMT Zeit vergleichen. Dann klappt's auch mit verschiedenen Zeitzonen.

Andreas

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Datumsproblem
« Antwort #5 am: 12.08.03 - 11:51:56 »
... ich hatte bisher unterschiedliche Erfahrungen mit Datumsformaten - mit dieser kleinen Funktion klappts bisher ohne Probleme - den von dir vorgeschlagenen Weg müsste ich mir dazu mal anschauen - sollte auch gehen...

ata
Grüßle Toni :)

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re:Datumsproblem
« Antwort #6 am: 12.08.03 - 11:59:10 »
Ich glaub ich check es nicht!!
So sieht das jetzt aus:

Sub Initialize

   Const TitleField = "Subject"
   Const LogViewName = "Log"
   Const LogDateField = "LogDate"
   Const LogDetailsField = "AccessLog"
   Const LogFormName = "Log"
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim udoc As NotesDocument
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   Dim newdoc As NotesDocument
   Dim view As NotesView
   Dim LogExists As Integer
   On Error Resume Next
   Set uidoc = ws.CurrentDocument
   Set udoc = uidoc.Document
   user = Evaluate("@Name([Abbreviate]; @UserName)")
   dateread = Evaluate("@Now")
   readstring = user(0)
   readstringdate = dateread(0)
   displayall = readstring & Chr(9) & Chr(9) & " : " & readstringdate & Chr(9) &" : " & udoc.GetFirstItem(TitleField).text & Chr$(13)
   Set view = s.CurrentDatabase.GetView("ViewLog")
   Set doc = view.GetLastDocument
   Do While Not doc Is Nothing And Not LogExists
      Set temp = doc.GetFirstItem(LogDateField)
      If temp.text = Format(Date$,"dd.mm.yyyy") Then
         LogExists = -1
      Else
         Set doc = View.GetPrevDocument(doc)
      End If          
   Loop
   If Not doc Is Nothing Then
      Set item = doc.GetFirstItem(LogDetailsField)
      Call item.AppendToTextList(displayall)
      Call doc.Save(False,False)
   Else
      Set newdoc = s.currentdatabase.Createdocument
      newdoc.form = LogFormName
      Dim PublicAccess As New NotesItem(newdoc, "$PublicAccess","1")
      Dim item2 As New NotesItem(newdoc, LogDetailsField, displayall)
      Dim item3 As New NotesItem(newdoc, LogDateField, Format(Date$, "dd.mm.yyyy"))
      Call newdoc.Save(False,False)
   End If
End Sub

robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Glombi

  • Gast
Re:Datumsproblem
« Antwort #7 am: 12.08.03 - 11:59:21 »
Hi ata,
wenn ich mir Dein Script so ansehe, kann man das auch so machen:

Function FormatDatum( sDatum As String ) As String
  FormatDatum = Format$(sDatum,"Short Date")
End Function

Oder?

Andreas

Glombi

  • Gast
Re:Datumsproblem
« Antwort #8 am: 12.08.03 - 12:07:00 »
@robert:
Wo ist denn das Date$ her  ???

So wie es im Code steht, ist es nicht initialisiert und daher immer = "".
Es müsste sowas wie
Date = cstr(readstringdate)
geben

Andreas

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Datumsproblem
« Antwort #9 am: 12.08.03 - 12:11:47 »
@Glombi

... ich hatte in der Vergangenheit mal Probleme beim Format$ - daher meine Umgehung - ich weiß allerdings nicht mehr welche Version - seither wandle ich das Datum auf diese oder ähnliche Weise...

... kann gut sein, daß die jetzigen Versionen damit keine Probleme haben, aber was, wenn wieder einer mit ner Buggy-Version arbeitet / arbeiten muß...

ata
Grüßle Toni :)

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re:Datumsproblem
« Antwort #10 am: 12.08.03 - 12:58:21 »
@glombi

Ich brauch das Date$ nicht setzen. Du kannst zb. mit "Print Date$" das aktuelle Datum ausgeben lassen.
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Glombi

  • Gast
Re:Datumsproblem
« Antwort #11 am: 12.08.03 - 13:45:26 »
Hi,
Du hast Recht! Date ist eine Script Funktion. Das hatte ich übersehen, da ich immer Today verwende.
"The Date function is equivalent to the Today function."

Na, doppelt hält besser  ;D

Zurück zu Deinem problem: Was steht denn in den Log Dokumenten im Feld "LogDate"?

Andreas

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re:Datumsproblem
« Antwort #12 am: 12.08.03 - 15:30:44 »
Na bis jetzt ist immer das "31.12.9999" drinnen gestanden nachdem das logging eine neues doc erstellt hat.
robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Offline Sillik

  • Junior Mitglied
  • **
  • Beiträge: 75
  • Geschlecht: Männlich
  • Beescheeiid?!?
Re:Datumsproblem
« Antwort #13 am: 12.08.03 - 15:47:52 »
Ich hätt ne kurze Zwischenfrage zum Datum:

Ich hab noch nie mit Datumswerten gearbeitet. Also, ich hab ein Dokument mit einem Datumsfeld. Ich will jetzt auslesen wieviele Tage diese Datum schon im vergleich zum heutigen Datum zurückliegt.

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re:Datumsproblem
« Antwort #14 am: 12.08.03 - 16:18:52 »
benutz mal die suchfunktion mit datum vergleichen da gibt es schon einige einträge im forum
robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re:Datumsproblem
« Antwort #15 am: 12.08.03 - 16:21:56 »
Ich hab da etwas in einer DB gefunden.

   doc.difdate=Int(Cdbl(doc.EndTime(0)-Cdbl(Today)))

Im Feld difdate steht dann die differenz vom heutigen datum zum Feld EndTime.
robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Glombi

  • Gast
Re:Datumsproblem
« Antwort #16 am: 12.08.03 - 18:39:15 »
@Silik,
dazu gibt es die Methode TimeDifference in der Klasse NotesDateTime:

dim difference as Long
difference = notesDateTime.TimeDifference( notesDateTime )

oder (neu in R5)
dim difference as Double
difference = notesDateTime.TimeDifferenceDouble( notesDateTime )

Es wird jeweils die Differenz in Sekunden zurückgegeben.

Double hat einen größeren Wertebereich. Da bekommt man so schnell keinen Overflow.

Andreas

Glombi

  • Gast
Re:Datumsproblem
« Antwort #17 am: 12.08.03 - 18:41:21 »
@Robert:
Ersetze
Format(Date$,"dd.mm.yyyy")
durch
Format$(Date$,"Short Date")

Andreas

Offline Sillik

  • Junior Mitglied
  • **
  • Beiträge: 75
  • Geschlecht: Männlich
  • Beescheeiid?!?
Re:Datumsproblem
« Antwort #18 am: 13.08.03 - 08:54:28 »
Funktioniert soweit, bloß bekomm ich die falschen Daten.

In beiden Feldern im Dokument steht 13.08.2003. Wenn ich aber ein notesdatetime mit diesen Feldern dimensioniere krieg ich beim "berechnet beim Anlegen" (erstellungsdatum) Feld den 01.08.2003 und beim "berechnet" (heute) den 01.01.2003. Beie haben den vorgabewert @today. Bei @now passiert das selbe.
« Letzte Änderung: 13.08.03 - 09:04:03 von Sillik »

Glombi

  • Gast
Re:Datumsproblem
« Antwort #19 am: 13.08.03 - 09:07:27 »
Wenn ich aber ein notesdatetime mit diesen Feldern dimensioniere krieg ich beim "berechnet beim Anlegen" (erstellungsdatum) Feld den 01.08.2003 und beim "berechnet" (heute) den 01.01.2003. Beie haben den vorgabewert @today. Bei @now passiert das selbe.

Poste mal den Code...

Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz