I am attempting to use the Progress.o4glrt.dll to retrieve Prodatasets into C#.net. I successfully used that following example to retrieve prodatasets with a single table:
However, as soon as I add a second table, I get the following error:
ERROR condition: Remote mismatched fields or mismatched BEFORE-TABLE attribute for temp-table parameter or dataset member parameter. (12324) (7211)
I have run each table independently in the prodataset, and each returns rows as expected. When I include both tables in the metadata at the same time, and add the relation code as follows, I get the above error:
ProDataRelationMetaData relation1 = new ProDataRelationMetaData("UsrRel", 1, 0, 1, "user-id,user-id");
md.AddDataRelation(relation1);
I have adjusted the parent and child indices, and also tried including each table's index in the TempTableMetaData. No luck on either approach. It appears I need to provide some piece of missing information, however it's not clear from the documentation or the error message what I need to include. I would appreciate any guidance from someone who has managed to successfully use the Open Client with Prodatasets containing multiple tables.
Thanks, Michael
No, I was advised not to use proxygen, and just code this directly. Also, I'm on 10.1C, which means I don't have access to the JSON methods, otherwise I would simply serialize the prodataset to a string and pass it. I suspect I'm missing something very simple, in order to add a second table to the prodataset on the client side, but I don't know what it is...
Yes, I might have to consider the xml option. But I was really hoping to pull back the tables directly into datasets on the .net side. I also ran a test this morning and discovered I get the same message if I output two temp-tables. If I output either temp-table individually, I can successfully return the data, but as soon as I add a second temp-table, I get errors. So both tables in a prodataset creates the error, and both tables returned by themselves creates the error, but either table returned by itself is fine. It's not clear what I am missing.
1) If you are using the OpenAPI then support can help you.
2) If you are coding to the low level dynamic API then you need to be aware that we do not support this. The dynamic API is not documented and can be changed by us at will.
3) If you want a better chance at someone here helping you then you need to provide your code or enough of the code for us to see everything that is going on (both client side and server side).
Brian,
The api I am using is the set of methods in Progress.Open4GL.Proxy. It is documented here:
documentation.progress.com/.../index.html
So I was able to solve my problem. It turns out that the first table in my prodataset I was defining "like" the original table in the database. Apparently there was some configuration on this table that I am not aware of how to code for on the .net side. The remaining tables did not have this problem. To solve the problem, I simple created the progress temp table and itemized each of the fields "like" the corresponding field in the database. This meant I was only capturing the fields and not the characteristic of the underlying table that I couldn't code for. If I get some time I will try to compose a blog post with additional examples since the Progress docs only contain one abbreviated example.
Thanks everyone for your comments...
Michael
Thanks for that observation. I'm new to Progress and just ordered the fields as they printed in the DB viewer, but they certainly could have been assigned different ordering.
Michael