Domino 9 und frühere Versionen > ND6: Entwicklung

Private view eines Users löschen - Deklarationsprobleme

<< < (3/5) > >>

Gandhi:
OK, dann musst Du wohl per Print debuggen - was das generelle Absturzproblem - dass doch sehr eigenartig ist (sieht so aus, als ob was beim Interpretieren direkt am Anfang schief läuft).

Prüfe doch mal, ob v nothing ist (lass es Dir ausdrucken)
Evtl. ist es dann schon mit dieser Prüfung getan - wenn das Dokument tatsächlich schon gelöscht ist. Ist das der Fall?

theBastian:
So, habe jetzt mal fast alle views gelöscht (manuell) und debuggt.

Nach der 4. oder 5. Ansicht schmiert Notes bei

--> End Forall

ab.

Scheint also so, als ob das Ende der Views nicht erkannt wird, oder so...

Im Fault Recovery Report steht "Access Violation" als Grund für den Absturz. Fehlt mir da ev. ein Recht, obwohl ich Admin bin)?

theBastian:
Hi,

nachdem ich jetzt weiter getestet habe, ist folgendes klar:

Existiert eine Private view für den User wird diese korrekt gelöscht. Existiert keine, stürzt Notes komplett ab (NSD running).  :(

Aktuell sieht das 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
'Check if readers is empty
If Not Isempty(v.readers) Then
'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
equality=False
For i=0 To Ubound(v.readers)
If v.readers(0)=vusername.canonical Then
equality=True
Exit For
End If
Next
If equality = True Then
Call v.Remove
End If
End If
End If
End Forall

--- Ende Code ---

Hat jemand noch eine Idee, wie ich das verhindern kann?

Dank schonmal im voraus.
der B@sti

Gandhi:
Also vor dem v.remove würde ich auf jedenfall prüfen, ob v initialisiert ist:
if not (v is nothing) then
   call v.remove
end if

theBastian:
Das hilft mir, wenn v leer ist aber nicht in diesem Fall.

1. Variante:
Views:
1. shared
2. shared private on first use
3. private aus view 2 erstellt

alle 3 views werden geprüft, die 3 gelöscht und die DB korrekt geschlossen.

2. Variante:
Views
1. shared
2. shared private on first use
alle 2 views werden geprüft, bei der 2. kommt der Debugger bis End Forall und Notes stürzt ab.

Das ist doch nicht normal.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln