Domino 9 und frühere Versionen > ND6: Entwicklung

Beim Löschen von Private Views per Script stürzt Notes ab

(1/2) > >>

theBastian:
Hallo,

ich ändere gerade ein DB, die unter anderem Private Views enthält (Shared, Private on first use). Beim Schließen der DB sollen die Priv. Views des jeweiligen Users gelöscht werden.

Dazu habe ich folgendes Script im QueryClose der DB:


--- Code: ---Sub Queryclose(Source As Notesuidatabase, Continue As Variant)
'Script to delete privates views of the current user
On Error Goto errHandler
Dim session As New notessession
Dim db As NotesDatabase
Dim vUserName As Variant

'Get current user
Set vUserName=New notesname(session.username)
Set db = Source.database
count=0     
Print "Suche private Ansichten ..."

Forall v In db.views
'Check if readers is empty
If Not Isempty(v.readers) 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
'Check if view is private
If v.isPrivate Then                   
count=count+1               
v.remove                       
End If
End If
End If
End Forall

If count = 0 Then
Print "Keine privaten Ansichten gefunden."
Else
If count = 1 Then
Print count & " private Ansicht gelöscht."
Else
Print count & " private Ansichten gelöscht."
End If
End If

exitScript:
Exit Sub

errHandler:
Msgbox "Es ist ein Fehler aufgetreten." & Chr(10)  & Chr(10) _
& "Fehlermeldung: " & Error$ & Chr(10) _
& "Fehlernummer: " & Err & Chr(10) _
& "Codezeile: " & Erl & Chr(10) _
,64,"Error"
Resume exitScript
End Sub

--- Ende Code ---

Das funktioniert auch, solange eine Private View des Users existiert. Wird die DB nur geöffnet, und dann wieder geschlossen (keine Views erstellt), dann stürzt Notes ohne Meldung ab.

Auch im Debugger ist kein Fehler ersichtlich. Die Views werden korrekt geprüft aber bei der letzten verabschiedet sich der Client. Reproduzierbar!

Kann da aber leider keinen Fehler finden. Könntet ihr nicht vielleicht man gucken?  :-:

Danke schonmal.
Sebastian

koehlerbv:
Ich habe Deinen Coe mal nachvollzogen und in eine DB garantiert ohne private views eingebaut. Nachdem ich dann noch drei Variablen nachdeklariert habe (verwendest Du kein Option Declare??), läuft Dein Code und meldet brav: "Keine privaten Ansichten gefiunden".

Auf jeden Fall hast Du es hier mit einem Notes-Bug zu tun (Notes darf nicht abstürzen wegen LS-Code. API wäre etwas anderes ...).
Ich habe allerdings mit 6.5.4 getestet.

Da Du die Version 6.5.5 (solltest Du diese verwenden, wie in Deiner Signatur ausgewiesen) nicht vermeiden kannst, hilft Dir jetzt nur ein logisches Drumherumprogrammieren.

Näheres könnte man wohl nur sagen, wenn Du das Design Deiner DB hier einstellen könntest mit allen Designelementen, mit denen man dann reproduzierbar den Crash nachstellen kann.

By the way: Das "Standard-Vorgehen" hast Du schon gemacht? Man weiss ja nie ... Gerade als Entwickler sollte die CACHE.NDK jeden Abend gekillt werden, da man ja tagsüber übles Zeugs treibt ...

Bernhard

theBastian:
Hi,

danke erstmal für ausführlichen Test.
Welche Variablen meinst Du? Komme da irgendwie nicht mit.

Bin jetzt schon soweit, den Code mit einer komplett leeren DB zu testen, um zu sehen, wann Notes abstürzt.

cu
Sebastian

koehlerbv:

--- Zitat von: SKL74 am 23.03.06 - 22:53:25 ---Welche Variablen meinst Du? Komme da irgendwie nicht mit.
--- Ende Zitat ---

Nicht ernsthaft jetzt, oder? Schreibe Option Declare in die Options, und Du bekommst mit dem von Dir geposteten Code drei nicht deklarierte Variablen angezeigt.
Auch wenn das "gschlampert" ist - den Crash können die zumindest in Deinem geposteten Code fehlenden Variablen keinesfalls erklären. Und es liegt auf jeden fall ein Bug in Notes vor - ein Absturz ist unendschuldbar bei Deinem Code. Melde Dich bei IBM ;-)

Bernhard

theBastian:
Hi,

danke für die Info.  ;)
So ist das eben, wenn man sich alles selbst beibringen muss und noch nie eine Schulung zu diesem Thema hatte.  :(

Habe die Variablen so deklariert:


--- Code: ---Dim count As Integer
Dim equality As String
Dim i As Integer

--- Ende Code ---

Dann nochmal mit LN 6.51 getestet. Läuft jetzt ohne Probleme. Geht aber auch ohne die Deklaration.

Würde den Bug gerne bei IBM melden, bin aber nur über die Sparkassenorganisaton Kunde.

Gibt es eine direkte Website, wo man solche Bugs melden kann?

cu
Sebastian

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln