Domino 9 und frühere Versionen > ND8: Entwicklung

Abfrage einer Ansicht per Dialogbox und speichern der Abfrage in einem Feld

(1/3) > >>

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