Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: HipSlu am 21.06.04 - 17:27:03
-
hallo,
ich habe eine frage - warum liefert mir
Set NewDoc = Doc.CopyToDatabase(ZielDB)
einen fehler anstatt dem neuen document zurück?
kommt aus folgenden zusammenhang:
Function CopyAllDocs(qserver As String, qdb As String, zpath As String, qview As String) As Integer
On Error Goto ErrHand
'-1 = error
'>0 = ok
Dim QuellDB As NotesDatabase
Dim QuellView As NotesView
Dim ZielDB As NotesDatabase
Dim Session As New NotesSession
Dim vc As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim Doc As NotesDocument
Dim NewDoc As NotesDocument
Dim f As Long
Dim ActDB As Integer
CopyAllDocs = -1
Set QuellDB = Session.GetDatabase(qserver, qdb, False )
QuellDB.FolderReferencesEnabled = True
Set QuellView = QuellDB.GetView(qView)
Set vc = quellview.AllEntries
Set entry = vc.GetFirstEntry()
Set Doc = entry.Document
ActDB = 0
Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False)
For f = 1 To vc.Count
If f = DBSchnittmarken(ActDB) Then
Call WriteLog("Wechsle zu Ziel-DB Nr: " & Cstr(ActDB), Info)
Print "Wechsle zu Ziel-DB Nr: " & Cstr(ActDB)
ActDB = ActDB + 1
Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False)
End If
Set entry = vc.GetNthEntry(f)
Set Doc = entry.Document
Set NewDoc = Doc.CopyToDatabase(ZielDB)
Forall ActFolder In doc.FolderReferences
Call NewDoc.PutInFolder(ActFolder,True)
End Forall
Next
CopyAllDocs=1
Exit Function
ErrHand:
Call ErrHandSub()
Resume Next
End Function
-
Liefert denn
Set Doc = entry.Document
noch ein NotesDocument zurück ? Die Fehlermeldung weist darauf hin, dass da nix mehr zu holen war (gleiches kommt ja zum Bleistift auch, wenn man ein
Call doc.Remove mit anschliessendem
Set doc = view.getNextDocument (doc)
macht.
Bernhard
-
ja - ausser der debugger hat mich belogen ;D
-
ich vermute, dass mit der ZielDB was nicht stimmt.
steckt das was drin?
-
ich vermute, dass mit der ZielDB was nicht stimmt.
hm, glaub ich weniger; ich bin dabei ein script zu basteln, welches eine mail-db in x cd-taugliche happen zerteilt - siehe
http://www.atnotes.de/index.php?board=3;action=display;threadid=16167;start=0
d.h. die zieldbs sind neue leere kopien; ich denke mal, die sind ok
steckt das was drin?
?
-
steckt das was drin?
?
ich meine, ist ZielDB ein Objekt in der Zeile, in der der Fehler auftritt?
-
ok, jetzt blamier ich mich wohl ziemlich sicher; aber ich versteh nicht, was du meinst :-[ sorry
-
kein Problem
wenn du mal diese Änderung machst
For f = 1 To vc.Count
If f = DBSchnittmarken(ActDB) Then
Call WriteLog("Wechsle zu Ziel-DB Nr: " & Cstr(ActDB), Info)
Print "Wechsle zu Ziel-DB Nr: " & Cstr(ActDB)
ActDB = ActDB + 1
Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False)
If ZielDB is Nothing Then
Messagebox "Kein Databaseobjekt"
End if
End If
kommt dann die Messagebox?
Grundsätzlich ist es ratsam nicht immer davon auszugehen, dass eine Variable nach einer Zuweisung immer auf ein Objekt zeigt.
-
ah, ok - nein, er springt nicht in die if-schleife.
auch hier nicht:
Set entry = vc.GetNthEntry(f)
Set Doc = entry.Document
if Doc is Nothing Then
Messagebox "Kein Documentobjekt"
End if
-
d.h. du hast vorher schon n Ziel-Datenbanken im Notes Client erstellt?
-
das ist nur eine function eines längeren scripts;
- ich gehe alle docs der quell-db durch, zähle doc.size hoch und merke mir in einem array bei erreichen einer vorher def. max. größe die "schnittmarke".
- dann erstelle ich mittels db.createcopy n kopien der db (ohne docs)
- mit dieser geposteten function wollte ich dann ansich die quell-db nochmals durchgehen, und lt. schnittmarken die documente in die zieldb's aufteilen sowie die zugehörigkeit zu den ordnern wiederherstellen.
zuvor hatte ich schon ein funktionierendes script, jedoch war es elendlich langsam: dort habe ich mittles "filecopy" komplette kopien der db erstellt und dann die "überschüssigen" docs herausgelöscht. wie gesagt: funktioniert, aber man wird alt.
auch diese jetzige vorgehensweise ist dumm bin ich endlich draufgekommen - wozu vorher alle dokumente durchgehen und "schnittmarken" erheben, und dann in einem 2ten schritt nochmals alle durchgehen und kopieren? naja, das muss ich dann noch ändern - aber zuvor frage ich mich, wieso das hier nicht funktioniert....
-
also der Fehler tritt definitiv dann auf, wenn die Zieldatenbank nicht existiert.
aber du sagst, sie existiert.
ich bin mir ziemlich sicher, dass der Fehler an der Variablen ZielDB liegt, oder irgendwie mit ihr zusammenhängt.
einen anderen Fehler kann ich nicht erkennen.
-
hm - naja auf jeden fall vielen dank für deine zeit; ich werde mich mal weiter spielen. danke!