Domino 9 und frühere Versionen > ND7: Entwicklung
Listenindex lesen und schreiben...
CLI_Andreas_Schmidt:
Hi @dev,
schlage mich mal wieder mit netten Listenfunktionen rum und da ist mir folgendes passiert.
var = doc.feld(Listenposition-1) --> geht
doc.feld(Listenposition-1) = var --> geht nicht. --> illegal use of property
warum nicht ?
WildVirus:
Hallo Andreas,
ich kenne es nur so, dass als erstes der Feldinhalt in einen temporären Array geholt wird, darin wird gearbeitet. Ganz am Schluss kommt dann doc.Feldname = Array, sprich ich schreibe das neue Array ins Feld.
Innerhalb eines Arrays geht Array(Listenposition-1) = "what ever" problemlos, direkt in eine Position eines Feldes zu schreiben geht nicht.
Hintergrund ist m.E., dass in Feldern keine Arrays, sondern Listen gespeichert werden. Textlisten, Zahlenlisten, etc. Klingt wie wenn es das selbe wäre, aber in der Hilfe steht bei getitemvalue z.B. dass aus "Number or number list" bei getitemvalue ein "Array of doubles" wird. Für die Maschinensprachler ist es wohl ein Unterschied.
Habe mich so an diese "Macke" ;) gewöhnt, dass ich immer so verfahre, ohne groß nachzudenken. Gehört inzwischen zu den Basics, wie z.B. ne saubere Fehlerbehandlung
Schönen Abend noch,
Axel
Glombi:
doc.feld(...)
ist die sog. Extended Class Syntax. Damit kann man das normalerweise zu verwendene ReplaceItemValue abkürzen.
Aus der Designer Hilfe:
"Extended class" syntax
You can also change an item's value using the NotesDocument "extended class" syntax, which eliminates the need for ReplaceItemValue.
For example, you have the following script:
Dim item As NotesItem
Set item = doc.ReplaceItemValue _
( "Subject", "Update on stock options" )
Call doc.Save( False, True )
You can achieve the same result by doing the following:
doc.Subject = "Update on stock options"
Call doc.Save( False, True )
Andreas
WildVirus:
Hallo Andreas,
ich glaube das kennt er.
Sein Verständnisproblem liegt an der Nichtnutzbarkeit von doc.Feldname(Index) = Wert
Hast Du ein Array mit einem UBound von z.B. 4, so funktioniert ein Array(2) = Wert problemlos und ändert den 3. von 5 Werten. Bei einem LBound von 0 ausgehend ;)
Hast Du die Werte aber nicht in einem Array, sondern in einem Feld, so kommt es bei doc.Feldname(2) = Wert zu dem genannten Fehler.
Schönen Abend wünscht
Axel
Glombi:
Hier was zum Thema von IBM:
How to Create or Update Multi-Value Fields or Arrays Via LotusScript
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln