PageAction soll Wert eines Feldes ändern

11. Dezember 2015 20:37

Hallo,

ich komme mal wieder nicht weiter. Ich habe eine PageCard angelegt und habe dort eine Action (Button) integriert. Dieser Button soll bei klick den Wert eines Tabellen Feldes erhöhen. Alerdings scheint er das Feld nicht zu finden. Jedenfalls erhöht er nicht, geht aber in die Schleife und gibt die Message aus "Preis erhöht". Ich stehe gerade auf dem Schlauch. Hier die Code Zeilen die ich in der PageAction integriert habe:

Globale Variable -> itemTableModel. Diese zeigt auf die Tabelle ItemTable.
Code:
IF itemTableModel.FIND('-') THEN BEGIN
  REPEAT
  itemTableModel.Price := itemTableModel.Price * 1.02;
  MESSAGE('Preis erhöht!');
  UNTIL itemTableModel.NEXT = 0;
END
ELSE BEGIN
  MESSAGE('Nothing Found!');
END;


Danke

Re: PageAction soll Wert eines Feldes ändern

11. Dezember 2015 21:40

Die Änderung der Daten eines Datensatzes per Programmierung musst Du zum Schluss mit einem MODIFY speichern.
In Deinem Fall also befor man mit dem NEXT den nächsten Datensatz liest, muss man die Änderung im aktuellen Datensatz mit dem MODIFY speichern:
Code:
itemTableModel.Price := itemTableModel.Price * 1.02;
itemTableModel.Description := 'Neue Modelbezeichnung';
usw.....
itemTableModel.MODIFY;
UNTIL itemTableModel.NEXT = 0;

Analog Daten einfügen (INSERT) oder löschen (DELETE) oder umbenennen (RENAME).
Hol Dir am besten die Dokus für die Programmierung C/SIDE - C/AL und gehe diese durch.

Re: PageAction soll Wert eines Feldes ändern

14. Dezember 2015 21:54

Danke für die Antwort. Wenn ich den MODIFY mit eintrage und den Button anklicke, bekomme ich folgende Fehlermeldung: 'ItemTable' ist nicht vorhanden. Identifizierende Felder und Werte: No. = 'ITEM02230', ... usw.

Re: PageAction soll Wert eines Feldes ändern

14. Dezember 2015 23:07

Ist eines der zu ändernden Felder Teil des Primärschlüssels der jeweiligen Tabelle dann funktioniert MODIFY nicht, stattdessen musst du mit RENAME arbeiten.

Re: PageAction soll Wert eines Feldes ändern

16. Dezember 2015 10:11

Ok danke. Wie wende ich denn Rename auf ein Feld in meinem Primary Key an? Muss ich dazu alle Primary Felder in der Rename Funktion mit angeben? Habe folgendes versucht:

Code:
ItemRow.SETFILTER(ItemRow."No.", 'ITEM02230');

IF ItemRow.FIND('-') THEN BEGIN
    REPEAT
      priceTemp := ItemRow.Price * 1.19;
      ItemRow.RENAME(priceTemp);
    UNTIL ItemRow.NEXT = 0;
END;


Allerdings bekomme ich beim Ausführen, die Fehlermeldung "Die Anzahl der Feldargumente stimmt nicht mit der Primärschlüsselgröße überein".

Re: PageAction soll Wert eines Feldes ändern

16. Dezember 2015 10:19

cid hat geschrieben:Allerdings bekomme ich beim Ausführen, die Fehlermeldung "Die Anzahl der Feldargumente stimmt nicht mit der Primärschlüsselgröße überein".
Schau dir mal in der techn. Onlinehilfe den Artikel zum Thema RENAME an.