[Gelöst] Nach Modify Datensatz temporär leer

13. Dezember 2007 14:30

Ich hab noch eine Frage, wo warscheinlich ein paar von euch die Antwort aus dem Ärmel schütteln werden. :oops:

Ich möchte, wenn in der Debitorkarte ein Debitor geändert wird, das ein Report ausgeführt wird. Das klappt auch soweit ganz gut. Nur ist es so, daß wenn ich den Debitor änder und dann auf den nächsten Datensatz gehen möchte (er also den Report ausführt) das dann erst einmal der Datensatz vom geänderten Debitor angezeigt wird, jedoch bis auf die Debitornummer sind alle Felder leer. Wenn ich dann nocheinmal weiter klicke komme ich erst auf den nächsten Datensatz, oder wenn ich zurück klicke erscheint dann der gefüllte geänderte Debitor.

Das ist natürlich unschön. Vielleicht könnt ihr mir nen Tip geben wie ich das ändern kann.

Mein Code um den Report aufzurufen befindet sich im OnModify Trigger der Customer Tabelle

Code:
CLEAR(CustomerProfile);
SETRANGE("No.","No.");
CustomerProfile.SETTABLEVIEW(Rec);
CustomerProfile.RUN;
Zuletzt geändert von Heike Bennerscheid am 13. Dezember 2007 14:49, insgesamt 1-mal geändert.

13. Dezember 2007 14:39

Verwende statt Rec eine lokale Variable vom Typ Customer (hier Cust):
Code:
CLEAR(CustomerProfile);
Cust.SETRANGE("No.","No.");
CustomerProfile.SETTABLEVIEW(Cust);
CustomerProfile.RUN;


Operationen auf Rec sind immer ein wenig kritisch ;-)

13. Dezember 2007 14:49

Ah danke. Klappt perfekt. Meine Heldin des Tages ;)

Schon irgendwie ein wenig lustig das so ein kleines Rec so einen "Fehler" verursachen kann. :) Und wieder ein wenig schlauer.

13. Dezember 2007 15:16

Heike Bennerscheid hat geschrieben:Ah danke. Klappt perfekt. Meine Heldin des Tages ;)

Da werden meine Wangen so rot wie meine Nikolausmütze ;-)

Aber hast du wirklich verstanden, warum das Rec so etwas ausgelöst hat?
Hier ein kleines Wintermärchen:
Wenn du auf der Debitorenkarte durch die Datensätze scrollst, scrollst du durch Rec.
Und wenn dein Report plötzlich ein SETRANGE auf den zuletzt geänderten Datensatz (Rec) macht, dann ist es nicht verwunderlich, warum der nächste Datensatz plötzlich leer ist:
In deinem Recordset gibt es (dank SETRANGE auf den Primärschlüssel) einen einzigen Datensatz, den du auch noch gerade durch das Scrollen verlässt. Navision denkt nun, du möchtest einen neuen Debitor anlegen und belegt diesen schon mal mit dem Rec-Filter (nämlich No.) vor.

13. Dezember 2007 15:36

Ah ja klar. *sich gegen die Stirn klatsch* Das erklärt so einiges. Hätt ich mit ein bischen mehr nachdenken wohl auch selber drauf kommen können. :oops: Trotzdem danke für dieses tolle Wintermärchen :wink: (Ist ja vielleicht auch noch für andere Hilfreich)