[GELÖST] Wert aus Tabelle abziehen und neu schreiben?

21. Juni 2018 13:12

Hallo

ich möchte einen Wert (die der Nutzer in einer Page eingegeben hat) aus einer Tabelle abziehen und neu schreiben?

Wie gehe ich ambesten vor?

MFG
Zuletzt geändert von derPat18 am 11. Juli 2018 13:06, insgesamt 1-mal geändert.

Re: wert aus Tabelle abziehen und neu schreiben?

21. Juni 2018 18:14

Wurde das Insert bereits gemacht oder ist der Datensatz noch im Status der Initialisierung ?

Re: wert aus Tabelle abziehen und neu schreiben?

22. Juni 2018 11:01

es ist noch nichts gemacht XD

jediglich wie in einen anderen Thread beschrieben ( viewtopic.php?f=74&t=35016 ) die Funktion (/Codeunit) und die Eingabemaske (Parameterpage) ... das ganze soll mittels Pageaktion (Trigger) ausgelöst werden (das funktioniert, er springt bei der PageAction auf die Codeunit).
Jediglich die Funktion muss noch geschrieben werden mit dem auslesen der Datenwerte aus der Eingabemaske (Menge) + Ändern DER (ausgelesenen) Datenmenge in der ursprünglichen Tabelle (jedenfalls habe ich das so in der Aufgabenstellung verstanden)

Kollege meinte, mit Befehlen wie GET und sowas zu arbeiten (wobei ich mir mit der SYNTAX nochmal genauer beschäftigen muss, zum verstehen - bin Anfänger).

MFG

Re: wert aus Tabelle abziehen und neu schreiben?

22. Juni 2018 11:21

derPat18 hat geschrieben: - bin Anfänger).

Dann ist in diesem Zusammenhang zum Einstieg dieses Thema zum empfehlen, falls noch nicht bekannt.

Re: wert aus Tabelle abziehen und neu schreiben?

26. Juni 2018 15:21

Kowa hat geschrieben:
derPat18 hat geschrieben: - bin Anfänger).

Dann ist in diesem Zusammenhang zum Einstieg dieses Thema zum empfehlen, falls noch nicht bekannt.


okay danke, also muss ich mit diesen befehlen arbeiten ?

MFG

Re: wert aus Tabelle abziehen und neu schreiben?

10. Juli 2018 12:14

ich habe das zusammen mit Kollege in Funktionen gepackt (also das einlesen der Zahlen in der Page)
Funktioniert alles, jetzt will ich jediglich die 2 Felder (/Zahlen) miteinander subtrahieren und neu schreiben (/Aktuellisieren des vorhanden datensatzes)

das Aktuellisieren realisiere ich dann, wenn die Berechnung funktioniert ^^

bislang habe ich zum einlesen in der der Page:

Code:
[External] GetMenge() OutputMenge : Decimal
// OutputMenge Parameter lokal deklariert zum zurückgeben
// External damit ich auf die Funktion von der Codeunit aus zugreifen kann

OutputMenge := Menge; //Usereingabe der menge Zurückgeben
// anderer Weg, EXIT( schreiben ""EXIT(Menge);"" - funktioniert genauso

[External] SetMengeInFa(InputMenge : Decimal)
// InputMenge Variable lokal deklariert zum übergeben
// External damit ich auf die Funktion von der Codeunit aus zugreifen kann

MengeInFA := InputMenge; //Wert uas ProductionOrderLine übernehmen und schreiben
//der rechner weiss automatisch, mit dem ausführen der PageAction dass die makierte Zeile gemeint ist


und mit der Codeunit greife ich so darauf zu:
Code:
[External] SplitFALine(VAR "Prod. Order Line" : Record "Prod. Order Line")
MESSAGE('Funktion wird ausgeführt'); {wartet, bis User mit OK weiter bestätigt, erst
                                       dann wird Code weiter ausgeführt}

ParameterPage.SetMengeInFa("Prod. Order Line".Quantity); {Führe die Funktion aus und
                                                          schreibe die menge aus der
                                                          FA in die ParameterPage}

//Öffnet den User die ParameterPage zur Eingabe der Mengen
ParameterPage.RUNMODAL; //der rechner wartet auf die Usereingabe - läuft weiter mit OK

ParameterPage.GetMenge(); {Führe die Funktion aus und hole die Menge aus der
                           Parameterpage}



Jetzt kommt wie gesagt die Subtraktion der Menge von der Menge in FA... muss ich mit Funktionen arbeiten?

MFG

Re: wert aus Tabelle abziehen und neu schreiben?

10. Juli 2018 13:20

Berechnung wurde jetzt auch geschafft

Code:
Ergebnis := "Prod. Order Line".Quantity - Usermenge; //Berechnung Der UserMenge - Menge in FA


jetzt geht's weiter:

Code:
//Datensatz kopieren + neue Zeile anlegen mit Usermenge in Menge (COPY?)
//Aber auf Primärschlüssel achten, LineNo. um 1 erhöhen

//alte Zeile mit Ergebnis in Menge (MODIFY?)

//spielt Insert eine Rolle?


das Record auf die Ursprungstabelle/Page mit den Datensätzen ist "Prod. Order Line"
((EDIT: Ich will nur 1 bestimmten Datensatz aus der Page kopieren der bereits gefiltert wurde))
die neue Zeile kommt auf dem Record NEWProductionOrdersLine

habt ihr eine kleine Hilfestellung? COPY ist glaube ein richtiger Ansatzpunkt zum kopieren, aber leider finde ich keine deutschen Beispiele im netz.

Bin ich mit MODIFY für die Ursprungs Zeile auf den richtigen weg? also Befehl?

brauch ich noch INSERT wenn ich MODIFY benutze?

MFG

Re: wert aus Tabelle abziehen und neu schreiben?

10. Juli 2018 13:35

Mit Copy habe ich keine guten Erfahrungen gemacht.
Wenn es die gleichen Tabellen sind, reicht eine einfache Zuweisung.

Code:
NEWProductionOrdersLine := "Prod. Order Line";
NEWProductionOrdersLine."Line No." := "Prod. Order Line"."Line No." + 1;
VALIDATE(NEWProductionOrdersLine.Quantity, Usermenge);
NEWProductionOrdersLine.INSERT;


derPat18 hat geschrieben:...
Bin ich mit MODIFY für die Ursprungs Zeile auf den richtigen weg? also Befehl?

Ja.

derPat18 hat geschrieben:...
brauch ich noch INSERT wenn ich MODIFY benutze?

INSERT brauchst du nur, wenn es einen Datensatz noch nicht gibt.

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 11:23

m_schneider hat geschrieben:Mit Copy habe ich keine guten Erfahrungen gemacht.
Wenn es die gleichen Tabellen sind, reicht eine einfache Zuweisung.

Code:
NEWProductionOrdersLine := "Prod. Order Line";
NEWProductionOrdersLine."Line No." := "Prod. Order Line"."Line No." + 1;
VALIDATE(NEWProductionOrdersLine.Quantity, Usermenge);
NEWProductionOrdersLine.INSERT;



okay klingt logisch, ist VALIDATE eine Variable? und auf was bezieht die sich? NAV kennt das nicht

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 11:31

m_schneider hat geschrieben:
Code:
NEWProductionOrdersLine := "Prod. Order Line";
NEWProductionOrdersLine."Line No." := "Prod. Order Line"."Line No." + 1;
VALIDATE(NEWProductionOrdersLine.Quantity, Usermenge);
NEWProductionOrdersLine.INSERT;




Ich habe die
Code:
VALIDATE(NEWProductionOrdersLine.Quantity, Usermenge);
Zeile mal weggelassen und es geht :)

EINS noch: wozu war die Zeile gedacht?

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 11:32

Du schaust aber schon auch in die Hilfe? Da ist das nämlich ausführlich erklärt.

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 12:09

hilfe? von NAV (Links oben) oder welche meinst du ?

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 12:49

Die unter dem Fragezeichen im Development Environment. Oder gibt es die in 2017 nicht mehr?

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 12:51

derPat18 hat geschrieben:Ich habe die
Code:
VALIDATE(NEWProductionOrdersLine.Quantity, Usermenge);
Zeile mal weggelassen und es geht :)

EINS noch: wozu war die Zeile gedacht?

Dann eben so:

Code:
NEWProductionOrdersLine.VALIDATE(Quantity, Usermenge);


Die Zeile validiert die Menge...heißt führt den Validate Trigger des Feldes "Quantity" aus.

derPat18 hat geschrieben:
McClane hat geschrieben:Du schaust aber schon auch in die Hilfe? Da ist das nämlich ausführlich erklärt.


hilfe? von NAV (Links oben) oder welche meinst du ?


Developer Hilfe

Ich kann dir persönlich nur empfehlen, kauf dir Literatur und arbeite das durch.

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 12:59

McClane hat geschrieben:Die unter dem Fragezeichen im Development Environment. Oder gibt es die in 2017 nicht mehr?


achso das, me bemutze ich net (wenig; Grund: ich kann nur bedingt englisch und bei komplexerer Programmierung ist deutsch schon leichter verständlicher) - ich nutze miestens Google :)

Aber ich glaube ich muss mal anfangen, intensiv englisch zu lernen, aber ich denke das wird schon wenn ich mich weiter mit dem Programm beschäftige
Zuletzt geändert von derPat18 am 11. Juli 2018 13:05, insgesamt 1-mal geändert.

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 13:04

m_schneider hat geschrieben:Dann eben so:

Code:
NEWProductionOrdersLine.VALIDATE(Quantity, Usermenge);


Die Zeile validiert die Menge...heißt führt den Validate Trigger des Feldes "Quantity" aus.



Gut und schön, aber in dem Falle ist der Trigger leer … deshalb funktioniert es auch ohne (weil sonst sinnlos)
Aber gut zu wissen danke :)

m_schneider hat geschrieben:
derPat18 hat geschrieben:
McClane hat geschrieben:Du schaust aber schon auch in die Hilfe? Da ist das nämlich ausführlich erklärt.


hilfe? von NAV (Links oben) oder welche meinst du ?


Developer Hilfe

Ich kann dir persönlich nur empfehlen, kauf dir Literatur und arbeite das durch.


Habe ich auch schon in Erwägung gezogen, das was ich habe (2 Bücher), habe ich schon durch und es beschäftigt sich "nur" mit dem Standard Pages, Tables und kratzt Codeunits nur an...

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 14:35

derPat18 hat geschrieben:Gut und schön, aber in dem Falle ist der Trigger leer … deshalb funktioniert es auch ohne (weil sonst sinnlos)


Grundsätzlich gilt als Faustregel: Immer VALIDATE verwenden.

Auch wenn der Trigger evtl. leer sein mag. Es gibt Table-Relations die ggfs. geprüft werden müssen und es kann Events geben die darauf reagieren.
Außerdem: Wer garantiert dir denn, dass in Zukunft nicht noch eine Validierung hinzukommt?
Dann müsstest du sämtliche Stellen im Code (erstmal finden!) anpassen damit die Validierung auch tatsächlich funktioniert.

Nur in Ausnahmefällen gibt es Gründe anstatt VALDIATE eine direkte Zuweisung zu verwenden.

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 15:35

shove hat geschrieben:Grundsätzlich gilt als Faustregel: Immer VALIDATE verwenden.

Da gibt es auch verschiedene Meinungen. Ich würde z.B. niemals ein Feld ala "Beschreibung" validieren.

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 15:45

m_schneider hat geschrieben:Da gibt es auch verschiedene Meinungen. Ich würde z.B. niemals ein Feld ala "Beschreibung" validieren.


Und aus welchem Grund "niemals"?
Woran machst du fest, ob ein Feld "VALIDATE"-würdig ist?

Re: wert aus Tabelle abziehen und neu schreiben?

11. Juli 2018 16:20

AVS hat geschrieben:Und aus welchem Grund "niemals"?

Es ist natürlich immer situationsabhängig.
Wahrscheinlich bringt es mehr Probleme als Nutzen. Gerade bei neu geschaffenen Funktionen wie z.B. die Beschreibung in Tabelle 37.

AVS hat geschrieben:
m_schneider hat geschrieben:Woran machst du fest, ob ein Feld "VALIDATE"-würdig ist?

Erfahrung? Felder wie Menge oder Lagerort müssen meistens validiert werden. Ich schaue häufig einfach nach Relationen, welche existieren.

Re: [GELÖST] Wert aus Tabelle abziehen und neu schreiben?

12. Juli 2018 10:05

wozu ist VALIDATE eig gut und was macht das? sowas wie aktualisieren?

Re: [GELÖST] Wert aus Tabelle abziehen und neu schreiben?

12. Juli 2018 10:25

Ein Validate entspricht einer Usereingabe und löst ggf. weitere, im Validate Trigger des Feldes vorhandene Programmierzeilen aus. Gerade bei der Quantity wird noch jede Menge :D angestoßen. So muss z.B. bei Veränderung der Menge der Preis neu berechnet werden. Bei einer einfachen Zuweisung passiert das nicht. Im schlimmsten Fall erzeugst du damit inkonsistente Daten.