Consultor Eletrônico



Kbase P89359: DATETIME field causes error 5729 in af/app/afauditlgp.p audit procedure
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/10/2008
Status: Unverified

FACT(s) (Environment):

OpenEdge 10.0A

SYMPTOM(s):

Dynamics

Updating records get error:

Incompatible datatypes found during runtime conversion (5729)

The 4GL Stack Trace shows the error in af/app/afauditlgp.p

One of the updated fields has DATETIME data type.

Auditing is enabled for that table

CAUSE:

This is a known issue being investigated by Development.

FIX:

In af/app/afauditlgp.p use STRING function everywhere the BUFFER-VALUE is used.

ORIGINAL af/app/afauditlgp.p code:


/*-----------------------*/
IF LOOKUP(pcAction,"DELETE":U) > 0
THEN DO:
ASSIGN
cBufferFieldValueOld = (IF VALID-HANDLE(hNewBufferField) THEN hNewBufferField:BUFFER-VALUE ELSE "":U)
cBufferFieldValueNew = (IF VALID-HANDLE(hOldBufferField) THEN hOldBufferField:BUFFER-VALUE ELSE "":U)
.
END.
ELSE DO:
ASSIGN
cBufferFieldValueNew = (IF VALID-HANDLE(hNewBufferField) THEN hNewBufferField:BUFFER-VALUE ELSE "":U)
cBufferFieldValueOld = (IF VALID-HANDLE(hOldBufferField) THEN hOldBufferField:BUFFER-VALUE ELSE "":U)
.
END.
/*-----------------------*/



SUGGESTED SOLUTION:
/*-----------------------*/
IF LOOKUP(pcAction,"DELETE":U) > 0
THEN DO:
ASSIGN
cBufferFieldValueOld = (IF VALID-HANDLE(hNewBufferField) THEN /*Change*/ string(hNewBufferField:BUFFER-VALUE) ELSE "":U)
cBufferFieldValueNew = (IF VALID-HANDLE(hOldBufferField) THEN /*Change*/ string(hOldBufferField:BUFFER-VALUE) ELSE "":U)
.
END.
ELSE DO:
ASSIGN
cBufferFieldValueNew = (IF VALID-HANDLE(hNewBufferField) THEN /*Change*/ string(hNewBufferField:BUFFER-VALUE) ELSE "":U)
cBufferFieldValueOld = (IF VALID-HANDLE(hOldBufferField) THEN /*Change*/ string(hOldBufferField:BUFFER-VALUE) ELSE "":U)
.
END.
/*-----------------------*/