Domino 9 und frühere Versionen > Entwicklung
Dokumenteninhalt aus Ansicht auslesen ohne zu öffnen
Thomas Schulte:
@Bernhard
Ja das mit dem Vierzeiler ist etwas übertrieben, aber da das Teil ja schon zu funktionieren scheint (woanders), müsste das eigentlich nur noch ein Problem des Zugriffs auf das Backend Dokument sein und das sollte dann wirklich einfach sein.
Thomas
koehlerbv:
@Thomas: Hast sicherlich wahr - ich hatte das gleich auf den gesamten Code bezogen statt auf den eigentlich nur noch erforderlichen Zusatz.
Bernhard
Escort:
--- Zitat von: koehlerbv am 27.08.04 - 11:14:37 ---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
--- Ende Zitat ---
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 ;)
Thomas Schulte:
--- Zitat von: Escort am 27.08.04 - 12:16:52 ---Wie schaut's jetzt mit dem Vierzeiler aus ;)
--- Ende Zitat ---
Herausforderung angenommen
--- Zitat von: Escort am 27.08.04 - 12:16:52 ---
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 workspace As New NotesUIWorkspace
Löschen -> Dim db As NotesDatabase
Löschen -> 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
Dim dc as notesdocumentcollection
Dim uiview As NotesUIView
Löschen -> Set db = session.CurrentDatabase
Set uiview = workspace.CurrentView
Set dc = uiview.Documents
Löschen -> Set view = db.GetView( "ProjnachProj" )
Löschen -> Kategorie =source.CaretCategory 'ermittle die Kategorie des doppelgeklickten Dokumentes z.B."1"
Löschen -> Set doc = view.GetDocumentByKey( Kategorie ) 'suche das Dokument mit der entsprechenden Kategorie "1"
Set doc = dc.GetFirstDocument
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
Call workspace.OpenDatabase ( Server, Filename, "", "", False, False ) 'öffne die Datenbank
Continue = False
Else
Continue = True 'öffne Projektblatt
End If
End Sub
--- Ende Zitat ---
5 Zeilen hinzugefügt, 6 Zeilen entfernt, macht -1 Zeilen, Versprechen gehalten und der Code ist so komplett unabhängig von egal welcher Ansicht.
Thomas
Escort:
--- Zitat von: Thomas Schulte am 27.08.04 - 13:26:34 ---
--- Zitat von: Escort am 27.08.04 - 12:16:52 ---Wie schaut's jetzt mit dem Vierzeiler aus ;)
--- Ende Zitat ---
Herausforderung angenommen
5 Zeilen hinzugefügt, 6 Zeilen entfernt, macht -1 Zeilen, Versprechen gehalten und der Code ist so komplett unabhängig von egal welcher Ansicht.
Thomas
--- Ende Zitat ---
SUPER!!!!
1000 DANK!!!!
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln