Domino 9 und frühere Versionen > ND6: Entwicklung
Private view eines Users löschen - Deklarationsprobleme
theBastian:
Hallo,
ich möchte in einer DB, in der User Private views (shared, private on first use) erstellen dürfen, diese views beim Schließen der DB löschen (QueryClose).
Habe schon alle Beiträge zu diesem Thema gelesen, konnte jedoch keine Lösung finden.
--- Code: ---Dim session As New NotesSession
Dim db As NotesDatabase
Dim vUserName As Variant
Dim view As NotesView
Dim docView As NotesDocument
Dim itmFlags As NotesItem
Set db = session.CurrentDatabase
'Get current user
vUserName = session.UserName
Forall v In db.Views
Set view = v
'Get flag for private view
Set docView = db.GetDocumentByUNID( view.UniversalID )
Set itmFlags = docView.GetFirstItem( "$Flags" )
'Check if view is private and readers is current user
If Instr( itmFlags.Values( 0 ), "V" ) And _
v.Readers = vUserName Then
Call v.Remove
End If
End Forall
--- Ende Code ---
Natürlich ergibt der Vergleich v.Readers = v.UserName ein Type Mismatch, da ja
vUserName Variant,
v.Readers Variant
v.Readers(0) String
Leider kriege ich v.UserName nicht so deklariert, dass der Vergleich durchläuft. ???
Habt Ihr vielleicht eine Idee?
cu
der B@sti
Gandhi:
vusername.canonical gibt den ensprechenden String (CN=.../OU=.../O=..../C=...) aus.
Gandhi:
Ach ja, vusername muss dazu natürlich noch ein Notesname sein:
set vusername=new notesname(session.username)
theBastian:
Ja klar, Readers ist doch Names. Danke.
Mein Code sieht jetzt so aus:
--- Code: ---Dim session As New NotesSession
Dim db As NotesDatabase
Dim vUserName As Variant
Dim view As NotesView
Dim docView As NotesDocument
Dim itmFlags As NotesItem
Set db = session.CurrentDatabase
'Get current user
Set vUserName=New notesname(session.username)
Forall v In db.Views
Set view = v
'Get flag for private view
Set docView = db.GetDocumentByUNID( view.UniversalID )
Set itmFlags = docView.GetFirstItem( "$Flags" )
'Check if view is private
If Instr( itmFlags.Values( 0 ), "V" ) Then
'Check if readers is current user
If v.Readers = vUserName.canonical Then
Call v.Remove
End If
End If
End Forall
--- Ende Code ---
Leider tritt der Type Mismatch noch immer auf. :(
cu
der B@sti
Gandhi:
Nun, da v.readers ein Array von Strings sein sollte musst Du den String vusername.canonical gegen die einzelnen Elemente prüfen:
equality=false
for i=0 to Ubound(v.readers)
if v.readers(i)=vusername.canonical then
equality=true
exit for
end if
next
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln