Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: lnfan am 03.04.07 - 21:46:21
-
Hallo liebe Notes-Freunde,
nach langer Zeit bin ich mal wieder da. Hatte letztes Jahr ein Posting im Forum
http://atnotes.de/index.php?topic=33490.0
wo ich das Problem mit Eurer Hilfe erfolgreich lösen konnte.
Meine Datenbank wird nun weltweit genutzt und nun läuft mein Agent der Datumsänderung auf einen Fehler, weil zum Beispiel Anwender in den USA ein anderes Datumsformat nutzen und auch andere Trennzeichen zwischen den Datumsteilen haben (mm/dd/yyyy gegenüber dd.mm.yyyy).
Elegant wäre wenn ich eine Variante meines Agenten hätte, der vorher die Systemumgebung abfragt und das neue Datum entsprechend zusammensetzt.
Aber hier stosse ich an meine Wissensgrenzen, denn mit LotusScript kenne ich mich ja nun fast gar nicht aus.
Hinweise sind willkommen. Danke sehr.
Gruss, Manfred
-
Tja, jetzt müssten wir Deinen Code kennen, Manfred. ... Keine Ahnung, was da nun schief läuft.
Was ich als Ansatz aus dem verlinkten Code entnehmen kann: Wenn Du String-Werte zu Datums-/Zeit-Werten verarbeitest, hast Du immer ein Problem in internationalen Umgebungen. Damals hattest Du eine Lösung über das Frontend, wo sowas durchaus denkbar war, aber was jetzt Sache ist: Wie gesagt, wir können es nicht wissen ohne nähere Informationen von Dir.
Bernhard
-
Hallo Bernhard,
Danke für den ersten Kommentar. Anbei das volle Listing des Agenten (sicherlich erkennst du es wieder)
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim ws As New NotesUIWorkspace
Dim nam As NotesName
Dim msg As String
Dim response As Variant
Dim strTempDate As String
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
strTempDate = "01." & response
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(strTempDate)
doc.Header_UpdName = nam.Abbreviated
doc.Header_UpdCreated = Now()
'Save the current document
Call doc.Save(True, False)
Set doc = collection.GetNextDocument(doc)
Wend
End Sub
Vom Datum brauche ich nur den Monat sowie das Jahr, der Tag muss wegfallen. Wie gesagt haben unterschiedliche Länder eine andere Datumsdarstellung inkl. des Trennzeichen - da sind viele Varianten möglich. Für uns geht das prima... denn es ist "hart-codiert".
Gruss, Manfred
-
Hallo Manfred,
Du meinst sicherlich diese Codezeile:
response = ws.Prompt (PROMPT_OKCANCELEDIT, "Change Date...", msg, "06.2006")
Du stösst jetzt - wie immer, wenn man Datentypen verwendet (hier: String), die mit dem Ziel-Datentyp nichts weiter zu tun haben als den Fakt, "dass man es eben auch so darstellen (!) kann" - auf das Problem, dass man jetzt Äpfel mit Birnen vergleichen muss bzw. aus Äpfeln Birnen machen muss.
Wenn ich Dein Problem richtig deute, müsstest Du folgendes machen:
- Du bildest das gewünschte Datum (was ja offensichtlich der erste Tag eines bestimmten Monats ist) selbst:
Dim vDefault As Variant
vDefault = DateNumber (DeinJahr, DeinMonat, 1)
- Du wandelst diesen Date-/Time-Wert in einen String - automatisch mit den Vorgaben des Betriebssystems:
Dim szDefaultDate As String
szDefaultDate = Cstr (vDefault)
- Dort steht jetzt wahlweise (bezogen auf vDefault = Today):
"01.04.2007" für ein deutsches OS
"04/01/2007" für ein US-amerikanisches OS
... usw.
szDefaultDate übergibst Du nun an Dein NotesUIWorkspace.Prompt statt "06.2006".
Vielleicht hilft das ja schon. Aber so ohne LS-Kenntnisse wird das sicherlich schwer. Lasst Euch den Teil sonst sicherheitshalber von einem vertrauenswürdigen Dienstleister programmieren - das dürfte dann viel günstiger kommen als ein Gefrickel.
Bernhard
-
Hallo Bernhard,
danke noch einmal für die Hinweise. Werde dann mal in Kürze drüber grübeln...
Gruss, Manfred