Seltsames Phänomen: Falscher Datensatz wird geschrieben

4. Oktober 2017 14:48

Hi,

seit längerer Zeit gibt es bei einem Kunden seltene Fälle, bei denen ein Kontakt mit Daten aus einem anderen Kontakt überschrieben werden.

Gearbeitet wird mit einer eigenen Page, mit der man Kontaktgespräche erfassen kann. Es liegt dort eine eigene Tabelle zu Grunde, in der man solche Kontaktgesprächsdaten anlegen und bearbeiten kann. Zudem befinden sich auch einige Felder aus dem Kontaktrecord selbst auf der Page (z.B. E-Mail Adresse, Telefonnummer oder Textinformationen zum Kontakt). Einige Felder vom Kontaktrecord lassen sich auch direkt auf der Gesprächs-Page bearbeiten (z.B. die Kontaktinformationen). Nun scheint es scheinbar beim Validieren dieser Felder zu passieren, dass die Daten eines Kontakts auf einen anderen Kontakt geschrieben werden.

Die Gesprächs-Page holt sich zur Anzeige der Kontaktdaten den Kontakt im OnAfterGetCurrRecord über die in der Tabelle eingegebenen Personenkontaktnummer. Also IF ContactRec.GET(Personenkontaktnr) then... Vor dem GET wird ein CLEAR(ContactRec) gemacht. Nur wenn das IF ContactRec.GET True ist, werden die Kontakteignen Felder zum Beschreiben freigegeben, ansonsten erhalten diese ein Editable=FALSE. Im ValidateTrigger dieser Felder auf der Gesprächs-Page steht nur ein ContactRec.MODIFY(TRUE).

Ich kann da keinen Fehler erkennen und den besagten Fehler auch nicht nachstellen. Es passiert auch einfach zu selten. Dafür konnte ich einmal Live mit dem Debugger erkennen, dass die ContactRec Variable mit einem falschen Kontakt gefüllt war. Das gleiche, beziehungsweise ein ähnliches Phänomen ist mir während der Programmierung an einer anderen Page aufgefallen. Dort verhielt sich das Datensatzanlegen bzw. -ändern auch mal sehr komisch. Wenn man die Page neu öffnet ist alles wieder normal.

Ich habe das Gefühl, dass es ein Clientfehler ist. (7.1.40941.0)
Kennt das jemand?

Hier mal ein Bild von der Page und den Kontaktfeldern, welche bearbeitbar sind (rot umrandet).
Microsoft.Dynamics.Nav.Client_2017-10-04_14-43-15.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: Seltsames Phänomen: Falscher Datensatz wird geschrieben

4. Oktober 2017 15:08

vandyke hat geschrieben:m ValidateTrigger dieser Felder auf der Gesprächs-Page steht nur ein ContactRec.MODIFY(TRUE).

Ich hoffe nur, wenn ContactRec."No." <> leer?

Wie sieht es im Contact OnModify Trigger aus? Wenn da irgendwo xRec verwendetwird, könnte es zu Nebenwirkungen kommen, da ihr ja den Kontakt nicht manuell auf der Standard-Kontaktkarte geändert habt, sondern streng genommen per Code. Wer weiß, was dann im xRec drin steht ...

Re: Seltsames Phänomen: Falscher Datensatz wird geschrieben

4. Oktober 2017 16:55

Zum xRec und OnModify muss jedenfalls dieses Verhalten beachtet werden:
viewtopic.php?f=68&t=32445&#p122499

Re: Seltsames Phänomen: Falscher Datensatz wird geschrieben

5. Oktober 2017 08:52

Natalie hat geschrieben:Ich hoffe nur, wenn ContactRec."No." <> leer?

Wie sieht es im Contact OnModify Trigger aus? Wenn da irgendwo xRec verwendetwird, könnte es zu Nebenwirkungen kommen, da ihr ja den Kontakt nicht manuell auf der Standard-Kontaktkarte geändert habt, sondern streng genommen per Code. Wer weiß, was dann im xRec drin steht ...


Naja, ob ContactRec."No." leer ist wird nicht (nochmal) geprüft. Da im OnAfterGetCurrRecord Trigger der Kontakt geholt wird und die Eingabefelder gesperrt werden, wenn der ContactRec leer ist (Also kein GET möglich war, weil z.B. die Kontaktnr. noch nicht gefüllt ist.). xRec = Rec, so wie Kowa geschrieben hat. Das ist aber kein Problem. Die Felder die auf der eigenen Page geändert werden dürfen (Im Bild rot) sind alles eigene Felder, wo es keine xRec <> Rec Programmierung gibt.

Der Fehler lässt sich auch überhaupt nicht nachstellen, dabei habe ich schon wie wild mit den Datensätzen herumgespielt.

Re: Seltsames Phänomen: Falscher Datensatz wird geschrieben

5. Oktober 2017 09:45

vandyke hat geschrieben:Der Fehler lässt sich auch überhaupt nicht nachstellen, dabei habe ich schon wie wild mit den Datensätzen herumgespielt.

hmmm - was mir spontan einfällt: vielleicht ändert ein anderer User ja den Datensatz?

Re: Seltsames Phänomen: Falscher Datensatz wird geschrieben

5. Oktober 2017 12:23

Hallo,

immer wieder gerne genommen wird auch eine lokale und globale Variable mit dem gleichen Namen :wink:

Gruß Fiddi

Re: Seltsames Phänomen: Falscher Datensatz wird geschrieben

5. Oktober 2017 12:57

Also im Änderungsprotokoll habe ich gesehen, dass ein User bei Kontakt A das eigene Feld Kontaktinfo am Kontakt geändert hat (über die eigene Page). Genau in der gleichen Sekunde wurden alle überwachten Felder von einem anderen Kontakt (Kontakt B) durch die Daten von Kontakt A überschrieben.

Daher schließe ich aus, dass ein anderer User solche Änderungen vornimmt. Die Variable existiert auch nur global.