Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: gschmid am 05.08.05 - 15:57:45

Titel: Werte an neues Dokument übergeben
Beitrag von: gschmid am 05.08.05 - 15:57:45
Hallo zusammen,

wie übergebe ich eigentlich am geschicktesten Werte an ein neues Dokument, das ich von einem anderen aus erzeuge (mit @Command([Compose]...)?
Ich habe mir jetzt mal mit Umgebungsvariablen beholfen (@Environment), aber das geht sicherlich auch eleganter, oder?

Danke,
Gunnar
Titel: Re: Werte an neues Dokument übergeben
Beitrag von: koehlerbv am 05.08.05 - 16:05:59
Das Environment ist hier ganz schlecht - das müllt die NOTES.INI zu.

Die einfachste (und natürlich auch eingeschränkteste) Variante ist die Maskenproperty "Felder übernehmen Werte aus gewähltem Dokument". Hierfür dann in den Feldern die Feldnamen des Dokuments, das gewählt wurde, oder Formeln, die sich darauf beziehen, einsetzen.

HTH,
Bernhard
Titel: Re: Werte an neues Dokument übergeben
Beitrag von: gschmid am 05.08.05 - 16:20:44
Zunächst mal danke für die schnelle Antwort!

Das heißt dann aber, dass das neue Dokument wissen muss, wie die Felder im aufrufenden Dokument heißen, oder?


Umgebungsvariable war nur Behelfslösung, ist schon klar.
Titel: Re: Werte an neues Dokument übergeben
Beitrag von: koehlerbv am 05.08.05 - 16:29:01
Das heißt dann aber, dass das neue Dokument wissen muss, wie die Felder im aufrufenden Dokument heißen, oder?

Ja, sicher  ;) Du musst das ja auch wissen, sonst funktioniert das Ganze ja sowieso nicht.

Du kannst das Ganze natürlich auch mit LS machen und eine Routine in einer ScriptLib dafür verwenden: Aus gewähltem Dokument Itemwerte merken, neues Dokument erzeugen mit den erforderlichen Feldern, dann mit den gemerkten Werten die gewünschten Zielitems belegen und das neue Dokument FrontEnd öffnen. So mache ich das in der Regel, wenn mir (wie meist bei solchen Sachen) @functions nicht ausreichen.

Bernhard
Titel: Re: Werte an neues Dokument übergeben
Beitrag von: gschmid am 05.08.05 - 17:30:08
Nunja, wenn ich jetzt ein Dokument aus verschiedenen anderen Masken heraus erstellen können möchte, müssten die Felder dann auch noch alle gleich heißen - schon ziemlich lästig, oder?
Ich hätte mir halt gewünscht, dass man einem Compose-Command einfach Parameter als Name-Value-Paare mitgeben kann, die das so erzeugte Dokument dann verwenden kann, wenn es will.

Aber gut, dann bastel ich mal weiter...
Titel: Re: Werte an neues Dokument übergeben
Beitrag von: koehlerbv am 05.08.05 - 17:39:49
Nunja, wenn ich jetzt ein Dokument aus verschiedenen anderen Masken heraus erstellen können möchte, müssten die Felder dann auch noch alle gleich heißen - schon ziemlich lästig, oder?

Das wäre in der Regel guter Stil, wenn "gleiche" Felder auch gleiche Namen tragen und ist eigentlich best practices. Ich finde das alles andere als lästig, besonders, wenn ich gleiche Inhalte aus unterschiedlichen Dokumenttypen in einer Ansicht darstellen will.

Ich hätte mir halt gewünscht, dass man einem Compose-Command einfach Parameter als Name-Value-Paare mitgeben kann, die das so erzeugte Dokument dann verwenden kann, wenn es will.

Compose mit Parametern ist nicht. Und Du stehst da ja wieder vor exakt dem gleichen Problem: Du musst nach Deiner "nicht lästigen" Vorgehensweise jeweils andere Parameter wegen unterschiedlichen Feldnamen übergeben. Abgsehen davon, kannst Du diese Abfragen ja immer noch im neu erstellten Dokument vornehmen.
Gerade für sowas ist aber LS besser - da kannst Du Dir ja Dein eigenes "Compose" erstellen als Function.

Das prinzipielle Design Deiner Applikation scheinst Du Dir aber nochmal überlegen zu müssen.

Bernhard

Titel: Re: Werte an neues Dokument übergeben
Beitrag von: flaite am 05.08.05 - 18:56:13
Es spricht wirklich nichts dagegen hier ein kleines Skript zu erstellen.
Code
' Pseudocode als billigVersion. 
'Nicht getestet. 
' kann der eine oder andere "missclick" (wie ich als Internet Go Spieler sagen würde) drin sein. So ähnlich wie Tippfehler
' Views, Variablennamen, etc. anpassen! 
on error goto Fehler
Dim s as new NotesSession
Dim db as Notesdatabase
Dim vw As NotesView
Dim docVonDemGelesen as NotesDocument 'besseren Variablenbezeichner, please
Dim docNew As NotesDocument
Dim uiws as new NotesUiWorkspace
Dim uidoc As NotesUidocument

set db = s.currentDatabase
set vw = db.getView("viewWoDokumentAusDemGelesen")
set docAusDemGelesen = vw.getDocumentByKey("WertUmDokumentInAnsichtZuFindenErsteSpalteSortiert")
set docNew = db.createDocument
docNew.Form ="MaskennameDesZuErzeugendenDokuments" ' vergisst man leicht
docNew.DeinFeld = docAusDemGelesen.FeldInDokumentAusDemGelesen(0)
set uiws = new NotesUiWorkspace
call uiws.editDocument (true, docNew, false)


undWeg:
exit sub
Fehler: 
msgBox "Fehler hinter Schaltfläche: " & Error$ & "(" & Cstr(err) & ") in Zeile: " & Cstr(Erl)
goto undWeg

%rem
 Disclaimer: Hätte ich das für mich geschrieben wären da noch ein paar "most unexpected trick moves" (wie ich als Internet-Go-Spieler sage) drin, aber so ist es mehr 30-kyo-freundlich :-)
%end rem

Ist echt nicht so schwierig und kriegt man keine Pickel von.
LotusScript lehnt sich ja an Basic an und Basic wurde dafür erfunden, um es Anfängern einfach zu machen. Imho muss da nicht so rumgezetert werden. Ein bischen LotusScript ist nun wirklich nicht die Welt.
Axel