Das Notes Forum

Domino 9 und frühere Versionen => ND6: Administration & Userprobleme => Thema gestartet von: MrSerious am 08.06.05 - 16:55:25

Titel: LotusScript
Beitrag 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
Titel: Re: LotusScript
Beitrag von: koehlerbv am 08.06.05 - 17:01:09
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
Titel: Re: LotusScript
Beitrag von: MrSerious am 08.06.05 - 17:23:48
habe wirklich ein datumsfeld. wird von notes erstellt!
Titel: Re: LotusScript
Beitrag von: Glombi am 08.06.05 - 17:29:23
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
Titel: Re: LotusScript
Beitrag von: Glombi am 08.06.05 - 17:31:07
oder ganz simpel mit

YYYYMMstr = Format$( doc.DeinFeldname(0), "yyyymm" )
Titel: Re: LotusScript
Beitrag von: koehlerbv am 08.06.05 - 17:38:49
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  ;)
Titel: Re: LotusScript
Beitrag von: m3 am 08.06.05 - 17:44:19
Du meinst, wenn der Server für Australia anstelle von Austria konfiguriert wird? ;)
Titel: Re: LotusScript
Beitrag von: Glombi am 08.06.05 - 17:45:16
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
Titel: Re: LotusScript
Beitrag von: MrSerious am 08.06.05 - 17:47:02
Sorry, das Datumsfeld ist doch ein String. Ist es dann einfacher? Oder muss ich dann viel umstellen?

Danke.

Ernst

Titel: Re: LotusScript
Beitrag von: Glombi am 08.06.05 - 17:53:02
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
Titel: Re: LotusScript
Beitrag von: koehlerbv am 08.06.05 - 18:01:10
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)
Titel: Re: LotusScript
Beitrag von: Semeaphoros am 08.06.05 - 20:49:00
Hinweis: Crossposting mit dem Forum auf OpenBC
Titel: Re: LotusScript
Beitrag von: koehlerbv am 08.06.05 - 22:55:36
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
Titel: Re: LotusScript
Beitrag von: MrSerious am 09.06.05 - 09:17:28
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
Titel: Re: LotusScript
Beitrag von: MrSerious am 09.06.05 - 12:51:58
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