Kbase P106072: WHERE clause for Dynamic find on ProDataSet member buffer may refer to wrong buffer
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  9/13/2006 |
|
Status: Unverified
FACT(s) (Environment):
OpenEdge 10.0x
SYMPTOM(s):
Dynamic find refers to wrong buffer
FIND-FIRST() and FIND-LAST() methods return expected records
FIND-UNIQUE() method results in errors
The following errors may occur:
** No <file-name> record is available. (91)
** <file-name> record not on file. (138)
More than one <table> records found by a unique FIND. (3166)
Buffer is part of a ProDataSet
ProDataSet contains multiple buffers that have field names in common
WHERE clause for dynamic find includes field name that appears in two or more buffers in ProDataSet
Field name in WHERE clause is not qualified with buffer name
CAUSE:
Bug# 20050706-005
CAUSE:
To make dynamic coding on ProDataSets easier, a new feature was implemented that allows any WHERE clause on a ProDataSet buffer to refer to any buffer in that ProDataSet directly. This allows for easier and more efficient coding as one no longer needs to extract field values from a parent record, convert them into strings and add those to the predicate string used for dynamic queries and/or dynamic finds.
As a side effect, the way unqualified field names are handled changes when a buffer is part of a ProDataSet. While the predicate is being processed, the field name will be resolved against the first buffer in the ProDataSet where that name is found.
For a dynamic find, which is a single buffer operation, this behavior can be very unintuitive.
FIX:
Upgrade to 10.1A or later release
Workaround:
Ensure the field names are always qualified with the buffer name