title image


Smiley über Formel: Viel Schreibarbeit... über Script: wenig Schreibarbeit...
3 Möglichkeiten:



--1--

Du verwendest zum erstellen Deines neuen Dokumentes eine andere Form: diese sieht genau gleich aus, wie Deine Haupt- Maske, hat aber in allen bearbeitbaren Werten den jeweils eigenen Feldnamen als Vorgabewert und in den Maskeneigenschaften "Formeln übernehmen Werte..." aktiviert...



Dann kannst Du über:

@Command( [Compose] ; "newForm" );

@SetField( "Status" ; "neuer Wert" );

@SetField( "NochEinFeld" ; "nochEinWert" );

FIELD Form = "alteMaske"



das ganze anlegen.



--2--

Ohne neue Maske hast Du viel Tipparbeit vor Dir:



ENVIRONMENT Feld1 := Feld1;

ENVIRONMENT Feld2 := Feld2;

ENVIRONMENT Feld3 := Feld4;

...

ENVIRONMENT FeldX := FeldX;

@Command( [Compose] ; "Form" );

FIELD Feld1 := @Environment( "$Feld1" );

FIELD Feld2 := @Environment( "$Feld2" );

FIELD Feld3 := @Environment( "$Feld3" );

...

FIELD FeldX := @Environment( "$FeldX" );



Oder:

Ansicht, sortiert nach @Text( @DocumentUniqueID );



unid := @Text( @DocumentUniqueID );

@Command( [Compose] ; "Form" );

FIELD Feld1 := @DBLookup( "" : "NoCache ; "" ; "(Ansicht)" ; unid ; "Feld1" );

FIELD Feld2 := @DBLookup( "" : "NoCache ; "" ; "(Ansicht)" ; unid ; "Feld2" );

FIELD Feld3 := @DBLookup( "" : "NoCache ; "" ; "(Ansicht)" ; unid ; "Feld3" );



Den umweg über Lookups oder environment- Variablen musst Du gehen, weil Du in der Formelsprache nie zwei Dokumente gleichzeitig im Zugriff haben kannst. Natürlich könnte man den Lookup optimieren :

2. Spalte der Ansicht, Formel:

@Implode( Feld1 ; "|" ) + "~" + @Implode( Feld2 ; "|" ) + "~" + @Implode( Feld3 ; "|" )



Und dann in Deinen Button:



lkp := @DBLookup( "" : "NoCache" ; "" ; "(Ansicht)" ; 2);



FIELD Feld1 := @Explode( @Word( lkp ; "~" ; 1 ) ; "|" );

FIELD Feld2 := @Explode( @Word( lkp ; "~" ; 2) ; "|" );

FIELD Feld3 := @Explode( @Word( lkp ; "~" ; 3) ; "|" );



Aber das ist natürlich auch wieder -je nach ANzahl Felder- verdammt viel Tipparbeit.



--3--

Am einfachsten ist es über Script:



Dim ws as New NotesUIWorkspace

Dim uidoc as NotesUIDocument

Dim ses as New NotesSession

Dim db as NotesDatabase

Dim doc as NotesDocument

Dim doc2 as NotesDocument



Set db = ses.CurrentDatabase



Set uidoc = ws.CurrentDocument 'nur wenn Du den Button im Document selbst machst, sonst musst Du ans doc auf ne andere weise ran...

Set doc = uidoc.Document



set doc2 = New NotesDocument( db ) 'dann musst Du das Document auf jeden Fall speichern

call doc.CopyAllItems( doc2 )

'oder

set doc2 = doc.CopyToDatabase( db ) 'dann ist das Dokument automatisch gespeichert: wenn Du jetzt abbrichst bleibt es in der Datenbank vorhanden...



'unterschiedliche Felder setzen

doc2.Status = "neuerStatus"

doc2.FeldX = "neuerWert"



Call doc2.Save( true, true )

'und wenn Du es jetzt gleich noch öffnen willst:

Call ws.EditDocument( True, doc2 )





HTH

Tode

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: