+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Problem with array (extent) fields in OpenEdge data provider

I have a report which has a table which contains array fields. When I pass these fields to LL through the OpenEdge Dataprovider, the report ends up empty. The Log file shows an error about reference to an ivalid object (don’t have the exact error available at this moment).

The fields show correctly in the designer (as fieldname_1, fieldname_2, etc) but at print time, an error is generated. The error is related to the extent fields because the report runs fine is I remove the extent fields from the layout.

EDIT: I think I have found the cause of the behavior: For extent fields I adapted the OpenEdge DataProvider class file “OpenEdgeSchema.cls”. The “RegisterTable” method, parses index fields using the convention: FieldName + “_” + STRING(index). I had changed this to FieldName + “.” + STRING(index,“99”) as it would nicely sort array fields (FieldName.01, FieldName.02, FieldName.03), etc.

For the List&Label design, that worked fine (which is why I did not get any errors during design time) but when the dataprovider tries to send values, it crashed. I looked into the source code and found code in DataProvider.cs which also assumes the convention FieldName + “_” + STRING(index). As I changed the fields to FieldName + “.” + STRING(index, “99”) it failed.

So mystery solved, question remains: So I am considering whether to change the DataProvider.cs code to “match” my convention or (alternatively) change my report layouts to match the expected provider.

My dataprovider uses underscore as an array delimiter. This is not going to change. It’s up to you if it’s worth to create a custom version of the data provider ( which you have to upgrade manually with each new version and that will never be integrated in the report server) for a feature of “nice array sorting”. I would never do that!

Hi Thomas, I totally agree on not wanting do adjust the dataprovider just to have “nice array sorting”. The reason I did it is mainly because I wanted to change the underlying technology while affecting the existing reports as little as possible for now.