Autor Thema: Aktuelle Ansicht mit Script auslesen  (Gelesen 1401 mal)

kuschli

  • Gast
Aktuelle Ansicht mit Script auslesen
« am: 14.03.05 - 11:48:57 »
Hallo!

Ich möchte mittels Script die aktuell geöffnete Ansicht auslesen, um den Namen in einer Variablen weiter im Script verwenden zu können.

Aber ich finde im Moment nicht den passenden Script dazu.

Könnt Ihr mit weiterhelfen??

Gruß,
kuschli

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Aktuelle Ansicht mit Script auslesen
« Antwort #1 am: 14.03.05 - 11:51:46 »
NotesUIWorkspace.CurrentView.Name dürfte sein, was Du suchst.

Bernhard

kuschli

  • Gast
Re: Aktuelle Ansicht mit Script auslesen
« Antwort #2 am: 14.03.05 - 12:48:11 »
Das ist es, glaube ich, nicht ganz.

Also, ich habe einen Agenten, der einen Script zum Datenexport nach Excel beinhaltet. Bisher ist es so, daß ich einer Schaltfläche in der Ansicht sage, nutz jetzt diesen Agenten @Command([ToolsRunMacro];"Excel") und im Agenten direkt der Name dieser Ansicht eingegeben ist.

Nun möchte ich dem User die Möglichkeit geben, nicht eine bestimmte Ansicht, sondern die aktuelle Ansicht zu exportieren und dazu muss sich an der entsprechenden Stelle dann der aktuelle Ansichtsname setzen.

Hier mal der Code:

Sub Initialize
      'Create an Excel Spreadsheet from any view
     '11/3/2000 Art Yates
   Dim Session As New NotesSession ,db As NotesDatabase
   Dim sourceview As NotesView,sourcedoc As NotesDocument
   Dim dataview As NotesView, dc As NotesDocumentCollection
   Dim datadoc As NotesDocument, maxcols As Integer
   Dim WS As New Notesuiworkspace
   Dim ViewString As String, Scope As String, GetField As Variant
   Dim C As NotesViewColumn, FieldName As String, K As Integer,N As Integer
   Dim xlApp As Variant, xlsheet As Variant, rows As Integer, cols As Integer
   Dim nitem As NotesItem       , entry As NotesViewEntry, vwNav As NotesViewNavigator
   Dim ShowView()  As Variant, i As Integer, VList As Variant, ColVals As Variant
   
   Set db = session.CurrentDatabase   'link to current database
   
       'fetch then display a list of views in the database
   Vlist= db.views
   K=Ubound(Vlist)  'get size of list
   Redim Preserve ShowView(K)
   N=-1
   For i = 0 To K
      If Len(Vlist(i).Name) >0 Then      
         FieldName=Trim(Vlist(i).Name)
         If Mid(Fieldname,1,1) <>"(" Then  'do not show hidden views
            N=N+1                           
            ShowView(N) = FieldName
         End If
      End If      
   Next i      
   Redim Preserve ShowView(N)
     'now sort the list - by default views are listing in the order that they were created
   For i=0 To N
      For K=i To N
         If  ShowView(i) > ShowView(k) Then
            FieldName=ShowView(i)      
            ShowView(i) = ShowView(k)
            ShowView(k)=FieldName
         End If
      Next k
   Next i      
   
   viewstring= "Ansichtsname"
   If Len(viewstring)=0 Then Exit Sub
   
   Set dataview = db.getview(viewstring)  'get selected view
   
   Set vwnav= dataview.createViewnav()
   
   rows = 1
   cols = 1
   maxcols=dataview.ColumnCount  'how many columns?
   
   Set xlApp = CreateObject("Excel.Application")  'start Excel with OLE Automation
   xlApp.StatusBar = "Creating WorkSheet. Please be patient..."
   xlApp.Visible = True
   xlApp.Workbooks.Add
   xlApp.ReferenceStyle = 2
   Set xlsheet = xlApp.Workbooks(1).Worksheets(1)   'select first worksheet
   
       'worksheet title
   xlsheet.Cells(rows,cols).Value ="View: " + ViewString + ", from Database: " +  db.title +",  Extract created on: " +  Format(Now,"mm/dd/yyyy HH:MM")
   
   xlApp.StatusBar = "Creating Column Heading. Please be patient..."
   
   rows=2        'column headings starts in row 2
   For K=1 To maxcols
      Set c=dataview.columns(K-1)
      xlsheet.Cells(rows,cols).Value = c.title
      cols = cols + 1
   Next K
   
   Set entry=vwnav.GetFirstDocument
   rows=3   'data starts in third row
   Do While Not (entry Is Nothing)
      
      For cols=1 To maxcols      
         colvals=entry.ColumnValues(cols-1)       'subscript =0
         scope=Typename(colvals)
         Select Case scope
         Case "STRING"
            xlsheet.Cells(rows,cols).Value ="'" +  colvals
         Case Else      
            xlsheet.Cells(rows,cols).Value = colvals
         End Select                    
      Next cols             
      xlApp.StatusBar = "Importing Notes Data   -    Document " & rows-1 '& " of " & dc.count & "." 
      rows=rows+1
      Set entry = vwnav.getnextdocument(entry)             
   Loop
   
   xlApp.Rows("1:1").Select
   xlApp.Selection.Font.Bold = True
   xlApp.Selection.Font.Underline = True
   xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select
   xlApp.Selection.Font.Name = "Arial"
   xlApp.Selection.Font.Size = 9
   xlApp.Selection.Columns.AutoFit
   With xlApp.Worksheets(1)
      .PageSetup.Orientation = 2
      .PageSetup.centerheader = "Report - Confidential"
      .Pagesetup.RightFooter = "Page &P" & Chr$(13) & "Date: &D"
      .Pagesetup.CenterFooter = ""
   End With
   xlApp.ReferenceStyle = 1
   xlApp.Range("A1").Select
   xlApp.StatusBar = "Importing Data from Lotus Notes Application was Completed."
       'xlapp.ActiveWorkbook.saveas "c:VX" + Trim(Format(Now,"yyy"))   'save with generated name
   dataview.clear      
   
   Set xlapp=Nothing   'stop OLE
   Set db=Nothing
End Sub

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Aktuelle Ansicht mit Script auslesen
« Antwort #3 am: 14.03.05 - 18:53:55 »
Hi,

das sollte es aber doch sein. Allerdings muss es heissen:

NotesUIWorkspace.CurrentView.ViewName


So sollte das funktionieren:

...
viewstring= ws.CurrentView.ViewName
If Len(viewstring)=0 Then Exit Sub
   
Set dataview = db.getview(viewstring)  'get selected view
...


Axel
   
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz