Schreibtransaktion

Bild Microsoft Dynamics NAV 4.xx
(ehem. Microsoft Business Solutions-Navision)

Schreibtransaktion

Beitragvon MSNAVLerner » 11. März 2016 12:14

Hallo Community,

ich habe ein fĂĽr mich wirklich ĂĽberraschendes Problem. Scheinbar ĂĽbersehe ich etwas.

Code: Alles auswählen
recVKKopf.setrange("Nr.", "gesuchteNr.");
recVKKopf.setrange("gesperrt, FALSE);
IF recvkkopf.findfirst THEN BEGIN
  recVKKopf2 := recVKKopf;
  recVKKopf2.gesperrt := TRUE;
  recVKKopf2.MODIFY(TRUE);
END;


Das Beispiel ist fiktiv ausgedacht. Ich habe sowas schon öfters umgesetzt, doch diesmal spuckt er mir folgende Fehlermeldung aus.
Dateianhänge
11-03-_2016_11-09-37.png
Fehlermeldung
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Schreibtransaktion

Beitragvon fiddi » 11. März 2016 12:23

Hallo,

schöner Fehler :-)

Das Problem ist, dass du einen Datensatz ändern möchtest, bei dem eine Meldung erscheinen würde(RUNMODAL- Dialog, z.B. Kreditlimit- oder Bestandswarnung ), bevor du einen Commit gemacht hast.
Das darf nicht passieren, da du damit das ganze System blockieren könntest, weil die Meldung den/die gesperrten Datensätze blockieren würde.

Lösung:
Nach dem Dialog suchen, der die Meldung verursacht, verhindern das die Meldung erscheint.

Es ist in den seltensten Fällen eine gute Idee, einfach ein COMMIT einzufügen, da hierdurch verhindert wird, das durch auftretende Fehler die Transaktion korrekt zurück gedreht wird.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Schreibtransaktion

Beitragvon Natalie » 11. März 2016 12:32

MSNAVLerner hat geschrieben:Das Beispiel ist fiktiv ausgedacht.
Es passt überhaupt nicht mit der Fehlermeldung zusammen. Kannst du bitte das Beispiel entweder verfeinern (da fehlen doch Aufrufe o.ä.) oder am besten gleich den Originalcode zeigen?
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Schreibtransaktion

Beitragvon fiddi » 11. März 2016 12:49

Es passt überhaupt nicht mit der Fehlermeldung zusammen. Kannst du bitte das Beispiel entweder verfeinern (da fehlen doch Aufrufe o.ä.) oder am besten gleich den Originalcode zeigen?


Nun das Beispiel könnte schon funktionieren, wenn du "Gesperrt" mit Validate zuweist.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Schreibtransaktion

Beitragvon MSNAVLerner » 11. März 2016 14:19

Ich habe weder in der Form (da ist editable = no), noch in der Table Validatefunktion irgendwas an Code stehen.
Deswegen bin ich ja verwundert.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Schreibtransaktion

Beitragvon rwendler » 11. März 2016 14:22

Dann gibt es eine Programmierung im Modify Trigger der Tabelle, welches ein RUNMODAL auslöst!

VG
Robert
Benutzeravatar
rwendler
 
Beiträge: 86
Registriert: 5. Februar 2013 17:51
Wohnort: Berlin
Realer Name: Robert Wendler
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.60 bis 2017

Re: Schreibtransaktion

Beitragvon fiddi » 11. März 2016 14:34

Ich habe weder in der Form (da ist editable = no), noch in der Table Validatefunktion irgendwas an Code stehen.
Deswegen bin ich ja verwundert.


Der Fehler kann einer ganz anderen Stelle sein, das lässt sich nur durch einbauen von temporären COMMITS lokalisieren. Der Fehler tritt zwischen dem letzten und dem aktuellen COMMIT auf. Du musst jetzt durch die Commits den Bereich eingrenzen.

HINWEIS: Das ganze bitte nicht auf einer ECHT- DB machen, weil dadurch Daten verfälscht werden können.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Schreibtransaktion

Beitragvon rwendler » 11. März 2016 14:53

Commits braucht man dafür nicht! Davon würde ich ganz klar abraten. Es reicht Step by Step Messages einzubauen, die nur unter einer Benutzerid laufen. Dann stört man auch keine Anwender. Das problem liegt dann immer hinter der letzten angezeigten Message.

Wer Commits einbaut erzeugt nur Datenschrott (ob Test oder Echtsystem ist dabei doch egal). Den administrativen Aufwand eine Testdatenbank, danach neu aufzubauen oder zu bereinigen, kann man sich sparen.

Code: Alles auswählen
IF UPPERCASE(USERID) = 'ROBERTW' THEN
  MESSAGE('1: Step1');

...

IF UPPERCASE(USERID) = 'ROBERTW' THEN
  MESSAGE('2: Step2');

...

IF UPPERCASE(USERID) = 'ROBERTW' THEN
  MESSAGE('3: Step3');
Benutzeravatar
rwendler
 
Beiträge: 86
Registriert: 5. Februar 2013 17:51
Wohnort: Berlin
Realer Name: Robert Wendler
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.60 bis 2017

Re: Schreibtransaktion

Beitragvon MSNAVLerner » 11. März 2016 15:08

rwendler hat geschrieben:Dann gibt es eine Programmierung im Modify Trigger der Tabelle, welches ein RUNMODAL auslöst!


Das habe ich im Codebeispiel ausversehen "falsch" rein geschrieben.
Ich rufe MODIFY ohne TRUE auf. Im MODIFY werden "Geändert von", "Geändert am", "Geändert um" gesetzt.

Ich entwickle nur auf meinem lokalen Testsystem.
Es fĂĽhrt wohl kein Weg dran vorbei Step by Step ĂĽber MESSAGES zu suchen.
MSNAVLerner
 
Beiträge: 145
Registriert: 15. September 2015 16:50
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: Schreibtransaktion

Beitragvon fiddi » 11. März 2016 15:28

Hallo,

soviel ich weiß ist ein MESSAGE nicht Modal, und damit kein Problem für die Funktion. Alternative wäre evtl. ein CONFIRM, das könnte eine Lösung sein.

GruĂź Fiddi
Wer aufhört besser zu werden, hat aufgehört gut zu sein. (frei nach Philip Rosenthal)
Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
fiddi
Moderator
Moderator
 
Beiträge: 7091
Registriert: 9. Juni 2008 10:13
Realer Name: Hans Heinrich Fiddelke
Arbeitsort: Bremen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: NAV2.6-aktuell

Re: Schreibtransaktion

Beitragvon rwendler » 11. März 2016 15:32

Die Message läuft nicht modal. Das ist korrekt. Allerdings spielt das in dem Fall auch keine Rolle?! Die Messages werden ja trotzdem ausgeführt und anhand des Inhaltes kann man nach dem Fehler sehen, welche Messages ausgeführt worden sind.

Ein Confirm wĂĽrde natĂĽrlich auch gehen :)

VG
Robert
Benutzeravatar
rwendler
 
Beiträge: 86
Registriert: 5. Februar 2013 17:51
Wohnort: Berlin
Realer Name: Robert Wendler
Arbeitsort: Berlin
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2.60 bis 2017


ZurĂĽck zu NAV 4.xx

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Bot, Unbekannter Robot, Unbekannter Spider und 1 Gast