Autor Thema: About Database Dokument von Datenbanken anzeigen  (Gelesen 3200 mal)

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
About Database Dokument von Datenbanken anzeigen
« am: 02.02.09 - 00:33:52 »
Halli hallo,

ich hab hier im Forum schon einiges über "About Database" Dokument anzeigen lassen gelesen.
Jedoch geht es da lediglich um das "About Database" Dokument der AKTUELLEN Datenbank.

Ich habe eine Datenbank, in der mehrere Datenbanken per Server und Dateiname, "registriert" sind. Jetzt soll noch ein Button rein, der das "About Database" Dokument einer ausgewählten Datenbank öffnent.
Ich habe jetzt was "Halblebiges" für einen Agenten gefunden:

Code
Sub Initialize
Dim db As NotesDatabase
Dim db_check As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim doc_about As NotesDocument
Dim doc_tmp As NotesDocument
Dim s As NotesSession
Dim uiws As NotesUIWorkspace
' ### initialize ###
On Error Goto errorhandler
Set s = New NotesSession
Set db = s.CurrentDatabase
' ### show the about database document of the selected databases ###
Set dc = db.UnprocessedDocuments
If dc.Count = 0 Then Goto terminate
Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
' get the about database document from the selected database
Set db_check = s.GetDatabase(doc.DBServer(0), doc.DBFilePath(0), False)
Set doc_about = db_check.GetDocumentByID("FFFF0002")
If doc_about Is Nothing Then Goto nextdoc
' create a temporary document to show the content
Set doc_tmp = db.CreateDocument
Call doc_about.CopyAllItems(doc_tmp)
doc_tmp.Form = "AboutDatabase"
' show temporary document
Set uiws = New NotesUIWorkspace
Call uiws.EditDocument(False, doc_tmp, True)
nextdoc:
Set doc = dc.GetNextDocument(doc)
Loop
' ### terminate ###
terminate:
Set uiws = Nothing
Set doc_tmp = Nothing
Set doc_about = Nothing
Set db_check = Nothing
Set doc = Nothing
Set dc = Nothing
Set db = Nothing
Set s = Nothing
Exit Sub
' ### error handling ###
errorhandler:
Messagebox "Module: " & "ShowAboutDatabase (Agent)" & Chr(10) & _
"Procedure: " & "Initialize" & Chr(10) & _
"Error: " & Error() & Chr(10) & _
"Code: " & Err() & Chr(10) & _
"Line: " & Erl & Chr(10), _
MB_OK + MB_ICONSTOP, _
db.Title
Stop
Resume terminate
End Sub

ABER!!! Wenn das Corpus Delicti Bilder enthält, die in der Quelldatenbank enthalten sind, werde diese nicht angezeigt.

Gibt es andere Wege oder Lösungen, wie ich das richtige, echte und unkopierte Dokument anzeigen lasse kann, ohne die Datenbank extra zu öffnen?


Gruß
Johnson
« Letzte Änderung: 02.02.09 - 00:35:24 von Johnson »
Gruß
Johnson

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #1 am: 02.02.09 - 01:09:35 »
Hallo Stefan,

ich sag mal nur: db.GetDocumentByID ("FFFF0002").

Von diesem Prinzip ausgehend geht so einiges. Deswegen Dokumente zu kopieren ist nicht der Bringer ...  ;)

Bernhard

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #2 am: 02.02.09 - 10:40:49 »
Das war mich schon klar. Und so habe ich es auch gemacht.

Das eignetliche Problem besteht darin, dass Bilder, die in dem About Datebase Dokument einer Datenbank "A" enthalten sind nicht dargestellt werden.

z.B. Kannst du mit folgendem Agenten das About Database Dokument deiner Mail-DB öffnen:

(! Zum Anzeigen muss noch eine Maske "AboutDatabase" erstellt werden, die ein RichTextFeld "Body" (Computed) enthält, das als Value den Inhalt von "$Body" anzeigen soll.)

