Domino 9 und frühere Versionen > ND7: Entwicklung
db.Open --> Rotes Fenster- Problem beim holen der Eigenschaften einer DB
C_T:
@eknori
HI
muss meinen Kommentar von vorhin halb zurücknehmen...
Habe festgestelle das
Dim db as notesdatabase
Set db = dbcol.getfirsentry(1246)
nicht das gleiche ist wie
Dim db as notesdatabase
Set db = dbcol.getfirsentry(1246)
Set db = new notesdatabase(db.server,db.filepath)
In beiden Fällen ist db eine notesdatabase und ich verstehe auch zurzeit nicht den unterschied zwischen den beiden aufrufen, jedoch kann ich bei der Variante den Befehl bzw die Eigenschaft "AllDocuments" nicht benutzen bei der 2.Variante schon....
ALso bis dann
Verwirrt und Ratlos,
Pyewacket:
dbcol ist vermutlich ein DbDirectory.
Die bei getfirst bzw getnext zurückgelieferten Datenbankobjekte sind geschlossen (db.isopen=false)
Du kannst nur ganz wenige Properties abfragen wie Server, Filepath, Replicaid,
deshalb kannst du nicht auf die Alldocuments collection zugreifen.
in der zweiten Variante erzeugst du das Datenbankobject quasi neu und dabei wird es geöffnet.
Aber Vorsicht, das kann seltsame Effekte geben wenn du das db-object das aus dem dbdirectory zurückkommt weiterverwendest. Ich habe die Beobachtung gemacht daß dann öfter das GetNextEntry nicht mehr sauber funktioniert und manche Datenbanken mehrfach zurückgeliefert bzw manche ausgelassen werden.
Ich mache das so daß ich ein dbWork definiere und dann dieses mit
set dbWork = new notesdatabase(db.server,db.filepath)
initialisiere.
Gruss
Peter
C_T:
Danke Peter genau so habe ich das gestern abend auch gemacht zumindest so ähnlich. Trotzdem erhalte ich ziemlich schnell immer wieder nen Rotes Fenster mit nem Roten Fenster und der meldung:
"OSVBlockAddr: Bad VBlock handle"
kann mir jemand von euch nen Tip geben warum das so passiert?
habe sogar schon testhalber mal ne Begrenzun eingebaut....
Code: (Dies ist der Originalcode der das Rote Fenster bringt....)
--- Code: ---Sub ServerVergleichNewDok_V2
On Error Goto ERRORSTEP
REM Umgebung
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
REM Standard
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Dim s2 As Integer
If doc.Server1(0) <> "" And doc.Server2(0)<> "" And doc.Server1(0) <> doc.Server2(0) Then
Print "Vergleich der Server gestartet!"
Dim DBDir1 As New NotesDbDirectory(doc.Server1(0))
Dim DBDir2 As New NotesDbDirectory(doc.Server2(0))
Dim DB1Dir As NotesDatabase
Dim DB1 As NotesDatabase
Dim DB2 As NotesDatabase
Dim Item1 As Notesitem
Dim Item2 As Notesitem
Dim intRCS1 As Integer
Dim lngDBHandleS1 As Long
Dim intRCS2 As Integer
Dim lngDBHandleS2 As Long
Dim i As Integer
Dim DocNew As NotesDocument
Dim docCol As NotesDocumentCollection
Set DB1Dir = DBDir1.GetFirstDatabase(1246)
Print "Lade Daten vom Server " & Cstr(DB1Dir.Server)
i = 0
If Not db1Dir Is Nothing Then
Do Until db1Dir Is Nothing
Set DB1 = New NotesDatabase(DB1Dir.server,DB1Dir.filename)
Set DocNew = db.CreateDocument
DocNew.Form = "mDB"
DocNew.Server1 = db1.Server
DocNew.TitelS1 = db1.Title
DocNew.PfadS1 = db1.FilePath
DocNew.ReplikIDS1 = Cstr(db1.ReplicaID)
DocNew.groesseS1 = Cstr(db1.Size)
DocNew.AnzahlS1 = Cstr(db1.AllDocuments.Count)
DocNew.TitelS2 = "N.V."
DocNew.PfadS2 = "N.V."
DocNew.ReplikIDS2 = "N.V."
DocNew.groesseS2 = "N.V."
DocNew.ErstelltS2 = "N.V."
DocNew.GeaendertS2 = "N.V."
DocNew.FixUpS2 = "N.V."
DocNew.ANzahlS2 = "N.V."
Set DB2 = DBDir2.GetFirstDatabase(1246)
DocNew.Server2 = db2.Server
s2 = 0
Print "Suche auf Server 2 nach Datenbank"
Do Until db2 Is Nothing
If db1.FilePath = db2.FilePath Then
Print "Datenbank gefunden - Trage Werte ein"
Set DB2 = New NotesDatabase(DB2.server,DB2.filename)
DocNew.TitelS2 = db2.Title
DocNew.PfadS2 = db2.FilePath
DocNew.ReplikIDS2 = Cstr(db2.ReplicaID)
DocNew.groesseS2 = Cstr(db2.Size)
DocNew.AnzahlS2 = Cstr(db2.AllDocuments.Count)
Exit Do
End If
s2 = s2 +1
If s2 >= 10 Then Exit Do
Set db2 = dbdir2.GetNextDatabase()
Loop
DocNew.Status = "Abgeschlossen"
Call DocNew.Save(True,False)
Set DB1 = Nothing
i = i +1
If i >= 3 Then Exit Do
' Sleep(15)
Print "Nächste Datenbank auf Sersve 1"
Set db1Dir = dbdir1.GetNextDatabase()
Sleep(10)
Loop
End If
Print "Vergleich der Server erfolgreich beendet!"
Else
Messagebox ("Bitte geben Sie 2 verschiedene Server ein die miteinander verglichen werden sollen.")
End If
Exit Sub
ERRORSTEP:
If Err = 4060 Then Resume Next
Msgbox "Es ist ein Fehler aufgetreten." & Chr(10) & Chr(10) _
& "Fehlermeldung: " & Error$ & Chr(10) _
& "Fehlernummer: " & Err & Chr(10) _
& "Codezeile: " & Erl & Chr(10) _
,64,"Error"
Print Cstr(Error$) & " - " & Cstr(Err) & " - " & Cstr(Erl)
Exit Sub
End Sub
--- Ende Code ---
it898ur:
Hallo,
die Meldung "Bad VBlock handle" habe ich lange nicht mehr gesehen - zuletzt unter Notes 6. Damals gab es einen Bug, wenn die Bezeichnung von Reitern des Arbeitsbereichs zu lang waren. Zu lang bedeutete dabei > 32 Zeichen bzw falls ein Sonderzeichen (wie z. B. ein deutscher Umlaut) enthalten war > 10 Zeichen.
Kann es sein, dass dein Arbeitsbereich ähnliche Probleme hat - in diesem Fall sollte es mit einem Jungfräulichen Desktop gehen.
Gruß
André
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln