Dataset and Ultragrid multiband to one band ?

Posted by damienk on 17-Jun-2013 11:50

Hi,

I have a Dataset for a top-level table "T" and 3 child tables "C1" "C2" "C3".

Each of these child is bind to "T" by a one-to-one relation.

I do a simple "FILL" and load my probinding source with the schema generated by  "dataset:WRITE-XMLSCHEMA"

My ultragrid is displayed in 4 lines

T : band[0]/line1

C : band[1]/line2

C2 : band[2]/line3

C3 : band[3]/line4

Is there a way to display the grid in 1 one band/line only since I dont want to modify my temp-tables definitions ?

Thx

All Replies

Posted by Admin on 17-Jun-2013 12:08

Define a query joining all tables and use that Query for the binding source handle property

Posted by damienk on 18-Jun-2013 12:25

Hi Mike and thx for answering me back.

I did something like this :

(See Dataset above)

DEFINE QUERY qr FOR T, C1, C2, C3 SCROLLING.

DEFINE DATA-SOURCE src_qr FOR QUERY qr T KEYS (...), C1 KEYS (...), C2 KEYS (...), C3 KEYS (...).

QUERY qr:QUERY-PREPARE ('PRESELECT EACH T, FIRST C1 OF T, FIRST C2 OF T, FIRST C3 OF T).

BUFFER T:ATTACH-DATA-SOURCE (DATA-SOURCE src_qr:HANDLE).

ds_:FILL().

At runtime I have this error :

FILL requires an attached data-source for buffer C1 , or an active before-fill callback procedure. (11874)

And when I add a datasource to C1 I've got this error :

Buffer C1 may be in only one data-source at a time.  Use different buffers for the same table. (12298)

I think I'm missing something

Posted by asthomas on 18-Jun-2013 12:28

I am out of the office until July 3rd 2013. I will not be checking my mail and phone on a regular basis, but will reply to your mail as soon as I can.

If you need support from appSolutions, please send your mails to support@app-solutions.com.

If you need Roundtable support, please send mails to :

support-europe@roundtable-tsms.com.

Jeg er væk fra kontoret indtil den 3. juli 2013, og checker ikke mail og telefon regelmæssigt. Jeg vil dog svare på din mail så snart som muligt.

Hvis du har behov for support, kontakt venligst support@app-solutions.com, så vender vi tilbage så snart det er muligt.

Administrative henvendelser kan ske til : admin@app-solutions.com.

Med venlig hilsen / Regards

Thomas Hansen

appSolutions a/s

Posted by Peter Judge on 18-Jun-2013 12:33

Damien,

There's no need to attach a data-source in this case: the data-source is for populating the ProDataSet. How you populate the dataset (and which queries/approach you use to do that) has nothing really to do with how you show the data.

You can do something like the snippet below. Notice that the query is more-or-less the same. This query will return data that's in the dataset, and via the :Handle assignment, show it in the UI control(s) associated with the binding source.

Hth,

-- peter

Posted by damienk on 18-Jun-2013 15:25

Hi Peter,

Ty, I've finally bound my Query to the bindingsource like you did and it's working

However, the datas  that are displayed are only coming from 'T'.

Do I have to add fields to my temp-table "T" or an other solution exists ?

(As I said before, I prefer not to modify my temp-tables definitions.)

Posted by Admin on 18-Jun-2013 16:13

Do I have to add fields to my temp-table "T" or an other solution exists ?

You don't have to add the fields from C, C2 and C3 to the temp-table T.

But you need to add those fields to be ProBindingSource schema as an add-on to the table T.

Posted by damienk on 19-Jun-2013 05:13

Mike,

I did something like this :

THIS-OBJECT:pbs:SetFields("C1.aa,C1.bb,C2.aa,C2.ccc","",""). ?

I noticed too that I can't use the probinding source designer, so if I want to change the labels of some fields I have to implement it myself.

Think it's longer than expected, I should create my own temp-table with all the fields and labels I want to display in my grid and load the XMLSCHEMA with the pbs.

What do you think abouts theses 2 methods ?

Posted by Admin on 19-Jun-2013 05:28

THIS-OBJECT:pbs:SetFields("C1.aa,C1.bb,C2.aa,C2.ccc","",""). ?

 

There's no need to use SetFields - and that in fact conflicts with the ProBindingSource Designer.

You should import the schema of the first table using the ProBindingSource Designer and then manually add the fields from the other tables (manually) using the ProBindingSource designer to the first table. The tables remain physically different temp-tables. You just need to tell the ProBindingSource the schema of the result row of the joint query result.

Progress has not added that to the Visual Designer. Therefore we added this functionality to a customized (extended) ProBindingSource in our SmartComponent Library framework. But you can simply achieve the same in the standard tools by manually adding the fields.

Posted by damienk on 19-Jun-2013 11:56

Seems to work like a charm

Thank you !

Posted by damienk on 23-Sep-2013 05:22

Hi it's me again

I'd like to display in my grid 2 columns from 2 differents tables with same field name. (ex : CUSTOMER.NICKNAME and SELLER.NICKNAME)

When I do that with the designer I've got an error (duplicated key)

What to do, and what is the best solution for me ?

Posted by Admin on 23-Sep-2013 08:03

Check the ProBindingSources's property: UseFullFieldNames.

Assuming you are on a relatively current version of OpenEdge.

Posted by damienk on 23-Sep-2013 08:14

Hi Mike and thx for your reply.

I set it to true. And type customer:nickname but I have this error : The name of "customer:nickname" the field contains invalid characters.

My version is 102B.

Edit : Ok it's working manually...

This thread is closed