Autor Thema: Datumsfeld per Agent aus View ändern  (Gelesen 1890 mal)

Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Datumsfeld per Agent aus View ändern
« am: 11.11.06 - 08:51:07 »
Hallo,
habe im Form ein Datumsfeld (mm.yyyy). Wenn ich das Feld im Form manuell ändere, wird beim Speichern ein "wirkliches" Datum im genannten Format draus - prima.

Nun erlaube ich aber auch das Feld über einen Action-Button mit Agentenaufruf aus einer View zu ändern. Es geht ein Pop-up auf wo ich ein neues Datum eingeben kann (gleiche Syntax, jedoch freier Text). Der hier eingetragene Inhalt wird dann in alle markierten Dokumente übertragen - auch prima.

Problem: Im ersten Fall habe ich ein "wirkliches" Datum. Im zweiten Fall einen Textstring, der genauso aussieht wie das Datum. Das Problem taucht nun beim Kategorisieren auf, denn der gleiche Inhalt wird je nach Format in unterschiedlichen Kategorien abgebildet.

Frage: Wie kann ich den Massendatumsupdate per Agenten so machen, dass ein "wirkliches" Datum im Feld steht?

Bin gespannt auf Eure Antworten. Vielen Dank. Gruss, Manfred
« Letzte Änderung: 13.11.06 - 14:12:06 von lnfan »

Glombi

  • Gast
Re: Datumsfeld per Agent aus View ändern
« Antwort #1 am: 11.11.06 - 10:20:58 »
Du ruft wahrscheinlich ein Prompt auf, um das Datum einzugeben. Das liefert immer einen Text zurück, denn du mit @TextToTime in einen Datumswert umwandeln musst.

Also so:
_DatumTxt := @Prompt(.....);
_Datum := @TextToTime(_DatumTxt);
@If(@IsError(_Datum);@Return("");"");

FIELD DeinFeldName := _Datum;


Andreas


Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Re: Datumsfeld per Agent aus View ändern
« Antwort #2 am: 11.11.06 - 18:52:40 »
Hallo nochmal,
vielen Dank erstmal für die Anregung. Gedanklich sind wir auf dem gleichen Weg. Nur versuche ich das mit meinen minimalen LotusScript Kenntnissen umzusetzen; jedoch scheitere ich kläglich.

Anbei der relevante Auszug aus meinem Script.

   Dim response As Variant
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set nam = session.CreateName(session.UserName)
   
   'if no documents have been selected then exit routine
   If collection.Count = 0 Then Exit Sub
   
   msg = collection.Count & " documents have been selected for mass update. Please enter a new date."
   response = ws.Prompt (PROMPT_OKCANCELEDIT, _
   "Change Date...", msg, "06.2006")
   If response = "" Then Exit Sub
   
   Set doc = collection.GetFirstDocument
   While Not (doc Is Nothing)
          'Here the field will be changed per doc with the value selected in the prompt
      doc.ASD_Depl_Date = Cdat(response)

Frage: Welche Funktion muss wo (vor der Schleife oder drin?) in den Code?

Danke für nochmalige Hilfe. Gruss, Manfred

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datumsfeld per Agent aus View ändern
« Antwort #3 am: 11.11.06 - 19:15:23 »
Hier die relevanten Ergänzungen - ungetestet:

Dim response As Variant
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set nam = session.CreateName(session.UserName)
   
   'if no documents have been selected then exit routine
   If collection.Count = 0 Then Exit Sub
   
   msg = collection.Count & " documents have been selected for mass update. Please enter a new date."
   response = ws.Prompt (PROMPT_OKCANCELEDIT, _
   "Change Date...", msg, "06.2006")
   If not (Isdate (response)) Then
      Messagebox "Gemecker"
      Exit Sub
   End If
   
   Set doc = collection.GetFirstDocument
   While Not (doc Is Nothing)
          doc.ASD_Depl_Date = Cdat(response)
          Call doc.Save (True, False, True)
          Set doc = collection.GetNextDocument (doc)
    Wend


Frage: Warum machst Du das in LotusScript? Andreas' @Functions würden es doch mit drei Zeilen auch tun ...

Bernhard

Offline lnfan

  • Frischling
  • *
  • Beiträge: 39
  • Ich liebe dieses Forum!
Re: Datumsfeld per Agent aus View ändern
« Antwort #4 am: 11.11.06 - 19:34:50 »
Hallo,
vielen Dank für den Vorschlag. Wir kommen der Sache näher. Die entscheidende Funktion scheint die
Cdat(response) zu sein.

Syntaktisch ist das korrekt. Aus einer Eingabe "01.2006" wird mir jedoch ein "11.1932 00:00:00" gemacht.

Ob da noch Parameter fehlen?

Gruss, Manfred

PS: Die Routinen habe ich so bekommen; sie laufen prima und sind mit anderen ähnlich aufgebaut. Eine Umstellung auf @Formula geht dann in wohl in einigen anderen Fällen nicht - egal.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz