Autor Thema: Liste mit Datum speichern  (Gelesen 7908 mal)

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Liste mit Datum speichern
« am: 23.11.09 - 11:24:36 »
Guten Morgen,

ich habe ein Dokument das versendet wird. Jedesmal wenn es versendet wird, soll der Zeitpunkt vermerkt werden. Die Sendetermine sollen in einem Mehrfachfeld Datum/Zeitwert abgespeichert werden.

Mit folgendem Code bekomme ich das nicht hin, weil er beim zweiten Aufruf die Fehlermeldung "NotesItem cannot be set to an array of mixed data types" bringt.

Sub SendeterminMerken (Doc As notesdocument)
   Dim jetzt As NotesDateTime
   Dim item As notesitem
   Dim termine As Variant
   
   Set jetzt =New notesdatetime("")
   Call jetzt.setnow ()
   
   If doc.HasItem("WVGesendetAm") Then
      'ein weiteres Sendedatum an die Liste anhängen
      termine=doc.WVGesendetAm
      Redim Preserve termine (Ubound(termine) +1) As Variant
      Set termine(Ubound(termine))=jetzt
      Call doc.Replaceitemvalue( "WVGesendetAm", termine)            
   Else
      'Das Item gab es noch nicht, deshalb anlegen
      Redim Termine (0) As notesdatetime
      Set Termine(0)=jetzt
      Set item=New notesitem(doc, "WVGesendetAm", termine)
   End If
End Sub


Einen Screenshot aus dem Debugger habe ich beigefügt. Dort sieht man das beim zweiten Aufruf die Inhalte des Arrays nicht vom gleichen Typ sind. Das Array scheint sich nicht daran zu stören, das Item schon. Hat jemand eine Idee wie man das lösen kann, ohne das Sendedatum in Text zu wandeln?

Vielen Dank,

Bernd
« Letzte Änderung: 23.11.09 - 14:41:58 von Hatschi »

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #1 am: 23.11.09 - 11:38:51 »
Hallo,

Versuchs doch mal mit jetzt.localtime.

Du kannst nicht dein "gesamtes" Objekt vom Type "NotesDateTime" als Array-Item einfuegen.


Andreas

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Liste mit Datum speichern
« Antwort #2 am: 23.11.09 - 11:44:19 »
Such auch mal nach History.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #3 am: 23.11.09 - 11:51:15 »
Hallo Andreas,

wenn ich localtime verwende, dann ist es ja kein Notesdatetime mehr, sondern ein String. Dann könnte ich auch mit Appendtotextlist arbeiten. Ich wollte die Liste aber als Notesdatetime für spätere Verwendung führen.


Zitat
Du kannst nicht dein "gesamtes" Objekt vom Type "NotesDateTime" als Array-Item einfuegen.

Die Hilfe zu Replaceitemvalue habe ich aber so verstanden, dass man auch ein Array of Date zuweisen kann. Und das meine ich in dem Variant Termine zusammengebaut zu haben.

Bernd

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #4 am: 23.11.09 - 11:57:06 »
Zitat
Die Hilfe zu Replaceitemvalue habe ich aber so verstanden, dass man auch ein Array of Date zuweisen kann. Und das meine ich in dem Variant Termine zusammengebaut zu haben.
Nein, kannst Du nicht.
Und ein "Objekt" der Klasse "NotesDateTime" beinhaltet ja nun nicht nur Datums- und Zeitwerte, sondern auch (siehe Dein Screenshot) Werte vom Type Variant, Integer.

Desweiteren hast Willst Du in diesem Fall ja nicht einen "eindimensionalen" Array (hierauf bezieht sich die Hilfe) in das Feld schreiben, sondern einen mindestens "zweidimensionalen" Array.

Andreas

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #5 am: 23.11.09 - 12:11:32 »
Hallo André,

Such auch mal nach History.

In einer History-Library habe ich einmal reingeschaut, aber die haben auch alles als Text gespeichert und nicht als Notes/Datetime.

Bernd

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #6 am: 23.11.09 - 12:17:56 »
Noch eine Verstaendnisfrage.

Warum muessen es denn unbedingt Datums- und Zeitwerte sein?


Andreas

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
Re: Liste mit Datum speichern
« Antwort #7 am: 23.11.09 - 12:34:28 »
Weil man Datentypen mit dem richtigen Datentyp speichern sollte und nicht ein Datum als Text abspeichern sollte.

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #8 am: 23.11.09 - 12:37:12 »
Warum muessen es denn unbedingt Datums- und Zeitwerte sein?

Auslöser ist das ich ungern hin- und herkonvertiere. Im Moment wurmt mich das jetzt aber eher weil ich eine scheinbar einfache Sache nicht hinbekomme.

Vielleicht ist aber dein Hinweis mit dem mehrdimensionalen Array ein Ansatz. Muß ich das vielleicht anders deklarieren, bzw. Redimen?
Das schaue ich mir noch einmal im Debugger an.

Bernd

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #9 am: 23.11.09 - 12:44:58 »
Zitat
Weil man Datentypen mit dem richtigen Datentyp speichern sollte und nicht ein Datum als Text abspeichern sollte.
Schon richtig.

Nur um eine History zu haben, wer hat wann was geaendert, ist es aus meiner Sicht absolut nebensaechlich, ob das Datum nun als Datum oder als Text abgespeichert wird.


Andreas

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #10 am: 23.11.09 - 12:55:45 »
Hallo Andreas,

ja, du hast Recht für eine Protokollfunktion würde Text auch reichen. Aber wer weiss für was das Feld noch benötigt wird.
Und wie eben schon angedeutet, möchte ich jetzt ums Prinzip wissen wo der Fehler liegt, bzw. wie ich Notes dazu bewegen kann eine Liste mit Datum in einem Item zu speichern.

Bernd

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #11 am: 23.11.09 - 13:03:41 »
Kurz und buendig.

Du moechtest in Deinem Beispiel nicht einen einzelnen Datumswert speichern, sondern eine gesamte Instanz einer Klasse eines NotesObjektes (mit all seinen Properties).

Und das geht nun mal nicht.


Andreas

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Liste mit Datum speichern
« Antwort #12 am: 23.11.09 - 13:08:03 »
Notes.net

Es scheint lustiger zu sein als man glaubt...

A-Bär
Klappt das bei Dir?
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #13 am: 23.11.09 - 13:44:36 »
Hallo André,

ist ja toll was für Wiedersprüche du dort ausgegraben hast. Danke dafür!


Deinem unteren Link bin ich gefolgt, und der dort gepostete Code unterscheidet sich eigentlich nur in der Weise wie das Array erweitert wird von meinem. (Der Befehl Arrayappend war mir bisher nicht bekannt!)
Trotzdem habe ich es ausprobiert, und es wird die gleiche Fehlermeldung ausgegeben wie bei meinem Versuch.

Sub SendeterminMerken (Doc As notesdocument)
   Dim jetzt As NotesDateTime
   Dim termine As Variant
   Dim dings As Variant
   
   Set jetzt =New notesdatetime("")
   Call jetzt.setnow ()
   
   termine = doc.GetItemValue ("WVGesendetAm")
   If Isdate(termine(0)) Then
      dings = Arrayappend(termine, jetzt)
   Else
      Set dings = jetzt
   End If
   doc.ReplaceItemValue "WVGesendetAm", dings
   Exit Sub


Warum das in dem Post funktioniert hat frage ich mich allerdings auch.


Bernd

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #14 am: 23.11.09 - 14:13:59 »
Code
Dim doc As NotesDocument
Dim dtNew As New NotesDateTime("")
Dim varOld As Variant, varNew As Variant

Set doc = Source.Document
Call dtNew.SetNow

varOld = doc.GetItemValue("DateList")
varNew = Fulltrim(Arrayappend(varOld, dtNew.LSLocalTime))

Call doc.ReplaceItemValue("DateList", varNew)

Also dieser Code (aus einem QuerySave einer Maske) macht bei mir genau das, was Du (nach meinem Verstaendnis) erreichen moechtest.


Andreas

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #15 am: 23.11.09 - 14:29:01 »
Hallo André,

du hast recht. Dein Code macht genau das was ich will. Vielen Dank für deine Geduld.

Warum ich da jetzt so herumgeirrt bin, kann ich ich vor lauter probiererei nicht mehr nachvollziehen. Denn mit dem LSLocalTime habe ich ja auch versucht zum Ziel zu kommen.

Auf jeden Fall habt ihr mir geholfen. Mein Problem ist gelöst und ich habe noch den "neuen" Befehl ArrayAppend kennengelernt.

Bernd


P.S: Wie wird das Thema auf erledigt gesetzt?

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #16 am: 23.11.09 - 14:33:19 »
Ich glaube, in dem Du Deinen 1. Post nochmal oeffnest. Hier muesste das einstellbar sein.


Andreas

P.S.:
Schade, dass ich die Lorbeeren nun doch nicht bekomme  :'(

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #17 am: 23.11.09 - 14:41:24 »
Ohhhh Entschuldigung Andreas (ascabg),

ich habe Dein Codebespiel als funktionierende Vorlage genommen!

Code
Dim doc As NotesDocument
Dim dtNew As New NotesDateTime("")
Dim varOld As Variant, varNew As Variant

Set doc = Source.Document
Call dtNew.SetNow

varOld = doc.GetItemValue("DateList")
varNew = Fulltrim(Arrayappend(varOld, dtNew.LSLocalTime))

Call doc.ReplaceItemValue("DateList", varNew)

Demnach gehören die Lorbeeren natürlich dir!
Nochmals vielen Dank.

Bernd

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Liste mit Datum speichern
« Antwort #18 am: 23.11.09 - 18:21:28 »
Warum das ganze so verkompliziert?

doc.DateList = Fulltrim (Arrayappend (doc.DateList, Now))

Bernhard

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Liste mit Datum speichern
« Antwort #19 am: 24.11.09 - 08:35:10 »
Hallo Bernhard,

auf die Idee das so einfach zusammenzufassen bin ich noch nicht gekommen. 


Bernd

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz