Domino 9 und frühere Versionen > Entwicklung
Dokument über die ID kopieren
TMC:
--- Zitat von: Selin am 04.11.04 - 14:00:24 ---brauche ich dann noch die andere DB hier im Script?
Weil, ich muss ja auf beide DB's zugreifen??
--- Ende Zitat ---
Ähm, ja. Bin aber jetzt auch verwirrt.
Kennst Du Dich mit Lotus Script aus? Bitte dringend ein Buch lesen und/oder eine Schulung besuchen. Die Quell-DB selbst hast Du nicht instantiiert, aber ein Dokument davon. Und die 2. DB ist instantiiert, wie Axel schon schrieb.
Man kann zwar jetzt auf die Schnelle helfen, aber ich befürchte, dass Du aufgrund fehlender Basics dann das nicht 100% verstehst.
Ist auch nicht böse gemeint, sondern ein gut gemeinter Rat.
Axel:
Hi,
ich denke mal es geht um die Übernahme eines Wertes aus dem aktuellen Dokument in ein Dokument, auf das per UNID in einer anderen Datenbank zugegriffen werden soll.
Aber das ist ein bisschen wie Kaffeesatzleserei.
Wenn dem so ist, dann braucht man die Quell-DB nicht zu instanzieren. Dafür reicht das Quell-Dokument und das passiert auch in dieser Zeile
Set doc = ws.CurrentDocument.document
Aber was mir aufgefallen ist, weiter unter im Code wird doc mit dem "Zieldokument" überschrieben. So kann das auf keinen Fall funktionieren.
Axel
Selin:
Hallo,
also hier ist mein Script
Sub Initialize
Dim s As New NotesSession
Dim WS As New NotesUIWorkspace
Dim View As NotesView
Dim db As NotesDatabase
'Die DB, in die kopiert werden soll
Dim targetdb As New NotesDatabase( "Server", "Datenbanken/VIP.nsf" )
Dim dc As NotesDocumentCollection
Dim source As NotesUIDocument
Dim checkdc As NotesDocumentCollection
Dim doc As NotesDocument
Dim Flag As Variant
Dim SucheName() As String
Dim Unids() As String
Dim tmpdoc As NotesDocument
Dim modifyDate As Variant
Dim i As Integer
Dim found As Integer
Set db = s.CurrentDatabase
Set checkdc = db.UnprocessedDocuments
Set doc = checkdc.GetFirstDocument
Do While Not doc Is Nothing
found = False
'Prüfe Nachname und Vorname
Set dc = targetdb.Search( |Lastname = "| + doc.LastName(0) + |" & Firstname ="| + doc.FirstName(0) + |"|,Nothing,0 )
If dc.Count > 0 Then
Msgbox(dc.count)
'Hier gibt es einen Treffer:
found = True
Redim SucheName(dc.count)
Redim Unids(dc.count)
For i = 1 To dc.count
Set tmpdoc = dc.getNthDocument(i)
SucheName(i-1) =tmpdoc.LastName(0) + ", " + tmpdoc.FirstName(0)+ " " +tmpdoc.CompanyName(0) + " (" + Format$( doc.LastModified, "Short Date")+")"
Unids(i-1) = tmpdoc.UniversalID
Next
doc.Ergebnis = SucheName
doc.Liste1 = SucheName
doc.Unids = Unids
doc.Aktuell =doc.Lastname(0)+ ", " + doc.FirstName(0)+ " " + doc.CompanyName(0)
Flag = WS.Dialogbox("dialog", True, True, False, False, False, False, "Export", doc, False)
Else
' Kein Treffer: Dok. kann kopiert werden
Call doc.CopyTodatabase(targetdb)
Set source= WS.CurrentDocument
End If
Set doc = checkdc.GetNextDocument(doc)
Loop 'do while not doc is nothing
End Sub
Eine Dialogmaske wird aufgerufen.
Mit Feldern Aktueller Wert
und die Ergebnisliste
liste1 und UNIDS
Zwei Knöpfe habe ich noch ind er Maske
Bei dem einen habe ich testhalber mal folgendes gemacht
@Prompt([OK];"";Ergebnisliste);
tmp0 := @Text(Ergebnisliste);
tmp:=@Member(tmp0;Liste1);
@Prompt([OK];"";@Text(tmp));
UNID := @Subset(@Subset(Unids;tmp);-1);
@Prompt([OK];"";@Text(UNID))
Somit habe ich von den Dokumenten, die ich aus der Ergebnisliste wähle, die DOCIDs und müsste
das Originaldokument z.B. überschreiben können.
Ich gebe nur Teile aus dem Dokument in meiner Ergebnisliste aus (Name, Vorname, Firma)
und im Feld Aktueller Wert genauso.
Axel:
Hi,
schön, aber wo ist jetzt das Problem bzw. die Frage, oder ist das nur zur Info? ??? ???
Axel
Selin:
das Problem bzw die Frage ist,
wo setzt ich was ein, damit ich das Originaldokument von Feld Aktueller Wert durch einen der Originaldokumente aus Feld Ergbebnisliste, welches ich markiere, ersetzen kann??
Danke
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln