Autor Thema: Dokument in anderer Datenbank öffnen  (Gelesen 3177 mal)

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Dokument in anderer Datenbank öffnen
« am: 01.11.05 - 19:48:42 »
Hi Folks,

ist es (per Script oder Formeln) möglich, ein Dokument in einer anderen Datenbank zu öffnen?

Hintergrund der Frage ist die Folgende: ich baue eine Stammdatenbank mit personenbezogenen Daten, welche in mehereren verschiedenen Datenbanken verwendet werden sollen. In jeder "Satellitendatenbank" gibt es ein Dokument, in dem ein eindeutiger Schlüssel zu jeder Person hinterlegt ist und welches, wenn man es öffnet, die aktuellen Daten aus der Stammdatenbank heranzieht. Nun hätte ich gerne eine Aktion, die es mir ermöglicht mit einem einfachen Knopfdruck das Dokument in der Stammdatenbank zu öffnen.

Kennt da jemand eine Lösung? Ein Aufruf von EditDocument des UIWS Objektes hilft mir nicht weiter, da gibt es eine Fehlermeldung "Invalid or nonexistent document"; bei der Methode kann ich leider keine Datenbank angeben, daher bezieht sie sich offensichtlich auf die aktuelle Datenbank.

Ich hoffe, ich habe mich verständlich ausgedrückt...  :-X

Viele Grüße
Harry
« Letzte Änderung: 03.11.05 - 13:17:40 von HarryB »
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Dokument in anderer Datenbank öffnen
« Antwort #1 am: 01.11.05 - 20:27:26 »
Das geht in LS und in @Formeln gleichermaßen gut.

LS:

Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )

Das NotesDocument-Object (also das richtige Dokument in der richtigen Datenbank) mußt Du dir natürlich vordem selber per Script suchen. Wenn Du das dann aber hast (z.B. per db.view.GetDocumentByKey ) ist die zugehörige Datenbank ja schon im NotesDocument-Object enthalten.

Funktioniert hier immer fehlerfrei.

@Formel:
Mit einer Kombination/Nacheinanderaufruf von

@Command( [FileOpenDatabase]; server : database  ; viewName ; key ; newinstance ; temporary )
(view sollte möglichst eine unkategorisierte ID View sein)

und

@Command( [EditDocument] ; mode; previewpane )

Gruß,
Uwe

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Dokument in anderer Datenbank öffnen
« Antwort #2 am: 03.11.05 - 10:48:04 »
LS:

Set notesUIDocument = notesUIWorkspace.EditDocument( [editMode] , [notesDocument] , [notesDocumentReadOnly] , [documentAnchor$] , [returnNotesUIDocument] , [newInstance] )

Das NotesDocument-Object (also das richtige Dokument in der richtigen Datenbank) mußt Du dir natürlich vordem selber per Script suchen. Wenn Du das dann aber hast (z.B. per db.view.GetDocumentByKey ) ist die zugehörige Datenbank ja schon im NotesDocument-Object enthalten.

Funktioniert hier immer fehlerfrei.
Komisch, genau das hat bei mir nicht funktioniert. Ich poste mal den Code, vielleicht mache ich ja irgendwo groben Unfug.

Code
Sub Click(Source As Button)
	
	Dim uiws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Dim matriculation As String
	
	Dim mddb As NotesDatabase
	Dim mddbView As NotesView
	Dim mddbDoc As NotesDocument
	
	Dim mddbServer As String
	Dim mddbName As String
	
	Set uidoc = uiws.CurrentDocument
	
	mddbServer = uidoc.FieldGetText("$mddbServer")
	mddbName = uidoc.FieldGetText("$mddbName")
	
	Set mddb = New NotesDatabase(mddbServer, mddbName)
	
	If (mddb Is Nothing) Then
		'Stammdatenbank nicht gefunden
	Else '(mddb Is Nothing)
		'Dokument in Stammdatenbank öffnen
		matriculation = uidoc.FieldGetText("matriculation")
		Set mddbView = mddb.GetView("peoplebymatriculation")
		Set mddbDoc = mddbView.GetDocumentByKey(matriculation, True)
		
		If (mddbDoc Is Nothing) Then
			'Dokument nicht gefunden
		Else
			'Dokument öffnen
			Call uiws.EditDocument(True,mddbDoc,False,,False,False)
		End If
		
	End If '(mddb Is Nothing)
	
End Sub

Bis zum Aufruf von EditDocument geht alles einwandfrei. Diesen Befehl bricht er allerding mit "invalid or nonexistent document" ab.

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline umi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.062
  • Geschlecht: Männlich
  • one notes to rule'em all, one notes to find'em....
    • Belsoft AG
Re: Dokument in anderer Datenbank öffnen
« Antwort #3 am: 03.11.05 - 11:17:14 »
Alternative via @Formel
@urlopen("notes:///__[ReplicaID derDB]/0/[DocumentUNiqueID]);

bzw. mit LS gehts auch
call uiws.urlopen("notes:///__ ...")


Gruss

Urs

<:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Jegliche Schreibfehler sind unpeabischigt
http://www.belsoft.ch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~:>

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Dokument in anderer Datenbank öffnen
« Antwort #4 am: 03.11.05 - 12:38:13 »
Hallo Harry,

ich habe Deinen Code mal ausprobiert und hatte auch die gleiche Fehlermeldung wie Du, obwohl das NotesDocument-Object laut Debugger ordentlich da war.

Der Code funktioniert jedoch sofort,
wenn Du den letzten Parameter von False auf den Default Wert True setzt

also anstelle von:
Call uiws.EditDocument(True,mddbDoc,False,,False,False)
änderst auf
Call uiws.EditDocument(True,mddbDoc,False,,False, True)   

Wahrscheinlich kann Notes das zu öffnende Dokument nicht im gleichen Fenster öffnen, z.B. weil er das gerade geöffnete erst speichern müßte oder so was. (geht aber auch aus dem Lesemodus heraus nicht, keine Ahnung)

Mit einer neuen Instance (neues Fenster), also mit der Parameter-Änderung, funktioniert Dein Code aber wunderbar.

Gruß,
Uwe

Offline datenbanken24

  • Senior Mitglied
  • ****
  • Beiträge: 390
  • Geschlecht: Männlich
  • Stammgast
    • datenbanken24
Re: Dokument in anderer Datenbank öffnen
« Antwort #5 am: 03.11.05 - 12:39:45 »
Und Umi's Tipp finde ich übrigens wirklich super.

Das macht alles doch noch viel einfacher.

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Dokument in anderer Datenbank öffnen
« Antwort #6 am: 03.11.05 - 13:17:24 »
Vielen Dank für eure Tipps.

Laut der Beschreibung von EditDocument in der Hilfe, hätte das aber so nicht passieren dürfen. ::)

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz