Consultor Eletrônico



Kbase P132426: 4GL/ABL: Error (8826) & (5367) invoking BUFFER-COPY() method with empty except-list.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   6/19/2008
Status: Unverified

FACT(s) (Environment):

All Supported Operating Systems
OpenEdge 10.x

SYMPTOM(s):

4GL/ABL: Error (8826) & (5367) invoking BUFFER-COPY() method with empty except-list

Field <field-name> from <file-name> record (recid <RECID>) was missing from FIELDS phrase. (8826)

Couldn't extract field '<field>' from source in a BUFFER-COPY statement. (5367)

Field Country from Customer record (recid 97) was missing from FIELDS phrase. (8826)

Couldn't extract field 'Name>' from source in a BUFFER-COPY statement. (5367)

Executing the following code:
DEFINE VARIABLE hTempTableBufferHandle AS HANDLE NO-UNDO.
DEFINE VARIABLE hTableBufferHandle AS HANDLE NO-UNDO.
DEFINE TEMP-TABLE ttCustomer NO-UNDO
FIELD CustNum LIKE Customer.CustNum
FIELD Country LIKE Customer.Country
FIELD Balance LIKE Customer.Balance.
CREATE BUFFER hTempTableBufferHandle FOR TABLE "ttCustomer".
ASSIGN
hTableBufferHandle = BUFFER Customer:HANDLE
hTempTableBufferHandle = BUFFER ttCustomer:HANDLE.

FOR EACH Customer FIELDS (Customer.CustNum Customer.Balance) WHERE Customer.CustNum < 5 NO-LOCK:
CREATE ttCustomer.
hTempTableBufferHandle:BUFFER-COPY(hTableBufferHandle,"", "Customer.CustNum,ttCustomer.CustNum,Customer.Balance,ttCustomer.Balance").
END.
FOR EACH ttCustomer:
DISPLAY ttCustomer.
END.


CAUSE:

All target buffer fields that are missing from the the copy pairs-list of the BUFFER-COPY() method must be explicitly listed in the except list of the BUFFER-COPY() method. In the above sample code, the field ttCustomer.Country is missing from the copy pairs-list and is not listed in the except list of the BUFFER-COPY() method as required.

FIX:

Include all target buffer fields that are missing from the the copy pairs-list of the BUFFER-COPY() method in the except list of the BUFFER-COPY() method. For example, to fix the above code, add the missing "Country" field to the except list of the BUFFER-COPY() method. That is change the statement:
hTempTableBufferHandle:BUFFER-COPY(hTableBufferHandle,"", "Customer.CustNum,ttCustomer.CustNum,Customer.Balance,ttCustomer.Balance").
To:
hTempTableBufferHandle:BUFFER-COPY(hTableBufferHandle,"Country", "Customer.CustNum,ttCustomer.CustNum,Customer.Balance,ttCustomer.Balance").