Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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
-
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
-
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
-
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
-
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
-
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
-
@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. :(
-
..hier ist der fehler
neu:=@Left(wert1;2) + "." + @Middle(2;4) + ".20" + @Right(2);
es muss wert1 heissen ! ;)
=
-
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: ';'
??? ??? ???
-
.. 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.
-
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
-
geht bei mir nicht, unter extras wird kein debugger angezeigt ???
-
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 ?
-
@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;
-
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
-
@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.
-
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)!!
-
@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 ??? ???