Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: tabama am 14.03.07 - 09:57:02

Titel: Wert einer Zahlenliste im Backend ändern
Beitrag von: tabama am 14.03.07 - 09:57:02
Ich will einen bestimmten Wert (im Beispiel Index 1) einer Zahlenliste im Backend ändern.

Dazu folgender Code:
Code
Sub Click(Source As Button)
	Dim item As notesitem	
	Dim values As Variant
	values = doc.ma_stellennr
	values(1) = 123
	Set item = doc.GetFirstItem("ma_stellennr")	
	item.values = values
End Sub

Beim setzen des Items mit dem Arrey kommt der Fehler "mixed Datatyp".
Mit Textlisten funktioniert der Code.

Woran liegts?
Oder gibts eine einfachere Möglichkeit einen Zahlenwert im Backend zu ändern?
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: DerAndre am 14.03.07 - 10:06:57
Was für ein Typ ist ma_stellennr?
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: tabama am 14.03.07 - 10:11:06
Hallo Andre

der Typ ist "Long". Wenn ich aber die Variable "Values" als Long deklariere, muss ich die Anzahl der Einträge mit angeben. Die variiert aber je nach doc.
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: koehlerbv am 14.03.07 - 11:05:28
Mach mal eine explizite Zuweisung: Definiere eine Variable als Long, weise der 123 zu und dann die Long-Variable dem Arrayelement zuweisen.

Bernhard
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: tabama am 14.03.07 - 11:15:49
Hallo koehlerbv,

bringt (außer mehr Code) auch kein anderes Ergebniss. Immer noch "mixed...."

Code
Sub Click(Source As Button)
	Dim item As notesitem	
	Dim values As Variant
	Dim x As Long
	x = 123
	values = doc.ma_stellennr
	values(1) = x
	Set item = doc.GetFirstItem("ma_stellennr")	
	item.Values = values
End Sub
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: DerAndre am 14.03.07 - 11:17:09
Was passiert wenn Du

dim values() as variant

schreibst?
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: koehlerbv am 14.03.07 - 11:25:02
Das bringt gar nichts, André.

Aus irgendeinem Grunde macht LS eine Typkonvertierung für values (1). Macht mich jetzt auch etwas ratlos.
Vielleicht kann man das Ding austricksen:
values (1) = values (1) - values (1) + 123

Bernhard
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: DerAndre am 14.03.07 - 11:33:56
Jo, stimmt, variant ist ja die "allwissende Müllhalde"  ;D
Ändert sich denn was an dem Verhalten wenn Du dem Array eine Größe Zuweist?

Vor der Zuweisung mal

Redim values(1)
values(1) = 123

Klappt das denn wenigstens?
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: ghost am 14.03.07 - 11:37:10
Was bedeutet, der Wert von ma_stellennr ist Long? Der Feldtyp müsste doch Number sein.  ???

Hast Du schon mal versucht über doc.ReplaceItemValue den Wert zurück zu schreiben?

Viele Grüße
ghost
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: tabama am 14.03.07 - 11:37:55
Hallo Bernhard,

so klappt es (warum auch immer).

Dieser Code ist immer noch einfacher als der von Andre vorgeschlagene. Denn hier müsste ich erst die Anzahl der Einträge ermitteln und dann noch preserve usw...

Vielen Dank

PS: Ist aber schon sehr umständlich eine Liste im Backend zu ändern. Warum gehts nicht einfach mit doc.feld(1) = 123
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: tabama am 14.03.07 - 11:41:25
Hallo ghost,

Feldtyp "Number" gibt es nicht. Das ist nur ein Auswahlfeld für die Erstellung von Feldern in Masken. Bei script muss man immer schauen, welche Dimensionen, Werte und Inhalte im Debuger angezeigt werden.

Gruß Martin
Titel: Re: Wert einer Zahlenliste im Backend ändern
Beitrag von: koehlerbv am 14.03.07 - 11:45:22
Du machst ja keine explizite Zuweisung. Und wie Andrè schon sagte: Variant ist eine "Müllhalde" und schluckt alles. 123 wird als Integer interpretiert (das wäre bei 123000 nicht passiert).

Mein Würgdrumrum macht folgendes: Gerechnet wird von links nach rechts. variant (1) ist Long, und damit wird dann auch das Ergebnis der Berechnung wieder Long - eine explizite Zuweisung.

@ghost: ReplaceItemValue würde auch nichts nützen - der Fehler passiert in der Bildung des Arrays (Variant).

Bernhard