Autor Thema: Ungelesene Dokumente in einer View  (Gelesen 3452 mal)

elajen

  • Gast
Ungelesene Dokumente in einer View
« am: 25.08.04 - 12:10:33 »
Hallo Zusammen,

kann mir jemand sagen, wie ich per Script die Anzahl ungelesener Dokumente in einer bestimmten Ansicht ermitteln kann?

Danke für jede Antwort.

Gruß von Ekki.

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Ungelesene Dokumente in einer View
« Antwort #1 am: 25.08.04 - 13:02:08 »
Meines Wissens kommt man an die Unread-Markierungen nur mit API ran, ist also so nicht lösbar
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline pedsola

  • Aktives Mitglied
  • ***
  • Beiträge: 128
  • Geschlecht: Männlich
    • anders und sehr GmbH - Internetagentur und eCollaboration
Re:Ungelesene Dokumente in einer View
« Antwort #2 am: 25.08.04 - 13:10:17 »

jau sehe ich genauso.
Ab Notes 6.5 gibt es eine @-Function @ViewShowThisUnread( unreadOnly ).
Siehe nachfolgende Hilfe:
Changes a view to show only unread documents, or to show read and unread documents.
Note  This @function is new with Release 6.5.
Syntax
@ViewShowThisUnread( unreadOnly )

Parameters: unreadOnly Text.
The value "1" shows only unread documents.
The value "0" (or any value but "1") shows read and unread documents.

Return value: flag
Number. Returns 1 (True).

Mit der Funktion könnte man das dann wohl lösen
Gruß
Pedro

elajen

  • Gast
Re:Ungelesene Dokumente in einer View
« Antwort #3 am: 25.08.04 - 13:15:57 »
Wenn's einen API-Aufruf gibt, dann kann ich die ja auch vom Script aus aufrufen. Kennst Du da zufällig die entsprechende Funktion?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Ungelesene Dokumente in einer View
« Antwort #4 am: 25.08.04 - 14:11:53 »
Leider nein, hatte bisher noch kein Projekt, das so etwas erforderte ....
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re:Ungelesene Dokumente in einer View
« Antwort #5 am: 25.08.04 - 14:34:10 »

Driri

  • Gast
Re:Ungelesene Dokumente in einer View
« Antwort #6 am: 25.08.04 - 14:43:57 »
Hi,

ich hab in meiner Codeschnipsel-Sammlung das hier gefunden, habs allerdings nie ausprobiert :

Code
The NotesUnreadMarks represents a subset of all the documents in a database. 
The documents in the subset are determined by which documents are unread by the user at the time a new instance is created.

Creates a NotesUnreadMarks object that represents the unread documents for a specific user in a specific replica of a database database located at the server and file name you specify.

Syntax

Dim variableName As New NotesUnreadMarks( notesDatabase, username$ ) 
or
Set notesunreadmarks = New NotesUnreadMarks( notesDatabase, username$ )

If the user name is hierarchical, the username parameter must be passed in the canonical format. eg. CN=First Name/OU=Office/O=Company/C=Country

Example

Dim sess As New NotesSession
Dim db As NotesDatabase
Dim urm As NotesUnReadMarks
Dim doc As NotesDocument
Dim msgbody As String

Set db = sess.CurrentDatabase
Set urm = New NotesUnreadMarks(db,sess.UserName)
Set doc = urm.GetFirstDocument

msgbody = "Server: " + urm.Server + Chr(13)
msgbody = Msgbody + "Filepath: " + urm.FilePath + Chr(13)
msgbody = Msgbody + "Username: " + urm.Username + Chr(13) + Chr(13)
msgbody = Msgbody + "Here are the unread marks from first to last." + Chr(13) + Chr(13)

While Not doc Is Nothing
msgbody = msgbody + doc.Subject(0) + Chr(13)
Set doc = urm.GetNextDocument(doc)
Wend

Messagebox msgbody,0,"Unread Documents" 
      
Code:  'Paste into the Declarations section of your Script.

' 
' NotesUnreadMarks class (R1.0)
' Written by: Daniel Alvers (daniel.alvers@au.pwcglobal.com)
' PricewaterhouseCoopers (Aust)
' February, 7 2000
' 
' This code is provided as is and no warranty, express or implied, exists as to its fitness for use for any purpose.
' You are free to use and distributed the code as long as credit is retained and this header is not removed
'

Declare Function W32_SECKFMGetUserName Lib "nnotes.dll" Alias "SECKFMGetUserName" ( Byval UserName As String) As Integer
Declare Function W32_NSFDbOpen Lib "nnotes.dll" Alias "NSFDbOpen" ( Byval dbName As String, hDb As Long) As Integer
Declare Function W32_IDScan Lib "nnotes.dll" Alias "IDScan" ( Byval hUnreadTable As Integer, Byval First As Integer, NoteID As Long) As Integer
Declare Function W32_NSFDbGetUnreadNoteTable Lib "nnotes.dll" Alias "NSFDbGetUnreadNoteTable" (Byval hDb As Long, Byval UserName As String, Byval NameLength As Integer, Byval Create As Integer, hUnreadTable As Integer) As Integer
Declare Function W32_NSFDbUpdateUnread Lib "nnotes.dll" Alias "NSFDbUpdateUnread" ( Byval hDb As Long, Byval hTable As Integer) As Integer
Declare Function W32_NSFDbClose Lib "nnotes.dll" Alias "NSFDbClose" ( Byval hDb As Long) As Integer
Declare Function W32_IDDestroyTable Lib "nnotes.dll" Alias "IDDestroyTable" ( Byval hTable As Integer) As Integer
Declare Function W32_IDInsert Lib "nnotes.dll" Alias "IDInsert" ( Byval hTable As Integer, Byval NoteID As Long, retInserted As Integer) As Integer
Declare Function W32_IDDelete Lib "nnotes.dll" Alias "IDDelete" ( Byval hTable As Integer, Byval NoteID As Long, retDeleted As Integer) As Integer
Declare Function W32_IDIsPresent Lib "nnotes.dll" Alias "IDIsPresent" (Byval hTable As Integer, Byval NoteID As Long) As Integer
Declare Function W32_IDTableCopy Lib "nnotes.dll" Alias "IDTableCopy" ( Byval hOriginalTable As Integer, hNewCopy As Integer) As Integer
Declare Function W32_NSFDbSetUnreadNoteTable Lib "nnotes.dll" Alias "NSFDbSetUnreadNoteTable" ( Byval hDb As Long, Byval UserName As String, Byval NameLength As Integer, Byval Flush As Integer, Byval hOriginalTable As Integer, Byval hUnreadTable As Integer) As Integer

Type NoteIndex
PrevNoteID As Long
NoteID As Long
NextNoteID As Long
End Type

Class NotesUnReadMarks

Private DocList List As NoteIndex
Private DocArray() As String
Private NoteID As Long
Private hUnreadTable As Integer
Private hOriginalTable As Integer
Private rc As Integer
Private hDb As Long
Private dbNotesDatabase As NotesDatabase
Private sPrvServer As String
Private sPrvFilePath As String
Private sPrvDatabase As String
Private sPrvUsername As String
Private lPrvFirstNoteID As Long
Private lPrvLastNoteID As Long

Sub Delete
Call W32_IDDestroyTable(hUnreadTable)
Call W32_NSFDbClose(hDb) 
End Sub

Sub New (inpNotesDatabase As NotesDatabase, inpUserName As String)

Dim lCurrentNoteID As Long
Dim iPrvScanFlag As Integer

Set Me.dbNotesDatabase = New NotesDatabase(inpNotesDatabase.Server,inpNotesDatabase.FilePath)
Me.sPrvServer = inpNotesDatabase.Server
Me.sPrvFilePath = inpNotesDatabase.FilePath
Me.sPrvUserName = inpUserName

If Me.dbNotesDatabase Is Nothing Then
Error 14005, "NotesUnreadMarks: Invalid database object."
End If

If Me.sPrvServer = "" Then
sPrvDatabase = Me.sPrvFilePath
Else
sPrvDatabase = Me.sPrvServer + "!!" + Me.sPrvFilePath
End If 

'Open the target database
Me.rc = W32_NSFDbOpen(sPrvDatabase, Me.hDb)
If Me.rc <> 0 Then
Error 14001, "NotesUnreadMarks: Unable to open database."
End
End If

'Initialise IDTable variables
Me.hUnreadTable = 0

'Get the unread list
Me.rc = W32_NSFDbGetUnreadNoteTable(Me.hDb, Me.sPrvUserName, Len(Me.sPrvUsername), True, Me.hUnreadTable)
If Me.rc <> 0 Then
Error 14002, "NotesUnreadMarks: Unable to get unread marks."
End
End If

If Me.hUnreadTable = 0 Then
Error 14003, "NotesUnreadMarks: Unread table is null."
End
End If

'Refresh the Unread table
Me.rc = W32_NSFDbUpdateUnread(Me.hDb, Me.hUnreadTable)
If Me.rc <> 0 Then
Error 14004, "NotesUnreadMarks: Error refreshing the unread note table."
End
End If

Me.NoteID = 0
lCurrentNoteID = 0
iPrvScanFlag = True

While (W32_IDScan(Me.hUnreadTable, iPrvScanFlag, Me.NoteID))
If iPrvScanFlag Then
lPrvFirstNoteID = Me.NoteID
iPrvScanFlag = False
End If

If Not lCurrentNoteID = 0 Then
Me.DocList(Hex(lCurrentNoteID)).NextNoteID = Me.NoteID 
Me.DocList(Hex(Me.NoteID)).PrevNoteID = lCurrentNoteID
End If

Me.DocList(Hex(Me.NoteID)).NoteID = Me.NoteID
lCurrentNoteID = Me.NoteID
Wend
lPrvLastNoteID = lCurrentNoteID
End Sub

Public Function Server As String
Server = Me.sPrvServer
End Function

Public Function FilePath As String
FilePath = Me.sPrvFilePath
End Function

Public Function UserName As String
UserName = Me.sPrvUserName
End Function

