Domino 9 und frühere Versionen > ND6: Entwicklung
Dokumente in Datenbank kopieren
Notestime:
Danke,
habs rausbekommen:
on Error Resume Next
Bernd
Semeaphoros:
Aber dann dahinter her gleich sofort wieder abstellen, sonst gibts nie wieder Fehlermeldungen, und das wäre fatal
koehlerbv:
Da ist aber irgendwas faul: Die Zeile wäre ja vollkommen überflüssig, da sie nichts bewirkt. Sag mal genaueres - eine Resume Next ist garantiert überflüssig.
Bernhard
Notestime:
Na denn, so sieht's aus. Wenn ich das On Error Resume Next weglasse, krieg ich ne FM (invalid universalid), wenn das Dokument noch nicht da ist:
Option Public
Option Declare
Dim s As notessession
Dim Zieldb As notesdatabase
Dim Quelldb As notesdatabase
Dim selecteddocs As notesdocumentcollection
Dim Quelldoc As notesdocument
Dim Zieldoc As notesdocument
Sub Initialize
Set s = New notessession
Set Quelldb = s.currentdatabase
Set Zieldb = s.getdatabase("","Eigene Datenbanken\Ziel.nsf")
Set selecteddocs = Quelldb.unprocesseddocuments
Set Quelldoc = selecteddocs.getfirstdocument
While Not Quelldoc Is Nothing
If Quelldoc.ZielDocUniqID(0) = "" Then
Call CreateEntry
Else
Call UpdateEntry
End If
Call Zieldoc.save(True,True)
Quelldoc.ZielDocUniqID = Zieldoc.universalid
Call Quelldoc.save(True, True)
Set Quelldoc = selecteddocs.getnextdocument(Quelldoc)
Wend
End Sub
Sub CreateEntry
Set Zieldoc = Zieldb.createdocument
Call Zieldoc.replaceitemvalue("QuellDocUniqID",Quelldoc.universalid)
Call Zieldoc.replaceitemvalue("Form","Maske")
Call Zieldoc.replaceitemvalue("Beruf",Quelldoc.Beruf(0))
End Sub
Sub UpdateEntry
Set Zieldoc = Nothing
On Error Resume Next
Set Zieldoc = Zieldb.getdocumentbyunid(Quelldoc.ZielDocUniqID(0))
If Zieldoc Is Nothing Then
Set Zieldoc = Zieldb.createdocument
End If
Call Zieldoc.replaceitemvalue("QuellDocUniqID",Quelldoc.universalid)
Call Zieldoc.replaceitemvalue("Form","Maske")
Call Zieldoc.replaceitemvalue("Beruf",Quelldoc.Beruf(0))
End Sub
Dann hab ich noch ein Scipt, über das ich die Dokument in der ZielDB wieder rausnehmen kann:
Sub Initialize
Set s = New notessession
Set Quelldb = s.currentdatabase
Set Zieldb = s.getdatabase("","Eigene Datenbanken\Ziel.nsf")
Set selecteddocs = Quelldb.unprocesseddocuments
Set Quelldoc = selecteddocs.getfirstdocument
While Not Quelldoc Is Nothing
Set Zieldoc = Nothing
On Error Resume Next
Set Zieldoc = Zieldb.getdocumentbyunid(Quelldoc.ZielDocUniqID(0))
Call Zieldoc.Remove(True)
Quelldoc.ZielDocUniqID = ""
Call Quelldoc.save(True, True)
Set Quelldoc = selecteddocs.getnextdocument(Quelldoc)
Wend
End Sub
Gruß
Bernd
P.S. Da ist sicher Vieles zu verbessern, ich bin nicht so der Script-Freak
Semeaphoros:
Bernhard: Verstehe Deinen Einwand jetzt überhaupt nicht. Wenn das Ding keinen Einfluss hätte, bräuchte es den Befehl ja in der Sprachdefinition nicht. Das Ding ist sinnvoll, wenn man es richtig einzusezten versteht, aber enorm gefährlich, wenn man es falsch macht.
Bernd: Und genau das tust Du, es falsch machen. Dieses "resume next" darf absolut nur für eine einzige Zeile aktiviert sein, sonst knallt man früher oder später mit unbehandelten Fehlern gegen die Wand und weiss nicht mehr, wo Fehler suchen.
Schaut doch beide mal diesen Thread an:
Errorhandling
und sucht dort nach resume next.
Ja, ich weiss, dass ich das Ding für die BPs überarbeiten sollte .... :-X
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln