Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alois am 25.01.05 - 15:42:00

Titel: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 25.01.05 - 15:42:00
Hi,

habe eine alte DB die ich pflege muss  :( und diese will in Version 6 nicht funzen  :'(

Ich habe mittleweil herausgefunden dass ein "berechnet beim Anlegen" Text Feld in notes 6 nur noch den Wert als Eingenschaft hat. früher in 5er Version gab's noch Options, Declarations, Initialize und Terminate... dazu könnte man natürlich noch mehr rein bringen.
So in mein alte DB wurde in die Initialize was programmiert... und auf ein uidoc rum gebastelt der noch nicht als Dokument in der Datenbank angelegt ist... Hmmm schien aber Notes 5 nicht zu stören....

Allerdings Notes 6 frag mich ob ich ganz sauber bin von diese uidoc was zu wollen da er nicht existent ist.... OK wollte dann diese Script in Designer anpassen aber ich kann die Initialize nicht sehen.... Also im klar Notes 6 bearbeitet diese Sub ohne es mir im Designer anzuzeigen...

Hat jemand Erfahrung in diese Programmiertechnik (initialize Sub von berechnete Felder) ?
für was es gut sein sollte und wie man es jetzt am beste umgeht?

Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Thomas Schulte am 25.01.05 - 15:47:11
gehe zurück auf 5 nimm die Routine und schmeiß sie raus. Anschließend durch Formelsprache in 6 ersetzen.

Warum jemand das macht? keine Ahnung! vielleicht weil man was ausprobieren wollte. Ohne Hintergründe dafür zu kennen unmöglich zu beantworten.

Thomas
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 26.01.05 - 08:57:57
@Thomas ja dein Idee ist nicht schlecht aber 2 Punkte schmecken mir nicht:
1) Formelsprache ist ja gut aber bei komplizierte Sachen sehr umständlich
2) Ich kann mir nicht vorstellen dass Formelsprache in 6er Version wieder ein Neugeburt erleben soll.

Den Ablauf:
Eine Dokument wird erstellt (@Command([Compose];"Form1")
in der Queryopen wird geprüft ob isnewdoc, dann wird ein Feld ausgefüllt mit eine Liste von Werte (Arbeitsgruppen). In ein zweite Feld an Hand der gewählte Arbeitsgruppe in die o.g. Liste wird ein Paket errechnet (PickList). Dann wird der erste Feld nur noch mit dem gewählte Wert gefüllt.

Ob das alles Sinnvol ist?? Aber wie schon gesagt diese Datenbank wurde vor lange Zeit schon programmiert. Ich muss sie blos pflegen...

Ich habe jetzt die Initialize Sub von mein Feld in der Maskedefinition als neue Sub eingebaut und will aus den QueryOpen diese Sub aufrufen. Leider:
Zitat
in Notes 5 bei Queryopen ist der notesUIWorkspace.CurrentDocument schon definiert. Bei Notes 6 anscheinend nicht!
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Thomas Schulte am 26.01.05 - 09:24:31
1) Formelsprache ist ja gut aber bei komplizierte Sachen sehr umständlich
2) Ich kann mir nicht vorstellen dass Formelsprache in 6er Version wieder ein Neugeburt erleben soll.
Also dazu wie das zu beheben ist kann ich nichts sagen, ohne die Anwendung zu kennen

ABER: zu deinen zwei Punkten lässt sich schon einiges anmerken.
zu. 1. Da hast du was falsch verstanden oder die Formelsprache nicht richtig begriffen. Dieses Instrument ist mindestens genauso mächtig, wie die Scriptsprache. In manchen Bereichen, z.B. Listenoperationen sogar wesentlich mächtiger. Mit der Möglichkeit z.B. Schleifen zu programmieren, die in V6 eingeführt wurde ähnelt das auch einer "richtigen" Programmiersprache,
zu 2.  Wozu eine Neugeburt. Diese Sprache war nie tot. Wozu sollte ich Script benutzen, wenn es mit der Formelsprache um Klassen schneller geht. Schau dir mal das !!!Help!!! Projekt von Eknori an, da sind bis jetzt noch keine wesentlichen Script Routinen drin bis auf die ClassHistorie und die Excel Export Funktionen und dann schau dir an wie mächtig das mittlerweile geworden ist.

