Das Notes Forum
Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: MrSerious am 08.06.05 - 16:55:25
-
Wie kann ich ein Datumsfeld, wenn es so dargestellt wird: "08.06.2005" in dieses Format umwandeln: "200506"?
Gruss
Ernst
-
Hast Du wirklich ein Datumsfeld oder ein Feld mit einem String à la "08.06.2005" ? Das Verfahren ist davon abhängig.
Was ist eigentlich mit Deinen beiden anderen offenen Threads ?
Bernhard
-
habe wirklich ein datumsfeld. wird von notes erstellt!
-
dann so
dim doc as NotesDocument
dim ndt as NotesDateTime
dim YYYYMMstr as string
set session und doc ....
set ndt = New NotesDateTime( doc.DeinFeldname(0) )
YYYYMMstr = Cstr(Year(ndt.LSLocalTime)) & Right$("0" & Cstr(Month(ndt.LSLocalTime)),2)
Andreas
-
oder ganz simpel mit
YYYYMMstr = Format$( doc.DeinFeldname(0), "yyyymm" )
-
Von Format$ würde ich prinzipiell in diesem Zusammenhang die Finger lassen - das ist absolut abhängig von den Einstellungen des OS. Und wie schnell geht es, wenn Server A in Australien steht und Server B in Österreich ... Das ist dann nicht lustig.
Das ganze geht sogar noch einfacher:
Dim docCurrent As NotesDocument
Dim vDate As Variant
Dim strResult As String
'docCurrent instantiieren
vDate = docCurrent.DeinDatumsFeld (0)
strResult = Year (vDate) & Right$ ("0" & Month (vDate))
Bernhard, der seinen Flügelmann Andreas grüsst ;)
-
Du meinst, wenn der Server für Australia anstelle von Austria konfiguriert wird? ;)
-
Servus Bernhard,
wenn aber DeinFeldname vom Typ Datum ist, sollte auch ein Format$ keine Zicken machen. Falls es aber ein Textfeld ist, ist es sowieso sinnlos, falls dort bspw. "02.03.2005" steht.
Oder hast Du bereits schlechte Erfahrung mit Format$ und einem Datumsfeld gemacht?
Abgesehen von der ww (Kalenderwoche), die nur in Amiland geht...
Andreas
-
Sorry, das Datumsfeld ist doch ein String. Ist es dann einfacher? Oder muss ich dann viel umstellen?
Danke.
Ernst
-
Das Problem ist, Du weisst nicht unbedingt, was Tag und Monat ist.
Vorausgesetzt, ALLES und JEDER hat das GLEICHE Zeitformat "DD.MM.YYYY" dann geht es mit
Right$(doc.DeinFeld(0),4) & Mid$(doc.DeinFeld(0),4,2)
Andreas
-
Ein Datum in einem Textfeld ist ein absolutes NoNoNo. Aber das hatte ich oben schon geschrieben. Zur Erläuterung: In einem Datumsfeld wird das Datum als DT-Seriennummer gespeichert und kann in jedes landesspezifische Format durch entsprechende Routinen umgesetzt werden. Ist einDT-Wert ein String, geht international nix. Und wenn jemand sagt: Ja, hallo erstmal, wir sind nur in D-A-CH, dann nur folgendes: Ich habe schon genug Spassvögel erlebt, die ihr OS "spassenshalber" auf englisch oder US-amerikanisch umgesetzt haben.
Andreas' Code passe ich jetzt mal an mein vorheriges Posting an - und ACHTUNG: Sowas funktioniert nur innerhalb identischer OS-Ländereinstellungen:
Dim docCurrent As NotesDocument
Dim vDate As Variant
Dim strResult As String
'docCurrent instantiieren
vDate = CDat (docCurrent.DeinDatumsFeld (0))
strResult = Year (vDate) & Right$ ("0" & Month (vDate))
Bernhard (der Mann in der Suchoj knapp hinter und rechts neben Andreas' Maschine ;D)
-
Hinweis: Crossposting mit dem Forum auf OpenBC
-
Was ist eigentlich mit Deinen beiden anderen offenen Threads ?
Ich wiederhole meine Frage nochmals: Jetzt hast Du drei Fragen hier offen (innerhalb eines Tages), mehrere Leute haben sich bemüht, und von Dir kommt wenig oder kein Feedback. Das kommt nicht gut, Ernst.
Ich werde wieder antworten, wenn Du die offenen Fragen beantwortet hast.
Bernhard
-
Vielen Dank erstmal,
das war so viel Input auf einmal gestern, das ich das erstmal alles ausprobieren musste. Und dann musste ich auch noch weg, so daß ich mich gar nicht mehr zurückmelden konnte.
Probier das hier geschriebene mal umzusetzen, und meine Lotus Script Grundkenntnisse mal anzuwenden.
Hoffe Euch nicht ganz verägert zu haben. War keine Absicht.
Ist alles Neuland für mich und mein erstes Projekt und ich weiß noch nicht, wie ich vorgehen muss!
Danke.
Ernst
-
So habe jetzt weiter rumprobiert und bin auf folgende lauffähige Lösung gekommen:
Sub Exiting(Source As Field)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim s As String
Set uidoc = workspace.CurrentDocument
'***************** Nur neues Dokument vorbelegen!!
If Not uidoc.isnewdoc Then Exit Sub
'************************** Felder vorbelegen
's=uidoc.FieldGetText("fldDatum")
Dim ndt As notesdatetime
Set ndt = New NotesDateTime(uidoc.FieldGetText("fldDatum"))
s=Cstr(Year(ndt.LSLocalTime)) & Right("0" & Cstr(Month(ndt.LSLocalTime)),2)
Dim temp As String
temp = lookup("AdminPeriode",s,"fldPeriodefrei")
' Call uidoc.fieldsetText("fldPeriode",temp)
Dim zeit As String
If temp = "ja" Then
Print " Periode frei!"
Else
Print "Periode schon abgeschlossen!"
End If
Call uidoc.FieldSetText("tfldPeriodefrei",temp)
'Periodefrei
' Call uidoc.fieldsetText("Periodefrei",lookup("AdminPeriode",s,"fldPeriodefrei"))
'Stundensatz
' Call uidoc.fieldsetText("dblStundensatz",Cstr(lookup("Intern\MitarbeiterAlternativ",s,"dblStundensatz")))
End Sub