Code
Option Public
Option Declare
%INCLUDE "lsconst.lss"
Sub Initialize
Dim db As NotesDatabase
Dim db_check As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc_tmp As NotesDocument
Dim doc_about As NotesDocument
Dim s As NotesSession
Dim uiws As NotesUIWorkspace
' ### initialize ###
On Error Goto errorhandler
Set s = New NotesSession
Set db = s.CurrentDatabase
' ### show the about database document of the selected databases ###
' get the about database document from the selected database
Set db_check = New NotesDatabase("", "")
Call db_check.OpenMail
Set doc_about = db_check.GetDocumentByID("FFFF0002")
If doc_about Is Nothing Then
Messagebox {The database } & db_check.Title & { has no "About Database" dokument!}, MB_OK + MB_ICONSTOP, db.Title
Goto terminate
End If
' create a temporary document to show the content
Set doc_tmp = db.CreateDocument
Call doc_about.CopyAllItems(doc_tmp)
doc_tmp.Form = "AboutDatabase"
' show temporary document
Set uiws = New NotesUIWorkspace
Call uiws.EditDocument(False, doc_tmp, True)
' ### terminate ###
terminate:
Set uiws = Nothing
Set doc_tmp = Nothing
Set doc_about = Nothing
Set db_check = Nothing
Set dc = Nothing
Set db = Nothing
Set s = Nothing
Exit Sub
' ### error handling ###
errorhandler:
Messagebox "Module: " & "ShowAboutDatabase (Agent)" & Chr(10) & _
"Procedure: " & "Initialize" & Chr(10) & _
"Error: " & Error() & Chr(10) & _
"Code: " & Err() & Chr(10) & _
"Line: " & Erl & Chr(10), _
MB_OK + MB_ICONSTOP, _
db.Title
Stop
Resume terminate
End Sub

Das About Database Dokument wird auch geöffnet. Alles wunderbar. Jedoch fehlt in der Überschrift das Bildchen. In diesem Fall mag das nicht so wichtig sein, aber es gibt Applikationen, die z.B. ein Bild der Datenbankstruktur oder Organigramme enthalten.
Gruß
Johnson

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #3 am: 02.02.09 - 10:54:59 »
Ich hätte mir mal Deinen Code genauer ansehen sollen, Johnson - Du machst das ja schon so wie ich dummerweise erneut vorgeschlagen habe. Sorry.

Warum kopierst Du eigentlich überhaupt das Dokument und öffnest nicht gleich das Original? Was passiert, wenn Du das ganze Dokument kopierst (unter der Massgabe, dass Du in der Ziel-DB bereits ein HelpAbout-Dokument hast, wird dabei ja auch eine neue NoteID vergeben)?

Bernhard

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #4 am: 02.02.09 - 11:48:19 »
Das Dokument direkt zu öffnen, war meine erste Lösung, als ich das Backend-Dokument hatte.
Dann kommt allerdings die Fehlermeldung: "Notes Error - The linked document cannot be found in the view"  :-\
Gruß
Johnson

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #5 am: 02.02.09 - 12:05:22 »
Ein Kollege hat es anders gelöst.

Code
@PostedCommand([FileOpenDatabase];DBServer:DBFilePath;"";"";"";"1");
@PostedCommand([HelpAboutDatabase]);
@PostedCommand([FileOpenDatabase];DBServer:DBFilePath;"";"";"";"1");
@PostedCommand([FileCloseWindow])

Aber Formelsprache hat mich dabei nicht wirklich überzeugt, denn ich muss die Datenbank erst öffnen...
Gruß
Johnson

Glombi

  • Gast
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #6 am: 02.02.09 - 12:12:02 »
Ich habe den Script Code ausprobiert und es wird alles korrekt angezeigt, auch das Bild.

Vielleicht wird in Eurem About Dokument eine Bildresource verwendet?

Andreas

Glombi

  • Gast
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #7 am: 02.02.09 - 12:14:56 »
Ein
Call uiws.EditDocument(False, doc_about)

produziert bei mir übrigens keine Fehlermeldung sondern die Red Box !

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #8 am: 02.02.09 - 12:18:11 »
Die Redbox hatte ich noch nicht, da ich eigentlich immer den dritten Parameter angebe.

Ja. Genau die Image-Resourcen werden nicht angezeigt.

Oder wenn das About Database Dokument mit HTML aufgebaut und mit einem Style Sheet formatiert wurde. Dann bekommt man nur das reine HTML.

Also ich frage mich, ob es möglich ist, eine About Database Dokument deine Datenbank zu öffnen, ohne die Inhalte oder es selbst zu kopieren?
Vielleicht per API oder so?
Gruß
Johnson

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #9 am: 02.02.09 - 12:39:37 »
Im Catalog macht es IBM Lotus mit einem DocLink. Das wäre auch noch eine Variante.

Bernhard

PS: Ich kann es aus Zeitmangel derzeit leider nicht nachbauen, vielleicht komme ich heut auf Nacht dazu.

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #10 am: 02.02.09 - 12:43:29 »
 >:D Ich hab's!!!

Das Feld "Body" meiner Maske "AboutDocument" bekommt jetzt nicht mehr den Inhalt von "$Body" sonder einen DocLink auf das About Dokument. Die Maske selbst soll den ersten DocLink aufführen (Maskeneingeschaft).

Den Code habe ich umgestellt:

Code
Sub Initialize
Dim db As NotesDatabase
Dim db_check As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc_tmp As NotesDocument
Dim doc_about As NotesDocument
Dim rti_body As NotesRichTextItem
Dim s As NotesSession
Dim uiws As NotesUIWorkspace
' ### initialize ###
On Error Goto errorhandler
Set s = New NotesSession
Set db = s.CurrentDatabase
' ### show the about database document of the selected databases ###
' get the about database document from the selected database
Set db_check = New NotesDatabase("", "")
Call db_check.OpenMail
Set doc_about = db_check.GetDocumentByID("FFFF0002")
If doc_about Is Nothing Then
Messagebox {The database } & db_check.Title & { has no "About Database" dokument!}, MB_OK + MB_ICONSTOP, db.Title
Goto terminate
End If
' create a temporary document and add a document link to the about database document
Set doc_tmp = db.CreateDocument
doc_tmp.Form = "AboutDatabase"
Set rti_body = doc_tmp.CreateRichTextItem("Body")
Call rti_body.AppendDocLink(doc_about, db_check.Title)
Call rti_body.Update
' show temporary document
Set uiws = New NotesUIWorkspace
Call uiws.EditDocument(False, doc_tmp, True)
' ### terminate ###
terminate:
Set uiws = Nothing
Set rti_body = Nothing
Set doc_tmp = Nothing
Set doc_about = Nothing
Set db_check = Nothing
Set dc = Nothing
Set db = Nothing
Set s = Nothing
Exit Sub
' ### error handling ###
errorhandler:
Messagebox "Module: " & "ShowAboutDatabase (Agent)" & Chr(10) & _
"Procedure: " & "Initialize" & Chr(10) & _
"Error: " & Error() & Chr(10) & _
"Code: " & Err() & Chr(10) & _
"Line: " & Erl & Chr(10), _
MB_OK + MB_ICONSTOP, _
db.Title
Stop
Resume terminate
End Sub

Und siehe da? Das Dokument wird so geöffnet, wie ich es haben wollte. Hehehe. Notes bietet doch immer irgend eine Lösung für das eigentlich simpelste Problem.
 ;)
Gruß
Johnson

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #11 am: 02.02.09 - 12:44:21 »
Genau Bernhard. ;D Warst bloß schneller beim posten.
Gruß
Johnson

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: About Database Dokument von Datenbanken anzeigen
« Antwort #12 am: 02.02.09 - 13:14:12 »
Nur der Vollständigkeit halber: Das mit dem DocLink funtioniert nur wenn die Zeildatenbank auch eine "Default view" hat. Ansonsten kommt die Meldung "Couldn't get default View id for database (xy.nsf)". So z.B. bei den Hilfe-Datenbanken des Notes Clients.
Gruß
Johnson

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz