Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: klaussal am 02.05.03 - 14:22:03
-
hi zusammen,
habe da einen agenten, der durch alle db's dackelt. für jede db macht eine collection aller documente. normalerweise müsste ich ja über collection.count die anzahl zurückkriegen. tut es aber nicht. bei einigen db's klappt es, bei 98% aber nicht. ich bin in allen db's als manager eingetragen.
hat jemand eine idee, woran es liegen könnte ?
vielen dank schon ma für hinweise :)
-
dann müsste es am code liegen ??? ???
cu
-
Hallo Klaus,
DU bist in allen DBs als Manager eingetragen; ist das auch der Unterzeichner des Agenten ??
Poste mal den Code, dann ist es einfacher ;D
eknori
-
@eknori,
... code kommt am montag.
jetzt ist erst mal notes-freie-zeit angesagt :)
-
na was is nu wieder des... Notes Freie Zeit ??? Haste etwa noch andere Hobbies ?? ;D ;D
-
@eknori,
hier ist der code (auschnitt):
Machweiter:
Call db.open(strServer, strDB)
Set docNew = dbziel.createDocument
docNew.form = "m_db"
docNew.title = db.title
docNew.name = db.Filename
docNew.path = strPath
docNew.groesse = db.Size
Set collection = db.AllDocuments
n = collection.Count
If Not db.isOpen Then
docNew.number_of_docs = 0
Else
Set collection = db.AllDocuments
End If
If db.IsFTIndexed Then
docNew.indexed = "ja"
Else
docNew.indexed = "nein"
End If
-
Hallo,
wo schreibst Du denn n oder collection.Count in das Feld number_of_docs?
-
ich nehme an "machweiter" steckt in einer Schleife...
- wenn du durch alle db dackelst hast du auch dein directory initialisiert
- wo ist deine Fehlerroutine - hast du hier nur ein resume next gemacht ?
- erst prüfen ob die db offen ist dann wird die collection gesetzt
deshalb kann es sein das ein Fehler schon vor dem n = collection.count auftritt, und ein resume next zur nächsten db läuft
cu
-
@performance,
jau, resume next war drin.
problem besteht immer noch. ich mache einen call db.open und er liefert mir immer (99,9 %) false zurück. das serverdokument scheint in ordnung zu sein. über die gruppe bin ich überall als admin in den acl's drinne ??? ??? ???
-
@klaussal
es ist immer ein wenig schwierig aus code snippets auf Fehler zu schliessen
- ich paste dir mal meinen Ansatz - es gibt auch im Forum verschieden Ansätze - man muss nur suchen ;D
Dim servern As NotesName
Dim serverdir As NotesDBDirectory
Dim SearchServer As String
On Error Goto ErrorMsg
Set servern = New NotesName(SearchServer)
Set serverdir = New NotesDbDirectory( servern.common )
If Not (serverdir Is Nothing) Then
i= 0
Set tmpdb = serverdir.GetFirstDatabase(DATABASE)
While Not (tmpdb Is Nothing)
i = i + 1
Set dummydb = s.GetDatabase(tmpdb.Server, tmpdb.FilePath)
If (dummydb.IsOpen = False) Then Call dummydb.Open(tmpdb.Server, tmpdb.FilePath)
'' tue dies und jenes
Call createDoc(tmpdb, dummydoc, "Database") '' beim resume next habe ich schon die Fehlermeldung im
'' dokument gespeichert - hier spielt der resume next
'' keine Rolle mehr ausser der Sprung zur nächsten db
Call dummydb.close
Set tmpdb = serverdir.GetNextDatabase
Wend
Else
Print "... no server directory available! exit"
End If
ErrorMsg:
If Err = 4060 Then Resume Next '''' cannot open database - no access
If Err = 91 Then Resume Next '''' cannot open database ... Folgefehler -> Object variable not set
ErrorMessage = " ERROR " & Err & " at line " & Str$(Erl) & ": " & Error$
Print ErrorMessage
Resume Next
''' oder eine Ausgabe in eine Agent log
-- hoffe das hilft dir weiter
cu
-
@performance,
danke :D
die suche ist ja schön + gut, aber man muss erst einmal die suchbegriffe kennen ;D