Public Function GetFirstDocument As Variant 
Set GetFirstDocument = Me.dbNotesDatabase.GetDocumentByID(Hex(lPrvFirstNoteID))
End Function

Public Function GetLastDocument As Variant
Set GetLastDocument = Me.dbNotesDatabase.GetDocumentByID(Hex(lPrvLastNoteID))
End Function

Public Function GetNextDocument(inpNotesDocument As NotesDocument) As Variant
Dim IndexPoint As Long

IndexPoint = DocList(inpNotesDocument.NoteID).NextNoteID

If IndexPoint = 0 Then
Erase DocList(inpNotesDocument.NoteID)
Set GetNextDocument = Nothing
Else
Set GetNextDocument = Me.dbNotesDatabase.GetDocumentByID(Hex(IndexPoint))
End If
End Function

Public Function GetPrevDocument(inpNotesDocument As NotesDocument) As Variant
Dim IndexPoint As Long

IndexPoint = DocList(inpNotesDocument.NoteID).PrevNoteID

If IndexPoint = 0 Then
Erase DocList(inpNotesDocument.NoteID)
Set GetPrevDocument = Nothing
Else
Set GetPrevDocument = Me.dbNotesDatabase.GetDocumentByID(Hex(IndexPoint))
End If
End Function

Function IsUnread(inpNotesDocument As NotesDocument) As Integer
If DocList(inpNotesDocument.NoteID).NoteID = 0 Then
Erase DocList(inpNotesDocument.NoteID)
IsUnread = False
Else
IsUnread = True
End If 
End Function

Sub MarkDocumentRead(inpNotesDocument As NotesDocument)

Dim NoteID As Long
NoteID = DocList(inpNotesDocument.NoteID).NoteID
If NoteID = 0 Then
Exit Sub
End If

'Copy the table so that changes can be merge to the original
Me.rc = W32_IDTableCopy(Me.hUnreadTable, Me.hOriginalTable)
If Me.rc <> 0 Then
Error 14006, "NotesUnreadMarks: Unable to copy unread table."
End
End If

'Refresh the Unread table
Me.rc = W32_NSFDbUpdateUnread(Me.hDb, Me.hUnreadTable)
If Me.rc <> 0 Then
Error 14004, "NotesUnreadMarks: Error refreshing the unread note table."
End
End If

If W32_IDIsPresent (Me.hUnReadTable, NoteID) Then
Me.rc = W32_IDDelete (Me.hUnReadTable, NoteID, &h0)
If Me.rc = 0 Then
Me.rc = W32_NSFDbSetUnreadNoteTable(Me.hDb, Me.sPrvUserName, Len(Me.sPrvUsername), True, Me.hOriginalTable, Me.hUnreadTable)
If Me.rc = 0 Then
If DocList(inpNotesDocument.NoteID).NoteID = lPrvLastNoteID Then
lPrvLastNoteID = DocList(inpNotesDocument.NoteID).PrevNoteID
End If
Erase DocList(inpNotesDocument.NoteID)
End If
End If 
End If 
If Me.hOriginalTable <> 0 Then
Call W32_IDDestroyTable(hOriginalTable)
End If
End Sub

Sub MarkDocumentUnread(inpNotesDocument As NotesDocument)

Dim NoteID As Long

If inpNotesDocument Is Nothing Then Exit Sub 
NoteID = Clng("&H" + inpNotesDocument.NoteID)

'Copy the table so that changes can be merge to the original
Me.rc = W32_IDTableCopy(Me.hUnreadTable, Me.hOriginalTable)
If Me.rc <> 0 Then
Error 14006, "NotesUnreadMarks: Unable to copy unread table."
End
End If

'Refresh the Unread table
Me.rc = W32_NSFDbUpdateUnread(Me.hDb, Me.hUnreadTable)
If Me.rc <> 0 Then
Error 14004, "NotesUnreadMarks: Error refreshing the unread note table."
End
End If

Me.rc = W32_IDInsert (Me.hUnReadTable, NoteID, &h0)
If Me.rc = 0 Then
Me.rc = W32_NSFDbSetUnreadNoteTable(Me.hDb, Me.sPrvUserName, Len(Me.sPrvUsername), True, Me.hOriginalTable, Me.hUnreadTable)
If Me.rc = 0 Then
DocList(inpNotesDocument.NoteID).NoteID = NoteID
DocList(Hex(lPrvLastNoteID)).NextNoteID = NoteID
DocList(inpNotesDocument.NoteID).PrevNoteID = lPrvLastNoteID
DocList(InpNotesDocument.NoteID).NextNoteID = 0
lPrvLastNoteID = NoteID
End If
End If 

If Me.hOriginalTable <> 0 Then
Call W32_IDDestroyTable(hOriginalTable)
End If
End Sub
End Class 

elajen

  • Gast
Re:Ungelesene Dokumente in einer View
« Antwort #7 am: 25.08.04 - 15:25:55 »
Vielen Dank für Eure Postings.

Ich denke, das ich das Problem als gelöst markieren kann.

Gruß von Ekki.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz