[Gelöst] Zwei gleichte Items zu einem Zusammenfassen?

12. Oktober 2006 16:37

..klingt ein wenig seltsam, weiss aber nicht wie ich es ausdrücken soll.
Es wird ein Item gefiltert,
dort wird dann die Restauftragsmenge gezeigt,
Debitor1 hat so und so viel Debitor2 so und so etc.

Das jedoch soll zusammengefasst werden,
sprich beim auslesen des Records sollen nicht (wie im Anhang) 2 Spalten mit 2 Werten sein,
sondern nur noch eine mit einem Wert.

Wie bekomme ich das am besten hin?
Hoffe ihr versteht mich überhaupt, schon spät heute ;)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Danis am 6. November 2006 11:31, insgesamt 1-mal geändert.

12. Oktober 2006 17:15

Das Feld 85 "Menge in Auftrag" am Artikel summiert bereits alle Restauftragsmengen für alle Debitoren ( in der Basismengeneinheit).

13. Oktober 2006 12:58

Hallo, ich arbeite im selben Betrieb wie Danis und hab dementsprechend dieselbe Frage, da wir zusammen an der Aufgabe arbeiten :-)

Nur kann er zur Zeit nicht daran weiterarbeiten, deshalb hab ich mich mal hier angemeldet und führe den Thread mal fort.

Also wir haben in der Form jetzt das Field Nr. 85 "Menge in Auftrag" angefügt, nur steht als Menge immer 0 darin. Es soll ja wenn ein und derselbe Artikel von verschiedenen Debitoren gekauft wurde die Artikel-Nr. nur noch einmal anstatt zweimal dastehen und halt die beiden Restauftragsmengen zusammengefügt werden. Hab mir mal den Quelltext des Feldes "Menge in Auftrag" in der Tabelle "Item" angesehen aber verstehe nur Bahnhof :-?
Wäre also für nen kleinen Tip, wie wir an die Sache rangehen sollten, sehr Dankbar!

13. Oktober 2006 14:18

Wenn du die Standard-Artikelkarte startest, müsste dieses Feld auf der ersten Registerseite drauf sein. Zeigt es da auch Null an?

13. Oktober 2006 15:17

Nein, da steht jetzt für z.b. Artikel 1000 104 Stk.!

13. Oktober 2006 15:45

Auf der Form, die Danis in seinem Beitrag zeigt: welche Tabelle ist denn da hinterlegt für die Anzeige der Artikel? Ich gehe mal davon aus, dass es nicht Tabelle 27 - Item ist.

13. Oktober 2006 16:16

Nein, es handelt sich um Tabelle 37 "Sales Line" !

EDIT: Das Feld "Menge in Auftrag" holen wir uns per Record-Variable aus der Tabelle "Item".

13. Oktober 2006 16:25

OK, dann fehlt wahrscheinlich nur der Befehl CALCFIELDS. Setze einfach eine Zeile vorher (dort wo du das Feld aus der Item-Tabelle zuweist) folgenden Befehl ab:

Code:
Item.CALCFIELDS("Qty. on Sales Order");


FlowFields müssen immer auf diesem Weg berechnet werden, wenn sie innerhalb eines Programmes angesprochen werden. Ansonsten ist der Wert eben immer Null, oder leer

13. Oktober 2006 16:41

Du meinst in der Source Expression? Also in etwa so:
gRecItem.CALCFIELDS("Qty. on Sales Order")
???

13. Oktober 2006 17:29

Versuchs auf dem OnAfterGetRecord-Trigger

18. Oktober 2006 15:46

Haben uns lange nicht mehr gemeldet... Also unser Problem besteht weiterhin :-? Wäre es vll. hilfreich wenn wir die Form mal exportieren, iwo hochladen und sich jemand die angucken kann? Das ist glaube ich besser als alles über Screenshots zu erklären was, wo und wie gemacht werden soll!

18. Oktober 2006 20:45

Hast du mal CALCFIELDS für das betroffene Feld ausgeführt auf dem OnAfterGetRecord-Trigger?

23. Oktober 2006 15:46

Ja, aber als Menge wird weiterhin 0,00 ausgegeben... :-(

23. Oktober 2006 15:48

Wie sieht denn die CalcFormula des betroffenen Feldes aus?

23. Oktober 2006 15:58

1 x für Qty. on purch. order:

Sum("Purchase Line"."Outstanding Qty. (Base)" WHERE (Document Type=CONST(Order),Type=CONST(Item),No.=FIELD(No.),Shortcut Dimension 1 Code=FIELD(Global Dimension 1 Filter),Shortcut Dimension 2 Code=FIELD(Global Dimension 2 Filter),Location Code=FIELD(Location Filter),Drop Shipment=FIELD(Drop Shipment Filter),Variant Code=FIELD(Variant Filter),Expected Receipt Date=FIELD(Date Filter)))

und 1 x für Qty. on sales order:

Sum("Sales Line"."Outstanding Qty. (Base)" WHERE (Document Type=CONST(Order),Type=CONST(Item),No.=FIELD(No.),Shortcut Dimension 1 Code=FIELD(Global Dimension 1 Filter),Shortcut Dimension 2 Code=FIELD(Global Dimension 2 Filter),Location Code=FIELD(Location Filter),Drop Shipment=FIELD(Drop Shipment Filter),Variant Code=FIELD(Variant Filter),Shipment Date=FIELD(Date Filter)))

23. Oktober 2006 18:38

ich vermute, im onaftergetrecord steht sowas:

item.get(artikelnummer_die_gesucht_wird);
item.calcfields("qty. on purch. order","qty. on sales order");

und trotzdem ist der Wert immer noch 0?
die Spalten Menge in Auftrag und Menge in Bestellung, was haben die in der Sourceexpression stehen?

24. Oktober 2006 10:08

Hatten im AfterGetRecord bisschen was anderes stehen, haben das jetzt mal so gemacht wie du meintest und jetzt steht da zumindest ein Wert drin, und zwar 104 (aber mir ist ein Rätsel wie dieser Wert zustande kommt!?

24. Oktober 2006 11:09

der kommt genauso zustande, wie es die Calcformula vorgibt!

24. Oktober 2006 12:23

Wenn das Feld "Qty. on Sales Order" auf der Tabelle Item unterschiedliche Werte ausgibt zu jenem, dass du selber definiert hast, lohnt es sich bestimmt, die CalcFormulas dieser beiden Felder zu vergleichen. Oder steht auf dem betroffenen Item-Record auf die Zahl 104? Dann würde das Resultat ja stimmen

24. Oktober 2006 13:00

Also unser Quelltext im OnAfterGetRecord Trigger sieht jetzt folgendermaßen aus:

IF gRecItem.FIND('-') THEN
gRecItem.CALCFIELDS("Qty. on Purch. Order");
gRecItem.CALCFIELDS("Qty. on Sales Order");

Das würd dann ja erklären warum bei jedem Artikel die 104 steht, da er mit dem FIND('-') ja nur nach dem ersten Eintrag sucht, das wäre bei uns Item Nr. 1000 "Tourenrad". Habe mal alle Restauftragsmengen von dem Artikel zusammengezählt und komme auf 104. Wie bekommen wir das aber nun hin das er das für jeden Artikel da drin macht und nicht nur für den ersten? Habe das eben mal so probiert, dann steht aber bei jedem Artikel wieder 0:

IF gRecItem.FIND('-') THEN
REPEAT
gRecItem.CALCFIELDS("Qty. on Purch. Order");
gRecItem.CALCFIELDS("Qty. on Sales Order");
UNTIL
gRecItem.NEXT = 0;

24. Oktober 2006 13:06

Das geht ganz einfach. Auf dem OnAfterGetRecord schreibst du:

Code:
gRecItem.GET(artikelnummer_die_gesucht_wird);
gRecItem.CALCFIELDS("Qty. on Purch. Order", "Qty. on Sales Order");

24. Oktober 2006 13:17

Hmm, wenn ich das so mache zeigt er auch für JEDEN Artikel 104 an! Und mit GET kann ich ja nach nur einem Item suchen, hatte eig. nicht vor das x-mal da rein zu schreiben für jeden Artikel :-? ...

24. Oktober 2006 13:26

Also so langsam entsteht bei mir Verwirrung. Du willst "Qty. on Sales Order" pro Item sehen und wunderst dich dann, dass auf jeder Zeile mit derselben Artikelnummer der selbe Wert steht? Das ist doch korrekt so!

Und sonst ist, wie gesagt, deine CalcFormula nicht korrekt. Vielleicht muss du noch einen FlowFilter setzen, oder eine Bedingung ändern, oder...

24. Oktober 2006 13:59

Also noch einmal im Klartext:
Auf dem OnAfterGetRecord Deiner Tabelle schreibst du:

Code:
gRecItem.GET("Name deiner Tabelle"."Feldname mit Artikelnummer in deiner Tabelle");
gRecItem.CALCFIELDS("Qty. on Purch. Order", "Qty. on Sales Order");


Wenn du jetzt in den Spalten, wo Du das ausgeben willst,
als Sourceexpression gRecItem."Qty. on Purch. Order" bzw gRecItem."Qty. on Sales Order" schreibst, dann solltest du zum Ziel kommen!

und nix mit repeat und so weiter!

24. Oktober 2006 15:18

So dann?

gRecItem.GET(gRecItem."No.");
gRecItem.CALCFIELDS("Qty. on Purch. Order", "Qty. on Sales Order");

Dann sagt er mit aber in einer Fehlermeldung "Artikel Nr." existiert nicht."!?