Domino 9 und frühere Versionen > ND8: Entwicklung
Abfrage einer Ansicht per Dialogbox und speichern der Abfrage in einem Feld
MarkusL:
Hallo zusammen,
nachdem mir hier bei meinem letzten Problem so gut geholfen wurde, versuche ich es jetzt nochmal.
Leider habe ich bisher keine Lösung für mein Problem gefunden. (Ich habe wirklich lange gesucht)
Problemstellung:
Ich benötige in einer Maske eine Schaltfläche, die mir eine Dialogbox aufmacht, in welcher ich eine Ansicht aus der aktuellen Datenbank auswählen kann. Anschließend soll diese ausgewählte Ansicht in einem bestimmten Feld als Vorgabe abgespeichert werden.
Hierfür habe ich das foldende Script zusammengebastelt. Leider wird mir in der Dialogbox nur eine leere Auswahlmaske angezeigt. Ich habe keine Ahnung, warum?????
Bin für jede Hilfe dankbar.
Sub Click(Source As Button)
Dim session As New NotesSession
Dim wks As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim Doc As notesdocument
Dim db2 As NotesDatabase
Set uidoc = wks.CurrentDocument
Set doc = Uidoc.Document
Set db2 = session.currentdatabase
Views = db2.Views
I = -1
Forall V In Views
I = I + 1
Redim Preserve Ansichten ( 0 To I )
If Left(V.Name,1) = "(" Then I = I - 1 : Goto Skip
Ansichten( I ) = V.Name
Skip:
End Forall
doc.Views = Ansichten()
Ansicht=Evaluate(|Views|,doc)
Call doc.ReplaceItemValue("Views",SortedArray)
Ansicht=Evaluate(|Views|,doc)
Ansicht = wks.Prompt(4, "Ansichten....", "Bitte wählen Sie die zu exportierende Ansicht", Ansicht(0), Ansicht)
If Ansicht <> "" Then
uidoc.FieldSetText("Ansicht"), Ansicht
uidoc.Refresh
Dim View As NotesView
Set View = db2.GetView(Ansicht)
Dim Formula As String
Formula = view.SelectionFormula
uidoc.FieldSetText("ViewFormula"),Formula
End If
End Sub
koehlerbv:
Was meinst Du denn, was diese Zeilen bewirken:
--- Code: ---Ansicht=Evaluate(|Views|,doc)
Call doc.ReplaceItemValue("Views",SortedArray)
--- Ende Code ---
Bernhard
Peter Klett:
Bernhard war schneller ...
Falls Du noch etwas anderes optimieren willst, finde ich dieses Konstrukt nicht gerade geglückt
Forall V In Views
I = I + 1
Redim Preserve Ansichten ( 0 To I )
If Left(V.Name,1) = "(" Then I = I - 1 : Goto Skip
Ansichten( I ) = V.Name
Skip:
End Forall
Wie wäre es denn damit:
Forall V In Views
If Left(V.Name,1) <> "(" Then
I = I + 1
Redim Preserve Ansichten ( 0 To I )
Ansichten( I ) = V.Name
End If
End Forall
MarkusL:
Hallo,
vielen Dank für die Hilfe. Mit euren Hinweisen und Verbesserungsvorschlägen läuft das Script jetzt.
Noch eine Frage: Wie kann ich hier einen Eintrag als erledigt kennzeichnen? Ich habe bisher keinen Button oder ähnliches gefunden.
Hier nochmal das komplette Script:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim wks As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim Doc As notesdocument
Dim db2 As NotesDatabase
Set uidoc = wks.CurrentDocument
Set doc = Uidoc.Document
Set db2 = session.currentdatabase
Views = db2.Views
Forall V In Views
If Left(V.Name,1) <> "(" Then
I = I + 1
Redim Preserve Ansichten ( 0 To I )
Ansichten( I ) = V.Name
End If
End Forall
doc.Views = Ansichten()
Ansicht=Evaluate(|Views|,doc)
Ansicht = wks.Prompt(4, "Ansichten....", "Bitte wählen Sie die zu exportierende Ansicht", Ansicht(0), Ansicht)
If Ansicht <> "" Then
uidoc.FieldSetText("Ansicht_Export"), Ansicht
uidoc.Refresh
End If
End Sub
koehlerbv:
Ich verstehe immer noch nicht, wozu Du dieses krude Konstrukt verwendest:
Ansicht=Evaluate(|Views|,doc)
Und wozu brauchst Du das Item "Ansichten" in doc?
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln