Domino 9 und frühere Versionen > ND6: Entwicklung

Dokumente in Datenbank kopieren

<< < (2/6) > >>

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