[Gelöst] Über Mainform in Subform Werte überschreiben

21. März 2007 15:18

Hallo,

in dem Screenshot sie man eine Main Subform.

Ich möchte erreichen das wenn ich auf die Schaltfläche "Buchen" klicke im Kopf, in den Zeilen in der Spalte STatus der Optionswert "WARENEINGANG" reingeschrieben wird.

Wie muss ich das machen? Also die obere und untere TAbelle sind über No und Kundennummer verknüpft, wíe mach ich das im on push trigger?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von tesarolle am 22. März 2007 17:19, insgesamt 1-mal geändert.

21. März 2007 15:23

Recordvariable für zeile erstellen, entsprechend filtern, und dann modifyall verwenden. Syntax in der Onlinehilfe.

21. März 2007 16:08

Mhn, also ich glaube das Filtern klappt, aber das überschreiben in den Zeilen nicht:


Code:
WITH rec_WARENEINGANG DO BEGIN 
  RESET;
  SETFILTER(rec_WARENEINGANG.STATUS, '%1',STATUS::WARENEINGANG);
 SETFILTER("No.", rec_WARENEINGANG."No.");
MODIFYALL(STATUS, STATUS:=STATUS::WARENAUSGANG, TRUE);
END;


Ich will halt anhand der "No." im Kopf die Zeilen anhand der Kopf "No." filtern und alle sätze die Status "wareneingang" haben mit Status "Warenausgang" überschreiben...

21. März 2007 16:12

Wieso setzt du Filter auf die Felder Status und No.? Du hast doch in deinem ersten Topic geschrieben, dass die beiden Tabellen über die Felder Nr. und Kundennr. miteinander verknüpft sind.

Gruß, Marc

21. März 2007 16:14

Diese Zeile scheint mir falsch zu sein:

Code:
MODIFYALL(STATUS, STATUS:=STATUS::WARENAUSGANG, TRUE);


Meiner Meinung nach müsste das heissen:

Code:
MODIFYALL(STATUS, STATUS::WARENAUSGANG, TRUE);

21. März 2007 16:32

Hallo Marc,

Ja ich wollte eigentlich den Filter über das Feld Kundennummer und NUmmer machen, mhn ich blick dasnicht (:-

Also im Kopf habe ich den Primärschlussel "No,KUNUMMER" und in den Zeilen auch

Und ich will das er mir entsprechend der "NO,Kunummer" aus dem Kopf inden Zeilen Filtert und dann das modifyall macht.

21. März 2007 17:09

tesarolle hat geschrieben:Also im Kopf habe ich den Primärschlussel "No,KUNUMMER" und in den Zeilen auch


In den Zeilen auch? Müsste dort nicht der Schlüssel so lauten: NO,Kunummer,Zeilennr. ?

tesarolle hat geschrieben:Und ich will das er mir entsprechend der "NO,Kunummer" aus dem Kopf inden Zeilen Filtert und dann das modifyall macht.


Na, das hast du doch schon fast gemacht. Du hast nur die falschen Felder genommen. So müsste es meiner Meinung nach aussehen:

Code:
WITH rec_WARENEINGANGSZEILEN DO BEGIN
  SETRANGE(NO, NO);
  SETFILTER(Kunummer, Kunummer);
  MODIFYALL(STATUS, STATUS::WARENAUSGANG, TRUE);
END;


Bei dem COde gehe ich davon aus, dass du ihn aus dem Kopf (ob Tabelle oder Form) startest.

Gruß, Marc

21. März 2007 19:24

bei der KUnummer würde ich auch setrange statt setfilter nehmen

22. März 2007 12:12

Hallo Ihr beiden,

naja langsam ernährt sich das Eichhörnchen!

Wenn ich das Setrange mit der No und KUNUMMER mache findet er komischerweise anscheinend keine Datensätze und macht auch nichts, sowie unten funktioniert der Code, allerdings macht er halt bei allen Sätzen ohne Filterung inder TAbelle den Status auf "WArenausgang" aber fast passt bei den beiden Zeilen nicht die ich auskommentiert habe?

Die Tabelle sind über No. und KUNUMMER verknüpft, bin da irgendwie ratlos... Stimmt was mit demSetrange nicht? Oder muss noch ein Reset davor??


Code:
WITH rec_WARENEINGANG DO BEGIN

//  SETRANGE("No.", "No.");
//  SETRANGE(KUNUMMER, KUNUMMER);
  MODIFYALL(STATUS, STATUS::WARENAUSGANG, TRUE);
END;

22. März 2007 14:43

Die beiden auskommentierten Zeilen von oben funktionieren nicht auch wenn ich Sie reinnehme und ich weiss immer nochnicht warum... kann mir jemand auf die Sprünge helfen und mir sgen warum das SETRANGE nicht geht?

22. März 2007 14:52

Bist du dir sicher, dass er nichts macht?
Klick mal anschließend in eineSubform-Zeile herein und wieder raus. Ist der Wert in dieser Zeile noch immer nicht aktualisiert?

Möglicherweise ist es nur ein Update-Problem. Dann muss auf der Subform
CurrForm.UPDATE ausgeführt werden.

22. März 2007 15:00

Kennst du dich mit dem Debugger aus? Wenn ja, überprüfe doch dort mal den Code.

Gruß, Marc

22. März 2007 15:02

Also wenn ich den Code so ausführe:

WITH rec_WARENEINGANG DO BEGIN

// SETRANGE("No.", "No.");
// SETRANGE(KUNUMMER, KUNUMMER);
MODIFYALL(STATUS, STATUS::WARENAUSGANG, TRUE);
END;

dann sehe ich sofort das er in den Zeilen umstellt von WARENEINGANG auf WARENAUSGANG, also er macht auch das was ich will.

Und sobald ich eine vondenbeiden auskommentierten Zeilen reinnehme geht es nicht mehr.

Von daher sollte es kein Update PRoblem sein, habe auch schon auftabellenebene geschaut, da ist keine veränderung....

22. März 2007 15:03

Achso, mit dem Debuggar habeichauchgeschaut, damacht er gar nichts, also der findet gar keinen Satz.

22. März 2007 15:27

KOMISCH! Ich habe anstatt SETRANGE("No.", "No."); nun SETFILTER genommen und dann gehts!

Aber ich versteh das nicht?????

Die Nummer ist Code feld, das muss doch auch mit setrange gehen???

22. März 2007 16:30

durch den WITH befehl könnte es Probleme geben....

entweder
Code:
BEGIN
  rec_WARENEINGANG.SETRANGE("No.", "No.");
  rec_WARENEINGANG.SETRANGE(KUNUMMER, KUNUMMER);
  rec_WARENEINGANG.MODIFYALL(STATUS, STATUS::WARENAUSGANG, TRUE);
END;


oder
Code:
WITH rec_WARENEINGANG DO BEGIN
  SETRANGE("No.", rec."No.");
  SETRANGE(KUNUMMER, rec.KUNUMMER);
  MODIFYALL(STATUS, STATUS::WARENAUSGANG, TRUE);
END;


dann sollte es gehen

22. März 2007 16:39

Lieber Michael,

woher weisst Du das blos alles? *g*!!!

ENDLICH GEHT ES!!!! JUHU!

Aber warum der with sich so komisch verhält wüßt ich mal gern... da wird man ja verrückt.

22. März 2007 16:58

tesarolle hat geschrieben:Aber warum der with sich so komisch verhält wüßt ich mal gern... da wird man ja verrückt.
Kann ich dir auch sagen ;)

Ich übersetze mal, was der WITH-Befehl an der Stelle macht:

Code:
WITH rec_WARENEINGANG DO BEGIN

  rec_WARENEINGANG.SETRANGE("No.", rec_WARENEINGANG."No.");
  rec_WARENEINGANG.SETRANGE(KUNUMMER, rec_WARENEINGANG.KUNUMMER);
  rec_WARENEINGANG.MODIFYALL(STATUS, rec_WARENEINGANG.STATUS::WARENAUSGANG, TRUE);
END;


Um sowas zu verhindern, muss man mit der Rec-Variable arbeiten.

22. März 2007 17:19

Vielen Dank!

Bin ich froh das das geht, endlich keine Wutanfälle mehr :-)!