Domino 9 und frühere Versionen > ND8: Entwicklung
Fehlermeldung: Subscript out of range in loop-Schleife
koehlerbv:
Wozu der ganze Aufwand?
parentDoc.Revisionen = Arrayappend (parentDoc.Revisionen, "Neuer Wert)
Den Aufwand sollte man lieber darin investieren zu überprüfen, dass das Item Revisionen nicht die 32k-Grenze durch ständiges "Nachschenken" überschreitet.
Bernhard
regedit:
Vielen Dank für die vielen Lösungsmöglichkeiten :)
Ich habe mich mit allen Möglichkeiten ein wenig beschäftigt, denn nur so kann ich auch was lernen. ;)
Mit den "kurzen" Möglichkeiten ist nur ein anhängen möglich, ich muss allerdings meinen Text voranstellen.
Die 32k-Grenze sollte kein Problem sein, da es nur so 2-5 Einträge werden können.
Mein Script funktioniert jetzt auch!
Also nochmals vielen Dank für Eure Unterstützung
Gruß
Holger
hier mein Code:
--- Code: ---Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim session As New NotesSession
Dim db As notesdatabase
Dim responsedoc As notesdocument
Dim parentdoc As notesdocument
Dim tmpRevisionen As Variant
Dim user As String
Dim tmp1 As String
Dim tmp2 As String
Dim i As Integer
user = session.UserName
Set db=session.currentdatabase
Set responsedoc = source.document
Call responsedoc.save(True,True)
Set parentdoc=db.getdocumentbyUNID(responsedoc.UNID(0))
tmp1 = Date$ & " " & Time$ & " " & "Bearbeitungsdokument hinzugefügt von: " & Chr(10) & " " & user & Chr(10)
tmp2 =tmp1
tmpRevisionen=parentdoc.Revisionen
For i=0 To Ubound( tmpRevisionen)
tmp2 = tmp2 & tmpRevisionen(i) & Chr(10)
Next
parentdoc.Revisionen = tmp2
Call parentdoc.save(True,True)
End Sub
--- Ende Code ---
koehlerbv:
So, wie Du das Item "Revisionen" füllst, ist Deine For-Schleife aber völlig unnötig, da Du nur einen skalaren Wert erzeugst und kein Array, Ubound ist also immer 0. Sprich: Es funktionierst, Du weisst aber nicht, warum ;)
Bernhard
Driri:
Wenn Du den Wert voranstellen willst, kannst Du das mit der von mir beschriebenen Methode machen. Du mußt dann halt nur bei der Verkettung der Strings die Reihenfolge der Strings tauschen.
regedit:
So, Code nochmals angepasst.
Jetzt habe ich aber nochmal eine Frage.
Wie kann ich den User in der Form Abbreviated im String eintragen?
mit user = session.Username.Abbreviated klappt es jedenfalls nicht.
Gruß
Holger
--- Code: ---Sub Querysave(Source As Notesuidocument, Continue As Variant)
Dim session As New NotesSession
Dim db As notesdatabase
Dim responsedoc As notesdocument
Dim parentdoc As notesdocument
Dim tmpRevisionen As Variant
Dim user As String
Dim tmp1 As String
Dim tmp2 As String
Dim i As Integer
user = session.UserName
Set db=session.currentdatabase
Set responsedoc = source.document
Call responsedoc.save(True,True)
Set parentdoc=db.getdocumentbyUNID(responsedoc.UNID(0))
tmp1 = Date$ & " " & Time$ & " " & "Bearbeitungsdokument hinzugefügt von: " & Chr(10) & " " & user & Chr(10)
tmp2 =tmp1
tmp2 = Join(parentdoc.Revisionen, "~~")
tmp2 = tmp1 & "~~" & tmp2
tmpRevisionen = Split(tmp2, "~~")
Call parentdoc.ReplaceItemValue("Revisionen", tmpRevisionen)
Call parentdoc.save(True,True)
End Sub
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln