Autor Thema: About Database Dokument von Datenbanken anzeigen  (Gelesen 3036 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