Domino 9 und frühere Versionen > ND8: Entwicklung

Beim Speichern ein Feld in eine andere Maske/Dokument übertragen

(1/2) > >>

snore:
Servus,
ich möchte von einer Maske "B" (hier werden laufend neue Dokumente erstellt) das Datum beim Speichern in die Maske "A" mit den Stammdaten = bereits bestehende Dokumente (ca. 50 Stück) übernehmen. Das ganze in Abhängigkeit eines Schlüsselwortes, welche in beiden Masken identisch ist und in den Dokumenten von "A" nur immer in einem Dokument vorkommt...
Kann mir da jemand helfen - oder einen Ansatz geben ?!
Danke
snore
 ::)

WildVirus:
Hallo Snore,

Maske = Design
Dokument = Daten

Du möchtest aus Deinem geöffneten Dokument (gestaltet mit Maske "B") einen Wert in 1-n Dokument(e) schreiben, die mit Maske "A" erzeugt wurden.

Das geht mit Script recht einfach, in dem Du nach Form = "A" und Feld = "X" suchst. Feld = Feldname in dem bei Nutzung von Maske "A" der Suchwert gespeichert wird und "X" ist der Suchwert.

Dann bekommst Du eine DocumentCollection mit 1-n Dokumenten, die Du dann ändern kannst.


CU,
Axel

thkn777:
@Snore
kleine Ergänzung zur vorigen Antwort:

1. Suchansicht bauen
Selektiere alle Dokumente mit Form="A". Eine Spalte reicht, dort kommt Dein Schlüsselwert rein. Wichtig: diese Spalte muß sortiert sein.

2. Action-Button (LotusScript) in Deiner Maske B anlegen (zum Testen/Herumspielen)
Lies in der Notes Developer Hilfe die Beispiele zur GetDocumentByKey Methode der NotesView Klasse und benutze die Beispiele in diesem ActionButton.

Du soltest damit in der Lage sein, EIN Dokument (das erste) aus der Liste aller "A" Dokumente zu finden in Abhängigkeit des Schlüsselwertes.

3. Falls es mehrere "A"-Dokumente mit gleichem Schlüsselwort gibt, dann folgt der Wechsel von GetDocumentByKey zu GetAllDocumentsByKey und der von WildVirus schon angesprochenen NotesDocumentCollection. Am besten auch hier mal die Beispiele aus der DeveloperHilfe bemühen.

Tip:
Den Button zum Schluß natürlich wieder rauswerfen, nachdem Du den getesten Scriptcode an eine andere Stelle verschoben hast (z.B. QuerySave oder QueryClose Event).

Wichtig:
Beim Updaten der "A"-Dokumente darauf achten, ob sich diese im Zugriff befinden, um Speicherkonflikten aus dem Weg zu gehen!

Viel Erfolg.

snore:
Servus,

ich bin schon weit gekommen mit meinen Script-Kenntnissen......

Aber noch folgende Bitte:
-> kann mal jemand über das Script schauen und überflüssige Zeilen entfernen (evtl. mit kuzer Begründung)
-> ich muss den Datumswert ohne ZEIT übergeben ... das bekomm ich einfach nicht hin..

Danke
snore




Sub Initialize
   Dim session As New NotesSession
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument   
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim Key As String
   Set uidoc = workspace.CurrentDocument
   Print Cstr("Start Kontrolleintrag .....")
   Key = uidoc.FieldGetText( "Feldname" )
   Print Cstr(("Filiale=Key setzten: ") & (key))
   Set db = session.CurrentDatabase
   Set view = db.GetView ("(Ansicht für Hinweismailversand)" )
   Set doc = view.GetDocumentByKey (Key)
   Dim Datum As New NotesDateTime(Now)
   Call Datum.setAnyTime()
   
   If Not (doc Is Nothing) Then
      Print "Key über Ansicht gefunden - Wert kann geschrieben werden"
   Else
      Messagebox "Achtung: Der Kontrolleintrag konnte nicht vollständig gespeichert werden - ...."
   End If
   
   doc.DatumderletztenKontrolle =????wie übergebe ich hier das aktuelle Datum ohne Zeit ???
   
   Call doc.save (False, False)
   
End Sub

WildVirus:
Guten Abend,


--- Zitat von: snore am 27.01.14 - 17:13:52 ---Servus,
????wie übergebe ich hier das aktuelle Datum ohne Zeit ???

--- Ende Zitat ---

Du möchtest Dir m.E. die Klasse NotesDateTime in der Hilfe durchlesen.

CU
Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln