Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: HRaq am 09.07.03 - 13:18:29

Titel: Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: HRaq am 09.07.03 - 13:18:29
Hallo Leute,

ich möchte in einer bestimmten Ansicht per Lotus Script die Anzahl der Dokumente zählen und das Ergebnis in ein Feld einer Maske übertragen.
Ich bin seit Tagen am suchen....keine Lösung. Könnt Ihr mir bitte helfen?

Danke Henning
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: ata am 09.07.03 - 13:30:15
... wie hast du gesucht?

Spaß beiseite - hier mit einer Schleife alle Docs zählen:

Dim ws As New NotesUIWorkspace
Dim docThis As NotesDocument
Dim dbThis As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim counter As Long

Set docThis = ws.CurrentDocument.Document
Set dbThis = docThis.ParentDatabase
Set view = dbThis.GetView( "DerAnsichtsName" )
counter = 0

If not view Is Nothing Then
   Set doc = View.GetFirstDocument
   While Not doc Is Nothing
       counter = counter + 1
       Set doc = view.GetNextDocument(doc)
   Wend
End If
docThis.Dein_FeldName_Zur_Aufnahme_Der_Nummer = counter

... sollte ins aktuell geöffnete Dokument die Anzahl der Doc's aus der Ansicht in ein Feld schreiben...


ata
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: HRaq am 09.07.03 - 13:33:11
Hallo Ata,

danke für den Tipp, das Script werd ich einbauen und mal schauen, was passiert...

Wie ich gesucht Habe? Designer Hilfe, Programming Guide, AT-Notes (Entwicklung).....


Gruß Henning
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: HRaq am 09.07.03 - 13:42:18
Hallo Ata,

vielen Dank, es klappt.......


Gruß Henning
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: eknori am 09.07.03 - 13:44:35
geht zur Not auch mit einer Formel

@Prompt([OK];"Number of Elements";@Text(@Elements(@DbColumn( "" : "NoCache" ; "ServerName" : "Datenbnk.nsf" ; "Ansicht" ; 1 ))))

 ;D
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: eknori am 09.07.03 - 13:48:33
wobei man die Formel auch in Script darstellen kann...

Sub Click(Source As Button)
   Dim dummy As Variant
   dummy =    DbColumn ( "" ,  "NoCache" , "Servername" ,  "DevIdea.nsf" , "Alpha" ,  2 )
   NumOfDocsInView% =   Ubound ( dummy )  + 1
   Msgbox NumOfDocsInView%
End Sub



Function DBColumn(strClass As String, strNoCache As String, strServer As String, strDatabase As String, strView As String, numCol As Integer) As Variant
   quotes = Chr(34)
   strFormula = "@Left(@Trim( @DbColumn(" & quotes & strClass & quotes & ":" & quotes & strNoCache & quotes & ";" & quotes & strServer & quotes & ":" & quotes & strDatabase & quotes & ";" & quotes & strView & quotes & ";"  & numCol & "));1)"
   DbColumn = Evaluate( strFormula )
End Function
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: ata am 09.07.03 - 15:07:30
@Eknori

... deine DBColumn-Funktion ist pfiffig - wie sieht es im Vergleich zur Schleife mit der Performance aus - hast du Erfahrungswerte...

ata
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: eknori am 09.07.03 - 15:15:19
habe ich in diese Richtung nie getestet. Bei DBColumn gibt es aber eine Beschränkung, was die Anzahl der Daten (64 k ? )betrifft. Eignet sich daher nicht für Ansichten, die etliche Datensätze haben.

Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: HRaq am 10.07.03 - 07:04:22
Hallo Ata, hallo Eknori,

Ihr beiden seid echt klasse. Hätte nie gedacht, solche Ergebnisse auf meine Anfrage zu bekommen. Nochmals vielen Dank.

Gruß Henning
Titel: Re:Dokumente in Ansicht zählen und in ein Maskenfeld übernehmen
Beitrag von: Glombi am 10.07.03 - 09:03:04
Hi,
ich hätt auch noch einen, wenn's auch mit Verspätung ist  ;)

Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim vc As NotesViewEntryCollection
Set db = session.CurrentDatabase
Set view = db.GetView("Name der Ansicht)
Set vc = view.AllEntries
Messagebox vc.Count

Die Formel arbeitet allerdings mit der ViewEntry bzw. Collection Klassen. Mitunter erlebt man dabei die tollsten Dinge!
Besser ist, wenn die Ansicht nicht kategorisiert ist.
Die Formel müsste aber von der Performance her besser sein, wenn viele Dokumente in der View sind, da nicht iteriert wird.
Die 64 K Grenze sollte auch nicht gelten.

Andreas