Das Notes Forum
Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: lnfan 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
-
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
-
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
-
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
-
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.