Domino 9 und frühere Versionen > ND8: Entwicklung
Beim Speichern ein Feld in eine andere Maske/Dokument übertragen
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