Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Jeff am 31.01.03 - 15:14:06

Titel: Datumsfeld umsetzen ???
Beitrag von: Jeff am 31.01.03 - 15:14:06
Hallo, ich habe folgendes Problem, das mir schon seit einiger Zeit Kopfzerbrechen
bereitet:  Es werden 3 x täglich Daten mit SQL von AS400 ins Lotus Notes übertragen und dies in einer Maske gespeichert. So weit so gut ;D
In meinem Fall handelt sich um ein Datumsfeld. Daten werden wie folgt übertragen und so in der Ansicht angezeigt:

z.B. 250103 oder 10103

Meine Frage: kann ich diese Daten mit einer Formel so umsetzen  dass diese nacher wie folgt angezeigt und sortiert  werden können?

25.01.2003 oder 01.01.2003

Vielen Dank
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Thomator am 31.01.03 - 16:05:26
Hallo Jeff,
relativ leicht ist das über ein Script zu realisieren:

Dim DatumAS400, DatumNotes as String
DatumAS400 = das übergebene Datum
DatumNotes = Strleft(DatumAS400, 2) & "." & Mid(DatumAS400, 2, 4) & "." & strrightback(DatumAS400, 2)

Dann kannst Du theoretisch aus der Variablen DatumNotes den fertigen String auslesen.

Müsste so gehen (habs nicht getestet!)

Gruss
Thomas
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: dirk_2909 am 31.01.03 - 16:06:13
Du musst den Datumwert in einen String umwandeln und zerlegen:

Abfragen, ob @Lenght(wert) = 5 dann dem String eine 0 vorsetzen und dann zerlegen.
Bsp: @Left(wert;2) + "." + @Middle(2;2) + ".20" + @Right(2)
oder so ähnlich

Ich hoffe das es Dir hilft
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 31.01.03 - 16:39:24
Hallo Dirk, Hallo  Thomator,

Vielen Dank für Euere Antworten  ;D verstehe aber leider nicht (Lotus Script ??? kenne ich gar nicht) , was damit gemeint ist, könnt Ihr mir Anhand  von einem Beispiel erklären wie ich das genau machen kann.

Datumsfeld AS400: A1LBAM (Wert: 10103)
Datumsfeld Notes:  A1LBAM (Wert soll  01.01.2003 angezeigt werden)

Wie mache ich so etwas mit Lotus Script?  ???

Es tut mir leid :'(, aber ich komme leider nicht weiter.

Vielen Vielen Dank und Gruss

Jeff
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: dirk_2909 am 31.01.03 - 18:12:11
Ein Beispiel in LS:

Dim strNeuerWert as String
Dim doc as NotesDocument
Set doc = uidoc.Document

strNeuerWert = Strleft(cstr(doc.A1LBAM(0)), 2) & "." & Mid(cstr(doc.A1LBAM(0)), 2, 4) & ".20" & strrightback(cstr(doc.A1LBAM(0)), 2)

doc.A1LBAM = strNeuerWert
Call doc.Save(True,True)
Call uidoc.Refresh

Beispiel Formelsprache:

wert:=@Text(A1LBAM);
wert1:=@If(@Length(wert)=5;"0"+wert;wert);
neu:=@Left(wert;2) + "." + @Middle(2;4) + ".20" + @Right(2);
Field A1LBAM:=neu;""


So in der Art. Hängt natürlich davon ab, wo Du das Script unterbringst ??!!

Dirk

Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 03.02.03 - 08:52:19
hallo dirk,

habe diese formel "

wert:=@Text(A1LBAM);
wert1:=@If(@Length(wert)=5;"0"+wert;wert);
neu:=@Left(wert;2) + "." + @Middle(2;4) + ".20" + @Right(2);
Field A1LBAM:=neu;""

bei der eingabeumsetzung (Feld A1LBAM) hinzugefügt, bekomme aber leider immer diese fehlermeldung: Ungültiger Argumenttyp: ';'

was kann ich machen. vielen dank für deine bemühungen

jeff
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: klaussal am 03.02.03 - 10:14:26
@jeff,

das problem lirgt darin, dass tage unter 10 (also der 01.03.2003) als 10303 von der as400 kommen und NICHT als 010303. als erstes müssen also führende nullen angefügt werden, sodass man als ergebnis 010303 erhält. ;)

sehe gerade, dass du das bei deiner lösung schon berücksichtigt hattest. :(
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: klaussal am 03.02.03 - 10:22:33
..hier ist der fehler

neu:=@Left(wert1;2) + "." + @Middle(2;4) + ".20" + @Right(2);

es muss wert1 heissen !  ;)
                     =
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 03.02.03 - 10:56:44
hallo klaussal

geht leider immer noch nicht  ??? ???

wert:=@Text(A1LBAM);
wert1:=@If(@Length(wert)=5;"0"+wert;wert);
neu:=@Left(wert1;2) + "." + @Middle(2;4) + ".20" + @Right(2);
Field A1LBAM:=neu;""


Ungültiger Argumenttyp: ';'

 ??? ??? ???
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: klaussal am 03.02.03 - 11:01:17
.. hast du dchon mal den debugger laufen lassen ?

Ctrl + Shift gedrückt halten  dann datei/extras/debug...
das schaltet den debugger für die formelsprache ein (für diese funktion gebe ich KEINE gewähr. EIGENES RISIKO)
abschalten: wie oben, nur den haken bei debug... wieder weg.
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: dirk_2909 am 03.02.03 - 11:20:50
Habe den Fehler entdeckt:

Nicht:
neu:=@Left(wert1;2) + "." + @Middle(2;4) + ".20" + @Right(2);

ondern:
neu:=@Left(wert1;2) + "." + @Middle(wert1;2;4) + ".20" + @Right(wert1;2);

 :) :) :)

Ich hoffe das war`s.
Sorry. mein Fehler

Dirk
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 03.02.03 - 11:21:22
geht bei mir nicht, unter extras wird kein debugger angezeigt  ???
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 03.02.03 - 11:42:37
hallo *all

bin schon weitergekommen ;D,   aber !!!

habe diese formel im feld A1LBAM unter "Eingabeumsetzung" hinterlegt und gespeichert


wert:=@Text(A1LBAM);
wert1:=@If(@Length(wert)=5;"0"+wert;wert);
neu:=@Left(wert1;2) + "." + @Middle(wert1;2;2) + ".20" + @Right(wert1;2);
Field A1LBAM:=neu;neu
 
wenn ich nun meine maske öffne, wird zuerst das alte format angzeigt (010303), wenn ich dann die taste F9 drücke wird dann alles richtig umgesetzt (01.01.2003).weltklasse ;D , aber  ......

wenn man jetzt diese dokument speichert wird in diesem feld folgendes als wert abgespeichert:

Te.xt.20en    anstatt   01.01.2003   ??? ???

wie kommt's denn dass ?
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: dirk_2909 am 03.02.03 - 13:39:04
@Jeff

Kannst Du nicht mit zwei verschiedenen Feldern ardbeiten??

Ein verstecktes Feld, das den AS400-Datumswert speichert und ein sichtbares berechnetes Feld, das die korrekte Datumsanzeige generiert??

Bsp:
verstecktes Feld:  A1LBAM
sichtbares berechnetes Feld:  anzDatum

Als wert des berechneten Feldes dann:
wert:=@Text(A1LBAM);
wert1:=@If(@Length(wert)=5;"0"+wert;wert);
neu:=@Left(wert1;2) + "." + @Middle(wert1;2;2) + ".20" + @Right(wert1;2);
neu


Müsste so gehen.
!! wert:=@Text(A1LBAM);   <== nur wenn A1LBAM ein Zahlfeld ist
Sonst: wert:=A1LBAM;
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 04.02.03 - 11:15:29
hallo dirk,

Jetzt hats geklappt!  ;D vielen, vielen dank

noch eine frage: wenn ich nun diese feld "anzDatum" in einer ansicht anzeigen will funktioniert dies nur dann wenn diese dokument abgespeichert ist, sonst wird alles leer angezeigt. was kann ich da machen ???

Jeff
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: dirk_2909 am 04.02.03 - 12:17:31
@Jeff

Ist das Feld auch berechnet und NICHT Berechnet zur Anzeige??

Es muss berechnet sein und natürlich muss das Dok abgespeichert sein um es in einer Ansicht anzuzeigen.
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: Jeff am 04.02.03 - 13:38:14
hallo dirk,

ja, das feld ist berrechnet, die daten werden via sql 3 x täglich von as400 in lotus notes übertragen und dort werden sie auch abgelegt. wenn man die maske anschaut dann sind alle daten drin; nur im ansicht wird das neue feld (anzDatum) nicht angezeigt (erst beim speichern)!!
Titel: Re:Datumsfeld umsetzen ???
Beitrag von: dirk_2909 am 05.02.03 - 08:25:43
@Jeff

Genau weiß ich auch nicht warum die Daten nicht angezeigt werden.
Ich vermute mal, dass die Ansicht nicht "mitbekommt" das in einem Dok neue Werte reingeschrieben wurden oder das ein neues Dok erzeugt wurde.
Zeigt die Ansicht denn die Werte an, wenn Du die Ansicht aktualisierst [F9] ??? Dann liegt es daran das der AnsichtsIndex aktualisiert werden muss.
d.h. öfters mal die Ansicht aktualisieren

Wenn es was anderes ist weiß ich es auch nicht ??? ???