[Gelöst] Tabellenfeld in Codeunit füllen

5. Februar 2010 12:45

Hallo,

mich beschäftigt momentan folgendes Problem:

ich rufe in einem Report nacheinander 3 Funktionen einer Codeunit auf.

Mit der ersten Funktion wird in der Tabelle Katalogartikel das Feld "Item No." fortgeschrieben.

NonStock2."Item No." := NewItemNo;
NonStock2.MODIFY;

Die zwei weiteren Funktionen greifen in keinster Weise noch einmal auf diese Tabelle zurück.
Und trotzdem ist am Ende der Verarbeitung aller Funktionen dieses Feld wieder leer.

Ich habe mit Messages und Debugger schon versucht die Ursache zu finden.
...... kein Erfolg.

mfg

Maria
Zuletzt geändert von HungerMaria am 8. Februar 2010 08:47, insgesamt 1-mal geändert.

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 13:59

Heißt "am Ende der Verarbeitung" noch innerhalb des Reports oder tatsächlich in der Tabelle?

Wenn innerhalb des Reports, dann könnte es daran liegen, dass du Tabelle nicht als Referenz (VAR) übergibst.

Im anderen Fall eventuell, dass in der CU das Item nicht initialisiert ist und es aus einem merkwürdigen Grund vielleicht ein Item mit Artikelnummern "" (leer) existiert welches geändert wird.

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 16:32

An welcher Stelle der Wert nicht mehr vorhanden ist,weis ich.
Es handelt sich um das Feld NonStock2."Item No."

1. Funktionen der CU
NonStock2."Item No." ist noch da

2. Funktion CU
NonStock2."Item No." ist weg
In dieser Fkt. rufe ich mit dem Parameter "NonStock2 auf.

Das ist die 2. Funktion

PuchasePrice.RESET;
PuchasePrice.SETRANGE("Item No.",NonStock2."Entry No.");
PuchasePrice.SETRANGE("Vendor No.", NonStock2."Vendor No.");
IF NOT PuchasePrice.FIND('-') THEN BEGIN
PuchasePrice.INIT;
PuchasePrice.VALIDATE("Item No.", NonStock2."Entry No.");
PuchasePrice.VALIDATE("Vendor No.",NonStock2."Vendor No.");
PuchasePrice.VALIDATE("Unit of Measure Code",NonStock2."Unit of Measure");
PuchasePrice."Direct Unit Cost" := NonStock2."Negotiated Cost";
PuchasePrice."Starting Date" := TODAY;
PuchasePrice.INSERT;
END;

Das kuriose ist, alles was ich mit diesen Funktionen erreichen möchte, klappt.
Nur das es dieses Feld leert.

Danke für die Hilfe!

Maria

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 16:41

Wie wird NonStock2 denn an die zweite Funktion übergeben? Als VAR? Korrekt auf den Datensatz gefiltert?

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 17:30

McClane hat geschrieben:Wie wird NonStock2 denn an die zweite Funktion übergeben? Als VAR? Korrekt auf den Datensatz gefiltert?
Genau die Frage wollte ich stellen, danke fürs mitspielen 8-)

Ich meinte in meinem Beitrag natürlich nicht Item sondern NonstockItem bzw. NonStock aus deinem Beispiel.

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 17:38

SilverX hat geschrieben:Genau die Frage wollte ich stellen, danke fürs mitspielen 8-)

Das habe ich wohl geschmeidig überlesen :roll:

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 17:42

Ich definiere in den Globals --> Funktion die Funktion "NonStockItemPriceE". Von da ausgehend gehe
ich über den Buttonn "Locals" und definiere in den Parametern den Parameter "NonStock2.

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 17:54

Du Maria,

bevor wir noch lange rumraten: Kannst du uns den Sourcecode des Reports und der beteiligten Codeunits in den Beitrag kopieren oder als Anhang zur Verfügung stellen?

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 18:03

Ich weis jetzt nicht, ob es mit dem Anhang funktioniert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Tabellenfeld in Codeunit füllen

5. Februar 2010 18:57

Hallo Maria,

die Instanz der Record-Variablen NonStock2 in der ersten Funktion wird in dieser verändert. Solange du aber nicht eine Referenz auf die Variable (Haken, VAR) übergibst, spiegelt sich das nach Verlassen der Funktion nicht in der Record-Variable wider.

Du hast 2 Möglichkeiten: Entweder den Parameter der Funktion auf VAR stellen oder nach Aufruf der Funktion den Record neu laden, um die in der Datenbank gemachten Änderungen in deiner lokalen Variable zu aktualisieren.

Re: Tabellenfeld in Codeunit füllen

8. Februar 2010 08:46

Vielen Dank!!!!!!!!!!!!!!!!!!!

Jetzt funktioniert es.

Ich habe in der ersten Funktion den Haken in der Variable gesetzt.

Schöne Woche! :-D