Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: sinus am 06.09.05 - 12:23:35
-
hallo,
seit neuestem tritt die fehlermeldung "subscript out of range" beim anlegen eines neuen benutzers im adressbuch auf.
es wurden keine änderungen an der db vorgenommen.
was kann ich tun um den fehler zu lokalisieren?
danke&gruss sven
-
den Debugger einschalten und schauen, wo der Fehler auftritt.
-
hab die priv. Nachricht mal hierher verschoben.
danke für den tip, der debugger bleibt bei:
objekt: person (maske)
ereignis: querysave
stehen
ein gelber pfeil zeigt auf:
myArray_members(z)=new_emailaddi
ich verstehe aber nicht wieso er das auf einmal macht, hier wurde nichts geändert...hast du eine idee??
vielen dank & gruss
Schau dir mal die Dimension des Arrays und z an. z dürfte außerhalb des Arrays liegen.
-
es wurden keine änderungen an der db vorgenommen.
Und was heisst "Es wurde keine Änderungen an der DB vorgenommen" ? Original sind die geposteten Zeilen jedenfalls nicht.
Bernhard
-
ich meine damit, dass an der db seit ca. 1 jahr nichts mehr geändert wurde, natürlich ist sie modifiziert...das sehe ich auch gerade :)
auch an der dimension des arrays wurde nicht herumgespielt. ich poste mal den kompletten querysave:
Sub Querysave(Source As Notesuidocument, Continue As Variant)
Messagebox "Bitte haben Sie einen Moment Geduld."
Dim s As New notessession
Dim db2 As notesdatabase
Dim view_gruppen As notesview
Dim doc As notesdocument
Dim doc_suche As notesdocument
Dim suche_item As notesitem
%REM
Update der Einträge in den Mailgruppen
%END REM
If Source.EditMode Then
If source.document.mailaddress(0) ="" Then
Call source.fieldsettext("mailaddress" , "no email")
Call source.fieldsettext("Fullname" , "no email")
Else
source.document.Fullname = source.document.mailaddress
'Call source.save
End If
'If source.document.Fullname(0)="" Then
'source.document.Fullname = source.document.mailaddress
'End If
Call Source.Refresh
End If
Set db2 = s.currentdatabase
Set doc = source.document
new_emailaddi = doc.mailaddress(0)
new_email = doc.getitemvalue("Mailaddress")
If new_email(0) <> old_email(0) Then
Messagebox "Bitte haben Sie einen Moment Geduld. Die Mail-Gruppen müssen abgeglichen werden. Vielen Dank für Ihr Verständnis."
'setzen der Ansicht Gruppen
Set view_gruppen = db2.getview("Groups")
'Erstes dokument in Ansicht Gruppen
Set doc_suche = view_gruppen.getfirstdocument
While Not (doc_suche Is Nothing)
Set suche_item = doc_suche.getfirstitem("Members")
Set vgl_item = doc_suche.getfirstitem("ListName")
If suche_item.contains( old_emailaddi )Then
'bestimmen der Anzahl der Mitglieder in dieser Gruppe, die das dokument fand
numElements = Ubound(doc_suche.Members) - (Lbound(doc_suche.Members)-1)
'vereinbaren eines Feldes
Dim myArray_members() As String
If numElements>1 Then
'Dimensionierung des Feldes
Redim myArray_members(numElements-1)
End If
'suchen, der position, an der der Person Mitglied dieser Gruppe ist
z = 0
Forall k In doc_suche.members
'Wenn Person und aktuelles Gruppenmitglied nicht übereinstimmen, ablegen des Gruppenmitgliedes in dem Array
If Not doc_suche.members(z) = old_emailaddi Then
myArray_members(z) = doc_suche.members(z)
z = z+1
Else
myArray_members(z) = new_emailaddi
z = z+1
End If
End Forall
'Das Array wird an die Stelle des Inhaltes des Feldes gesetzt und das Dokument wird abgespeichert
suche_item.values = myArray_members
Call doc_suche.save(True,True)
End If
Set doc_suche = view_gruppen.getnextdocument (doc_suche)
Wend
End If
updateverteiler Source , Continue
kennzeichen Source
tmp_inpvsart = tb_vs_art
tmp_inp_vsanz = tb_vs_anz
End Sub
-
ich hab mal eine kopie der db erstellt ohne die inhalte mitzukopieren
wenn ich nun in der leeren db eine neue person anlege, kommt die fehlermeldung nicht mehr
also scheint ja irgendwas mit der anzahl der einträge faul zu sein
gibt es denn da diesbzgl. beschränkungen?? in der db\personen sind knapp 10.000 einträge
das würde zumindestens erklären, warum der fehler nun auf einmal aufgetaucht ist (es werden ständig einträge hinzugefügt)
kann ich das problem selbst lösen oder brauche ich einen spezialisten?
gruss