Domino 9 und frühere Versionen > ND7: Entwicklung

db.Open --> Rotes Fenster- Problem beim holen der Eigenschaften einer DB

(1/3) > >>

C_T:
HI@all,

habe mal wieder ne kleine Frage.... ;)

Ich möchte eine DB erstellen in der Alle DBs eines Servers aufgelistet sind, und mit einem 2.ten Server abgeglichen werden ob diese DB dort ebenfalls vorhanden ist.

Dabei sollen aber auch noch die Datenbank Eigenschaften der beiden DBs auf den verschiedenen Servern angezeigt werden.

Der Abgleich soweit klappt ganz gut, jedoch ist mir aufgefallen das wenn ich an bestimmte Eigenschaften der Datenbanken möchte, muss ich die DBs erst öffnen. (z.B. ACL, Erstellt am etc.)

Mit dem Befehl db.Open("","") klappt das soweit auch,  jedoch mit nicht mehr als 3 Datenbanken, danach schmirt Notes immer wieder mit nem Roten Fenster ab.
Ich nehme an, das zuviele DBs offen sind und somit zuviel Speicher verbraten wird, hat jemand von euch ne alternative für meinen Code bzw. nen Rat wie ich zb. die geöffneten DBs wieder schließen kann (da es ja kein db.close gibt).

Ich hoffe die Fragestellung war klar.

Freue mich schon auf ne Antwort bis dann CU

P.S.

Der Code:

--- Code: --- 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

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 DB1 As NotesDatabase
Dim DB2 As NotesDatabase

Dim i As Integer
Dim DocNew As NotesDocument

Set DB1 = DBDir1.GetFirstDatabase(1246)

Print "Lade Daten vom Server " & Cstr(DB1.Server)

i = 0
If Not db1 Is Nothing Then
Do Until db1 Is Nothing
Err = 0
Call db1.Open("","")

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)
If Err <> 4060 Then
DocNew.ErstelltS1 = Cstr(db1.Created)
DocNew.GeaendertS1 = Cstr(db1.LastModified)
DocNew.FixUpS1 = Cstr(db1.LastFixup)
Else
DocNew.ErstelltS1 = "Keine Berechtigung"
DocNew.GeaendertS1 = "Keine Berechtigung"
DocNew.FixUpS1 = "Keine Berechtigung"
End If

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."

Set DB2 = DBDir2.GetFirstDatabase(1246)
DocNew.Server2 = db2.Server
Do Until db2 Is Nothing
If db1.FilePath = db2.FilePath Then
Err = 0
Call db2.Open("","")
DocNew.TitelS2 = db2.Title
DocNew.PfadS2 = db2.FilePath
DocNew.ReplikIDS2 = Cstr(db2.ReplicaID)
DocNew.groesseS2 = Cstr(db2.Size)
If Err <> 4060 Then
DocNew.ErstelltS2 = Cstr(db2.Created)
DocNew.GeaendertS2 = Cstr(db2.LastModified)
DocNew.FixUpS2 = Cstr(db2.LastFixup)
Else
DocNew.ErstelltS2 = "Keine Berechtigung"
DocNew.GeaendertS2 = "Keine Berechtigung"
DocNew.FixUpS2 = "Keine Berechtigung"
End If
Exit Do
End If
Set db2 = dbdir2.GetNextDatabase()
Loop

DocNew.Status = "Abgeschlossen"
Call DocNew.Save(True,False)

i = i +1
If i >= 5 Then Exit Do

Set db1 = dbdir1.GetNextDatabase()
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
--- Ende Code ---

WernerMo:
Hallo,

ich glaube, du kannst Dir viel Arbeit sparen, die Datenbank in der alle Datenbanken verzeichnet sind gibt es schon, diese heißt catalog.nsf.

Gruß Werner

C_T:
HI Werner,

danke für den Hinweis, die Datenbank kenne ich, doch:
1. ist die den 100% Aktuell?
2. es fehlen mir so auf den ersten Blick auch ein paar Daten die ich noch in meiner DB aufgelistet haben möchte. (z.B. zuletzt geändert, letztes FixUp etc.)

thomson666:
ist ein Servertask der die Aktualisiert

C_T:
hm ok  dannk kann ich das ja eigentlcih mache...

dennoch würde es mich interessieren warum ich nen rotes Fenster bekomme , bzw. wie ich das umgehen kann?

und hast du ne idee wie ich zb an das erstelldatum der db bzw das zuletzt geändert datum herankomme???


Danke dir

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln