Autor Thema: Wert einer Zahlenliste im Backend ändern  (Gelesen 2120 mal)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Wert einer Zahlenliste im Backend ändern
« 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?

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #1 am: 14.03.07 - 10:06:57 »
Was für ein Typ ist ma_stellennr?
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #2 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.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #3 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #4 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

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #5 am: 14.03.07 - 11:17:09 »
Was passiert wenn Du

dim values() as variant

schreibst?
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #6 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

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #7 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?
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline ghost

  • Aktives Mitglied
  • ***
  • Beiträge: 174
  • Geschlecht: Männlich
  • Notes ist gut!
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #8 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #9 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #10 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Wert einer Zahlenliste im Backend ändern
« Antwort #11 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz