Consultor Eletrônico



Kbase P72895: Creating a record in a converted database errors with bffld: nxtfld: scan past last field
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   02/01/2009
Status: Verified

SYMPTOM(s):

Creating a record in a converted database errors with bffld: nxtfld: scan past last field

SYSTEM ERROR: bffld: nxtfld: scan past last field. (16)

Version 9 database had no errors on creation of record.

Release 10 database converted from version 9 with conv910 utility.

The dbrpr scan shows Invalid data block found after running conv910.Reason: Bad entry count.

FACT(s) (Environment):

Windows 2000
Progress 9.1D
OpenEdge 10.0A
OpenEdge Category: Database

CAUSE:

bug#20040319-021

CAUSE:

The problem deals with checking for mandatory fields for a new (or
presumably an updated) record. There is an array ("mand") that gets
constructed and kept in memory, one array element for each mandatory field
of a table. The algorithm that checks for mandatory fields relies on the array being in order by the field's physical position. A change was made in 10.0A that caused this array to be in rpos order.
If the rpos order does not collate the same as the phys pos order, this
error will result.

FIX:

Upgrade to Progress 10.0B


If an upgrade is not possible, use one of the following methods:

1. Dump and load using Data Dictionary.

2. Change _field-rpos for all fields in each table where the issue exist such that they have the same order as _field-physpos:

Use the following code to display your current values.

for each _file where _file-name = "<tablename>":
for each _field of _file by _field-physpos:
display _field-name _field-physpos _field-rpos.
end.
end.


Use the following code to make both values match.

For each _file where _hidden = no:
for each _field of _file:
_field-rpos = _field-rpos + 100.
End.
End.

For each _file where _hidden = no:
for each _field of _file:
_field-rpos = _field-physpos.
End.
End.