Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Hatschi am 23.07.09 - 10:56:31
-
Hallo,
mein Script funktioniert nicht wie gewünscht.
Ich habe ein Doklink in einem Dokument. Das verlinkte Dokument möchte ich aber nicht öffnen, sondern eine bestimmte Ansicht. Dabei soll der Cursor aber auf das verlinkte Dokument positioniert werden.
Bei mir wird aber immer nur die Vorgabeansicht geöffnet, und nicht die von mir gewünschte Ansicht. Ich habe schon versucht die Ansicht über ihren Namen zu öffnen, als auch über den Alias. Beides funktioniert nicht.
Beide Versuche mit OpenDatabase und OpenView öffnen nur die Vorgabeview.
Hat jemand eine Idee wie ich im Frontend die View wechsel und auf das verlinkte Dokument positioniere?
Hier noch mein Script. Vielen Dank für Anregungen.
Sub Initialize
'Datenbank im Doklink öffnen, und View positionieren
Dim DbHier As NotesDatabase
Dim DocHier As NotesDocument
Dim RtItemHier As notesrichtextitem
Dim NaviHier As notesrichtextnavigator
Dim DoklinkHier As Variant
Dim uiws As notesuiworkspace
Dim uidb As NotesUIDatabase
Dim uiview As notesuiview
Dim uidoc As notesuidocument
Dim db As notesdatabase
Dim doc As NotesDocument
'offenes Dokument holen
Set uiws = New NotesUIWorkspace
Set uidoc = uiws.CurrentDocument
Set DocHier = uidoc.Document
'Doklink holen
Set RtItemHier=DocHier.GetFirstItem("Notes_Link")
Set NaviHier=RtitemHier.createnavigator
If NaviHier.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
Set DoklinkHier = NaviHier.GetElement
'verlinkte Datenbank holen
Set db = New notesdatabase ("","")
Call db.OpenByReplicaID(DokLinkHier.serverhint, DokLinkHier.DBReplicaID )
'verlinktes Dokument holen
Set Doc=db.GetDocumentByUNID(DoklinkHier.docunid)
'verlinkte Datenbank im Frontend öffnen
Call uiws.OpenDatabase(db.Server, db.FilePath, "SortiertA1")
Print "DB geöffnet. Aktuelle View: " + uiws.CurrentView.View.Name 'Ist leider die Vorgabeview
'weil die gewünschte View nicht geöffnet wird ein weiterer Versuch
Set uidb=uiws.CurrentDatabase
Print uidb.Database.FilePath 'es ist wie gewünscht die verlinkte Datenbank
Call uidb.OpenView("SortiertA1")
Print "View gewechselt auf " + uiws.CurrentView.View.Name 'leider immer noch die Vorgabeview
'positionieren auf das verlinkte Dokument
Set uiview=uiws.CurrentView
Call uiview.SelectDocument(doc) 'es wird auch nicht auf das gewünschte Dokument positioniert
End If
End Sub
-
Hallo,
Nur mal so ein Frage.
Durch was fuer eine Aktion loest Du denn Dein Script aus?
Wenn Der User nur auf den Dok-Link klickt dann wird Dein Script doch nicht ausgefuehrt und Notes mach genau das was in einem solchen Fall immer passiert.
Dok-Link = oeffne das verlinkte Dokument.
Andreas
-
Hallo Andreas,
das ist ein Agent, der von dem geöffneten Dokument (das mit dem Doklink), als Aktion gestartet wird.
Bernd
-
Hi Andreas,
der call 'Notesuiworkspace.OpenDatabase:
Call uiws.OpenDatabase(db.Server, db.FilePath, "SortiertA1")
Print "DB geöffnet. Aktuelle View: " + uiws.CurrentView.View.Name 'Ist leider die Vorgabeview
ist etwas 'Fatal' in Lotus Notes, kommentier das mal aus!
Hintergrund:
Ich habs bissher auch noch nie geschafft, damit das UI-Database Objekt im Script zurückzubekommen,
noch schlimmer, er verweigert dir auch noch weitere funkionen auf die UIDatabase, die du öffnen wolltest.
Und das geht auch oft nicht, wie gewünscht,
Set uiview=uiws.CurrentView
Call uiview.SelectDocument(doc) 'es wird auch nicht auf das gewünschte Dokument positioniert
da damit nur eine Markierung, nicht aber deine "Auswahbox" (wie du es möchtest) in der UI des NotesClient gesetzt wird.
Deine Variante geht dann eigentlich nur über den NotesUIView die NotesUIDatabase, bei der du als 'Select' noch anhand der ersten sortierten Spalte das Dokument 'Suchen' must.
(bereits im Call NotesUIWorkspace.OpenView(....) -> schau in der help)
Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )
Gruss, Pete(r)
Nachtrag, Korrektur: 23.7.09
hab das object NotesUIDatabase mit 'view$' und 'key$' gemeint, aber leider NotesUIView geschrieben, - man wird eben nicht jünger...
-
Hi Pete(r),
Nicht mein Problem sonder das von Bernd (Hatschi).
Und eine Auswahlbox moechte Bernd glaube ich auch nicht, sonder er moechte "nur" die entsrprechende View oeffnen und den "Markierungsbalken" auf das betreffende Dokument setzen.
Andreas
-
Hallo Pete(r),
das auskommentieren von
Call uiws.OpenDatabase(db.Server, db.FilePath, "SortiertA1")
geht doch nicht, weil ich es doch brauche um die Datenbank im Frontend zu öffnen. Oder wie kann ich die Datenbank sonst öffnen?
Danke für den Hinweis, das ich zumindest nicht alleine mit dem uiws.OpenDatabase da stehe. Das scheint ja dann ein Feature von Notes zu sein.
Ok, dann kann ich den
Call uiview.SelectDocument(doc)
ebenfalls vergessen, wenn er den Cursor nicht zum gewünschten Dokument positioniert.
Mit deinem letzten Hinweis "(bereits im Call NotesUIWorkspace.OpenView(....) -> schau in der help)" meintest du bestimmt den Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp ).
Da habe ich aber meine Probleme mit, weil die Ansicht 5 kategorisierte Spalten hat. Die Hilfe verstehe ich so, daß nur die erste Kategorie berücksichtigt wird. Und genau diese Klickerei durch die 5 Kategorien sind es ja die ich weg haben möchte.
Oder kann ich die anderen Kategorien als Array oder Liste angeben?
Bernd
-
Hallo Andreas,
du hast Recht. Ich möchte nur den Markierungsbalken positionieren und mir die Klickerei durch 5 Kategorien vereinfachen.
Bernd
-
Hi Bernd,
Ja das meinte ich,
Mit deinem letzten Hinweis "(bereits im Call NotesUIWorkspace.OpenView(....) -> schau in der help)" meintest du bestimmt den Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp ).
erste 'sortierte Spalte' geht, aber leider nicht mehrere kategorisierte Spalten: (die ich irgendwie schon funktional gehabt hätte)
Da habe ich aber meine Probleme mit, weil die Ansicht 5 kategorisierte Spalten hat. Die Hilfe verstehe ich so, daß nur die erste Kategorie berücksichtigt wird. Und genau diese Klickerei durch die 5 Kategorien sind es ja die ich weg haben möchte.
Oder kann ich die anderen Kategorien als Array oder Liste angeben?
Einziges was mir da noch als Krücke einfällt, dass du in der ziel-Ansicht eine Spalte, mit der primären Sortierung einbauen könntest, auf die Du per Key referenzierst, aber das könnte auch nicht so klappen wie du es Dir vorstellst.
Gruss, Pete(r)
-
Hallo Pete(r),
eine führende Spalte würde mir aber die komplette Sortierung der Ansicht verwürfeln. Das kann ich nicht machen.
Ich wollte sogar schon alle Dokumente von oben nach unten ablatschen und dann bei dem gesuchten stehen bleiben. Aber bei 100.000 Dokumenten scheint mir das keine Lösung zu sein.
Bernd
-
Kurz und prägnant: Das geht nicht. Vergiss es.
Wenn einer eine gegenteilige Lösung veröffentlicht, wird ihm mein ewiger Dank nachschleichen (es sei denn, es ist irgend welches Geraffel über ein proprietäres OS - das ist ja einfach gemacht und allgemein dann nicht zu gebrauchen).
Bernhard
-
Hallo Bernhard,
danke für den abschließenden Kommentar. Dann verwerfe ich meine Idee und klicke mich weiter durch die Kategorien.
Bernd