Na, ein Vierzeiler wird das nicht Thomas.
Aber irgendwie erinnert mich das ganze an diesen aktuellen Thread:
http://www.atnotes.de/index.php?board=3;action=display;threadid=17803
Dort soll ja auch - statt ein Dokument zu öffnen - etwas anderes ausgeführt werden.
HTH,
Bernhard
Wenns wirklich so einfach ist, bin ich über jede Hilfe sehr dankbar!
Im Prinzip brauch ich sowas, wie im Link von "koehlerbv" beschrieben wird.
Also nochmals zur Erklärung:
------------------------------------
Das Portal enthält Dokumente, die wiederum die sg. Basisinformationen für jedes Projekt beinhalten (Projektnummer, Projekttitel, User, ReplikID der entsprechenden Datenbank, etc.).
Jedes Projekt ist eine eigene Nsf-Datei!
Dieses Portal hat jetzt versch. Ansichten der Dokumente:
1) Ansicht nach Projektnr
Projektnr Titel User ReplikID
1 Prj1 A 1111
2 Prj2 A 2222
3 Prj3 B 3333
... .... ... ......
2) (kategorisierte) Ansicht nach User
User Projektnr Titel ReplikID
>A 1 Prj1 1111
2 Prj2 2222
>B 3 Prj3 3333
Funktionalität:
------------------
*)Wenn ich ein Dokument in der Ansicht markiere und den Button "Projektblatt bearbeiten" klicke, so soll das entsprechende Dokument (Projektblatt) geöffnet werden.
*)Wenn ich ein Dokument in der Ansicht doppelklicke, so soll die dementsprechende Datenbank geöffnet werden. (Anm: normalerweise wird ja mittels Doppelklick das Dokument geöffnet, aber das will ich ja nicht --> ich hab da ein bisschen gebastelt)
Jetzt zu meiner Ausführung:
-----------------------------------
ad1)
In dieser Ansicht gibt es einen Button "Projektblatt bearbeiten".
Wenn ich ein Dokument markiere und auf diesen Button klicke, offnet sich das Projektblatt!
Wenn ich in der Ansicht auf ein Dokument doppelklicke, springe ich in die demenstprechende Datenbank und öffne diese.
Sourcecode Ansicht nach Projektnummer:
Declarations: Dim OpenFlag As Integer
Initialize:Sub Initialize
OpenFlag =0
End Sub
Button "Projektblatt bearbeiten"
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
OpenFlag=1
Set uidoc = workspace.EditDocument( True )
OpenFlag = 0
End Sub
Sub Queryopendocument(Source As Notesuiview, Continue As Variant
If (OpenFlag =0) Then 'Öffne die Datenbank nach Doppelklick auf Dokument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim ProjectID As Variant
Dim Server As String
Dim ProjektePath As String
Dim Filename As String
Dim Kategorie As Variant
Dim ProjectIDString As String
Set db = session.CurrentDatabase
Set view = db.GetView( "ProjnachProj" )
Kategorie =source.CaretCategory 'ermittle die Kategorie des doppelgeklickten Dokumentes z.B."1"
Set doc = view.GetDocumentByKey( Kategorie ) 'suche das Dokument mit der entsprechenden Kategorie "1"
ProjectID = doc.GetItemValue( "ProjectID" ) 'ermittle die ProjectID des gefundenen Dokumentes
ProjectIDString = ProjectID(0)
Server = session.GetEnvironmentString("Server", False)
ProjektePath = session.GetEnvironmentString("DefaultDir", False)
Filename = ProjektePath & ProjectIDString
Dim workspace As New NotesUIWorkspace
Call workspace.OpenDatabase ( Server, Filename, "", "", False, False ) 'öffne die Datenbank
Continue = False
Else
Continue = True 'öffne Projektblatt
End If
End Sub
ad2)
hier habe ich jetzt das Problem, dass mir CaretCategory nur den User liefert (also den Inhalt der 1. Spalte) - aber dieser kann ja mehrere Pojekte angelegt haben --> er öffnet mir immer das jeweils erste Projekt des betreffenden Users.
Frage:
Wie kann ich jetzt die ReplikID eruieren, ohne irgendwie sichtbar für den User das Projektblatt öffnen zu müssen?
Variante 1:
In der Ansicht ad2) verwende ich in Spalte 1 nicht nur den User sondern User&Projektnummer (ich mach dazwischen einfach einige Leerzeichen und mach die Spalte nur so breit, dass man gerade noch den User lesen kann).
Dann funktioniert obiger Sourcecode auch!
Problem:
Ich kann die Ansicht nicht kategorisiert darstellen sondern nur in der folgenden Form:
User Projektnr Titel ReplikID
A 1 Prj1 1111
A 2 Prj2 2222
B 3 Prj3 3333
Variante2:
Ich öffne das Projektblatt --> lese die RepliID aus --> veranlasse in der Maske das Öffnen der Datenbank --> schliesse das Projektblatt.
Da müsste ich aber dann irgendwie eine globale Variable an die Maske des Projektblatts übergeben, die dann aufgrund der Variablen das schliessen der Maske veranlasst, da ich ja dann den dementsprechenden Code in die Maske einfügen und von DORT das Datenbankenöffen veranlassen muss. Bei ad1) kann ich das Öffnen der Datenbank ja in der Ansicht implementieren.
Soweit meine Ausführung!
Wie schaut's jetzt mit dem Vierzeiler aus