Domino 9 und frühere Versionen > ND6: Entwicklung

[LotusScript] Type Mismatch

<< < (2/6) > >>

TMC:

--- Zitat von: DaWutz am 01.03.05 - 18:50:44 ---Warum ist das aber ein Array, der da ankommt? Ich weiß nu wie´s gemacht wird, aber ich verstehe nicht, warum.
--- Ende Zitat ---

Liest Du per LotusScript mit der GetItemValue - Methode ein Item aus, so bekommst Du IMMER ein Array. Auch wenn das Item ein SingleValue-Feld ist.
Das ist definiert in der NotesDocument-Klasse.

koehlerbv:
Jo, jedes NotesItem ist par definitionem ein Array, wenn es (im Backend) ausgelesen wird. Weil: Es könnte ja eines sein. Es wäre ja andererseits übel, wenn Du bei jedem Zugriff selber prüfen müsstest: "Was habe ich jetzt bekommen ?".

Auch "andersherum" macht das Sinn: Du definierst in einer Maske ein Feld als "Text", "Mehrfachwerte zulassen" ist nicht erlaubt.
Was Dich (oder andere) nicht hindern würde, dort im backend ein Array 'reinzuschreiben  ;D

Wenn Dui da noch Fragen hast, stelle sie: Das sind Dinge, die anfangs übel verwirren könne, bis sie dann doch ganz klar erscheinen.

Bernhard

Marinero Atlántico:
es gibt allerdings die leicht kryptische Abkürzung:
doc.getItemValue("feldName")(0)
Durch die (0) am Ende kommt der erste Wert zurück.
Kann den code übersichtlicher machen, wenn man sicher weiss, dass man es hier sowieso mit Einfach-Werte-Feldern zu tun hat. Was oft der Fall ist.

koehlerbv:
Naja, Axel, das hat Daniel ja schon gemacht  ;)

Bernhard

TMC:
Und noch zur Ergänzung:
Wenn Du per Script auf Felder zugreifst (also über Frontend-Klassen), bekommst Du Strings (völlig egal, ob das Feld auf 'Mehrfachwerte' etc. eingestellt ist).
Wenn Du auf Itemebene (also Backend-Dokumentenseitig) zugreifst, bekommst Du immer ein Array - auch wenn das ursprünglich zugrunde liegende Feld z.B. vom Typ "Zahl, ohne Mehrfachwerte" war.

Ich würde immer doc.GetItemValue nehmen, und die "Extended class" Syntax (doc.Itemname) mir gar nicht erst angewöhnen, auch wenn es bequemer erscheint.
Grund:
[*]Performanceeinbußen (soll massiv sein, hab ich zumindest mal gelesen, leider keine Quelle mehr parat)
[*]Probleme, wenn der Itemname = einer Notes-internen Bezeichnung entspricht
[*]Du kannst den Itemnamen auch als String (Variable oder Konstante) übergeben.
[/list]

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln