'Datenbank Öffnen' Dialog

Hallo Notes-Experten,

ich suche nach einer Möglichkeit, Servername und Pfad einer Datenbank durch einen Benutzer auswählen zu lassen (wie im Dialog „Datenbank Öffnen“). Die Datenbank sollte jedoch nicht (sichtbar) geöffnet werden.

Alles, was ich bisher gefunden habe, ist eine API-Funktion, die aber lediglich lokale Dateien auflistet:
http://www.keysolutions.com/NotesFAQ/canget.html
Hiermit komme ich leider nicht auf die Notes-Server.

Wenn man den Dialog, den der Notes-Client verwendet, nicht aufrufen kann, gibt es dann eine Möglichkeit, eine Liste der Datenbanken von einem Server auszulesen?

CU
Markus

Hallo Markus,

was ist denn mit dem datenbank-katalog (catalog.ntf)?
da gibt’s doch die möglichkeit eine datenbank auszuwählen und als symbol hinzuzufügen.

grüße,
marcus

was ist denn mit dem datenbank-katalog (catalog.ntf)?
da gibt’s doch die möglichkeit eine datenbank auszuwählen und
als symbol hinzuzufügen.

Hallo Marcus,

ich entwickle eine Dokumentations-Datenbank. Jede DB, die in diese Doku-DB aufgenommen werden soll, wird durch ihren Server und ihren Pfad beschrieben. Für einen Teil der Datenbanken kann ich diese Angaben aus dem DB-Katalog lesen, jedoch nicht für alle. Ich öffne anschließend die DB im Backend und lese die benötigten Informationen.

Da es sich um mehr als 1500 DBs handelt, muss dieser Vorgang unbedingt im Backend ablaufen. Auch eine Kachel auf dem Notes-Desktop pro hinzugefügter DB ist nicht akzeptabel.

Die möglichen Server kann ich aus dem Adressbuch entnehmen. Ich möchte dem Benutzer aber auch noch das Tippen der Pfadangabe abnehmen - eben wie im Dialog „Datenbank öffnen“.

CU
Markus

Guten Morgen Markus,

na dann sag das doch gleich :wink:))

hier mal ein script dazu, was ich vor geraumer zeit für etwas ähnliches verwendet habe. das zeug kommt in einen agent und erzeigt für jede gefundene datenbank (auch die unsichtbaren) ein dokument mit der information und acl über diese datenbank. da es sich bei dir um mehrere server handelt, müßte es noch um die abfrage der names.nsf nach den servern erweitert werden.
hoffe es hilft!

grüße,
marcus

Dim server As String
’ serverauslesegebastel in schleife
server=„XXXXXXXXXX“
Dim dbdir As New NotesDBDirectory(server)
Dim db As NotesDatabase
Dim acl As notesacl
Dim entry As NotesACLEntry
’ db - gefundene datenbanken
Set db = dbdir.GetFirstDatabase(DATABASE)
On Error Resume Next
Dim s As New notessession
’ db2 - dokudatenbank
Dim db2 As notesdatabase
Dim doc As notesdocument
Set db2 = s.currentdatabase
zahl = 0
eintrag = „“
While Not db Is Nothing
Call db.Open( „“, „“ )
Set acl = db.acl
Set fentry = acl.getfirstentry
eintrag = fentry.name
While Not fentry Is Nothing
eintrag = eintrag + Chr$(13) + fentry.name
Set fentry = acl.getnextentry(fentry)
Wend
zahl = zahl +1
Print db.title + " " + zahl
Set doc = db2.createdocument
doc.form = „databasescan“
doc.databasetitel = db.Title
doc.databasename = db.filename
doc.databasepath = db.filepath
doc.databaseuse = db.percentused
doc.databasekb = db.size
doc.databaseacl = eintrag
eintrag = „“
doc.databasemanager = db.managers
Call doc.save (True, True)
Set db = dbdir.GetNextDatabase
Wend

hier mal ein script dazu, was ich vor geraumer zeit für etwas
ähnliches verwendet habe. das zeug kommt in einen agent und
erzeigt für jede gefundene datenbank (auch die unsichtbaren)
ein dokument mit der information und acl über diese datenbank.
da es sich bei dir um mehrere server handelt, müßte es noch um
die abfrage der names.nsf nach den servern erweitert werden.

Hallo Marcus!

Vielen Dank für den Tipp mit dem NotesDBDirectory. Das Objekt kann ich sehr gut verwenden, um die Hauptdokumente meiner Doku-DB anzulegen.

Was das manuelle Einpflegen einer DB angeht, habe ich mittlerweile genau das gefunden, was ich gesucht habe:
@Prompt([CHOOSEDATABASE];…)

Diese Formel liefert exakt den „Datenbank öffnen“-Dialog - funktioniert aber erst ab Notes R5. Momentan arbeite ich noch mit R4, aber wir stellen auf R6 um. Damit ist mein Problem dann in Zukunft gelöst.

CU
Markus

Hallo Markus,

freut mich daß ich helfen konnte! dann noch viel spaß beim basteln!

gruß und schönes wochenende,
marcus

nur aus neugier…

ich entwickle eine Dokumentations-Datenbank. Jede DB, die in
diese Doku-DB aufgenommen werden soll, wird durch ihren Server

also sowas wie den catalog unter R5 ?!

und ihren Pfad beschrieben. Für einen Teil der Datenbanken
kann ich diese Angaben aus dem DB-Katalog lesen, jedoch nicht
für alle. Ich öffne anschließend die DB im Backend und lese

warum nicht für alle ? wenn dein Agent auf dem Server (im backend) läuft, kann er lokal auf alle DBs zugreifen.

Die möglichen Server kann ich aus dem Adressbuch entnehmen.

und was machst du mit den informationen ? Wenn dein agent auf einem client läuft kann er nicht auf alle Server-DBs zugreifen (ACL) und wenn er auf einem Server läuft, kann er keine DBs eines anderen Servers öffnen.

ich an deiner stelle würden den catalog nehmen - ich habe z.b. ein API-Program geschrieben, welches alle .ntf’s und .nfs’s zwangsweise in den catalog aufnimmt; dann muß man nur warten bis der catalog-task durchgelaufen ist und man hat eine wunderbare Übersicht über alle DBs einschließlich ACL etc.
Wenn man dann noch den Katalog modifziert sieht man informationen, die im stino Katalog nicht zu sehen sind (template namen z.b.)

CU
Markus

STK

Hallo Stefan!

ich entwickle eine Dokumentations-Datenbank. Jede DB, die in
diese Doku-DB aufgenommen werden soll, wird durch ihren Server

also sowas wie den catalog unter R5 ?!

Meinst Du den Datenbankkatalog (catalog.nsf)? Ich kenne nur den von Notes R4.
Im Prinzip wird die DB ähnlich. Sie enthält jedoch wesentlich mehr Informationen, die auch von den Entwicklern und den Admins einzupflegen sind.

und ihren Pfad beschrieben. Für einen Teil der Datenbanken
kann ich diese Angaben aus dem DB-Katalog lesen, jedoch nicht
für alle. Ich öffne anschließend die DB im Backend und lese

warum nicht für alle ? wenn dein Agent auf dem Server (im
backend) läuft, kann er lokal auf alle DBs zugreifen.

Bei uns sind bewußt nicht alle Datenbanken in den Katalog aufgenommen. Da die Nutzer Zugriff auf den Katalog haben, kann ich ihn nicht für meine Dokumentationszwecke „mißbrauchen“.

Die möglichen Server kann ich aus dem Adressbuch entnehmen.

und was machst du mit den informationen ? Wenn dein agent auf
einem client läuft kann er nicht auf alle Server-DBs zugreifen
(ACL) und wenn er auf einem Server läuft, kann er keine DBs
eines anderen Servers öffnen.

Das ist ein interessanter Hinweis. Ein Agent soll das initiale Füllen der DB übernehmen (ein Hauptdokument pro DB anlegen). In diesem Dokument werden alle relevanten Informationen gespeichert, die per Skript ermittelbar sind.

Entweder werde ich diesen Agenten mit einer Admin-ID auf einem Client starten oder ich starte ihn in Repliken der DB auf den verschiedenen Servern. Eigentlich wären das einige hundert Server, aber zum Glück laufen alle externen Server über einen Replikations-Hub, sodass ich auf diesem alle extern verfügbaren Datenbanken abgreifen kann.

CU
Markus