Thomas
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 26.01.05 - 10:04:37
@thomas:
Ich wollte dir nicht auf die Füße tretten  ;D aber ich kann mich errinern an manche Seminar wo damals gesagt wurde dass nächste Version (damals 5er) man wollte weg von der Formelsprache kommen. Nich nur dass die 5er immer noch diese angeboten hat aber jetzt in der 6er wird er noch mehr eingesetzt... Ich finde solchen Richtungswechsel nicht für sehr sinnvoll. Ich habe damals meine Programmierung auf Lotus und Java- Script konzentriert um ein Kompabilität für zukünftige Versionen zu Gewährleisten (ich war anscheinend nicht der einzige...)
Ob jetzt diese Sprache mächtig ist, möchte ich nicht bestreiten... Du hast sicher mehr Wissen wie ich auf diesen Gebiet  :)

@all:
warte auf weitere Antwort und Vorschläge...
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Thomas Schulte am 26.01.05 - 10:11:00
Du bist mir nicht auf die Füße getreten. Das war nur eine Klarstellung einer Fehleinschätzung  ;D
Aber du wirst um die bereits skizzierte Vorgehensweise nicht drumherum kommen, außer du programmierst di komplette Maske neu.

Thomas
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 27.01.05 - 09:54:01
Das ist eine verzwickte Situation.... :-\

Wie @thomas es vorgeschlagen hat habe ich mein script in formelsprache überstzt (kein leichte Übung für ein Anfänger wie ich)... Jetzt hab ich's aber funzt nur in Version 6 (@for gab's ja wohl früher nicht)... Diese DB wäre nur bei uns im Einsatz wäre kein Problem. Alle Anwender auf 6 umstellen aber diese DB ist Deutschland weit in großen Behörde... Die hängen mich alle auf wenn es nicht mehr in 5er geht.

Kennt da jemand die möglichkeit so ein Art For-Schleife in 5er zu machen?

Ich lege hier mein Code ab (aber bitte nicht auslachen  ;)) Vielleicht weißt da jemand was
Code
_TAG:=@GetField("Arbeitsgruppen");
_TAP:=@GetField("arbeitspakete");
_grp:=@UserNamesList;

@For(n:=1;n<=@Elements(_grp);n:=n+1;
@If((@Left(_grp[n];4)=".SW-") & (@Length(_grp[n])=8);
@For(m:=1;m<=@Elements(_TAP);m:=m+1;
@If(@Right(_grp[n];4)=_TAP[m];
_grp1:=_grp1+";"+_TAG[m];
"")
)
;"")
);
@Explode(@Trim(_grp1);";")
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Glombi am 27.01.05 - 09:58:46
Poste mal ein Beispiel: Was kann in "Arbeitsgruppen" stehen und was in "arbeitspakete"
Und was soll dabei herauskommen?

Andreas
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 27.01.05 - 10:14:42
Arbeitsgruppen:
"GRVS/SW - Abgleich":
"GRVS/SW - Bestandsanalyse und Überführung":
"GRVS/SW - Organisationseinheiten":
"GRVS/SW - Berechtigungen, Zugriffskontrolle":
"GRVS/SW - Verfahrensabläufe":
"GRVS/SW - Druckerzeugung":
"GRVS/SW - Anschriftenermittlung":
"GRVS/SW - GUI":
"GRVS/SW - HamEr - Harmonisierung mandantenspezifischer Erweiterungen":
"GRVS/SW - Sonstige Daten und Verfahren":
"GRVS/SW - Statistik":
"GRVS/SW - Testorganisation":
"GRVS/SW - Projektleitung":
"GRVS/SW - DV-Leiter":
"GRVS/SW - Fachbereichbeauftragte":
"GRVS/SW - KonTest"

Arbeitspakete:
"AP01":
"AP02":
"AP03":
"AP04":
"AP05":
"AP06":
"AP07":
"AP08":
"AP09":
"AP10":
"AP11":
"AP12":
"APPL":
"APDV":
"APFB":
"KOTE"

Es soll für diese User in seine Gruppen nachgeschaut werden ob er für die Arbeitspakete berechtigt ist, dann kommt in ein PickList die entsprechende Arbeitsgruppen raus.
Beispiel: der Anwender gehört die Gruppen ".SW-AP10" und ".SW-KOTE" diesen werden in die Arbeitspakete gefunden (10 und letzte Position) daraus soll in der Picklist "GRVS/SW - Sonstige Daten und Verfahren" und "GRVS/SW - KonTest" erscheinen.
(10 und letzte Position der Arbeitsgruppen)

Die 2 Listen sind in Gemeinsame Felder Arbeitsgruppen und Arbeitspakete eingetragen und müssen ständig gepflegt werden.
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Glombi am 27.01.05 - 10:19:58
Ich denke die gültigen Gruppen für Arbeitsgruppen bekommt Du mit einer Kombination von
_Gruppen := @Trim(@Right(@UserNamesList;".SW-"));

ergibt für Dein Beispiel dann "AP10" und "KOTE".

Dann mit dieser Liste die Liste der Arbeitspakete aus dem Dokument generieren
_ArbeitspaketeListe := @Keywords(_Gruppen;Arbeitspakete);

Wie bekommt man die Arbeitsgruppen:
_Liste1 := Arbeitspakete + "#" + Arbeitsgruppen;
_ReturnListe := @Trim(@Right(_Liste1;_ArbeitspaketeListe + "#"));

Andreas
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 27.01.05 - 10:49:35
@Glombi

schon genial wie du das löst... ich bekomme aber nur den ersten Wert.

Wenn ich _ArbeitspaketeListe zurückgebe sind alle Gruppen wo ich Mitglied bin, die _Liste1 ist auch schön mit "AP01#GRVS/SW - Abgleich" usw gefüllt aber diese _ReturnListe hat wie gesagt nur 1 Element
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Glombi am 27.01.05 - 11:06:14
Stimmt, das liegt an dem dusseligen @Right.

Es ginge evtl. so (aus dem Bauch heraus):

_Liste1 := Arbeitspakete + "#" + Arbeitsgruppen;
_Liste 2:= (_ArbeitspaketeListe + "#") *+ Arbeitsgruppen;
_ReturnListe := @Keywords(_Liste1;_Liste2)

also über Permutationen... (*+)

Andreas
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 27.01.05 - 12:15:26
@Glombi

Thx jetzt habe ich's! hat fast so geklappt  :)

für spätere Suchen:
Code
_TAG:=@GetField("Arbeitsgruppen");
_TAP:=@GetField("arbeitspakete");

_grp:= @Trim(@Right(@UserNamesList;".SW-"));
_ArbeitspaketeListe := @Keywords(_grp;_TAP);

_Liste1 := _TAP + "#" + _TAG;
_Liste2:= (_ArbeitspaketeListe + "#") *+ _TAG;
_ArbeitsPaketeGruppeListe := @Keywords(_Liste1;_Liste2;"");
_ReturnListe:= @Replace(_ArbeitsPaketeGruppeListe;_Liste1;_TAG);

_ReturnListe

Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 27.01.05 - 14:45:25
diese @GetField ist auch nur für Version 6 verfügbar  :'(

habe versucht mit @getdocfield aber da geht's auch nicht in 5er... Meldung: "@getdocfield und @setdocField können nicht auf das Dokument zugreifen, das aktuell berechnet wird"

hat jemand eine andere Idee an der Stelle?
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: koehlerbv am 27.01.05 - 14:48:52
Warum überhaupt @GetField ?

_TAG:= "Arbeitsgruppen";

reicht doch vollkommen.

Bernhard
Titel: Re: Berechnet beim anlegen: Domino 6???
Beitrag von: Alois am 27.01.05 - 14:56:47
Wie einfache Lösung manchmal schön kompliziert gemacht werden  ;D

ich danke dir @koehlerbv