Subject Re: [IBO] Unidirectional - IBO 5.9.1 Build 2522
Author Patrick Marten
Hi Jason,

the unidirectional issue seems not to be solved yet.

- It's about a dashboard with an area showing top ten products based on the revenue from their sales
- IBObjects 5.9.3 Build 2620 RC1
- Firebird 2.5.2.26539
- An IBOQuery with the following SQL statement:
select PRODUCTS.ID, PRODUCTS.DESCRIPTION, sum(INVOICES_POSITIONS.TOTALNET_REDUCED) as REVENUE
from  INVOICES_POSITIONS
LEFT JOIN INVOICES ON (INVOICES_POSITIONS.INVOICEID = INVOICES.ID)
LEFT JOIN PRODUCTS ON (INVOICES_POSITIONS.PRODUCTID = PRODUCTS.ID)
where (INVOICES.INVOICE_DATE >= :DATE_FROM) and (INVOICES.INVOICE_DATE <= :DATE_TO) and (PRODUCTS.ID > 0) and (INVOICES.CANCELLED <> -1)
group by PRODUCTS.ID, PRODUCTS.DESCRIPTION
order by sum(INVOICES_POSITIONS.TOTALNET_REDUCED) desc
- Before opening, the parameter "DATE_FROM" is being set to '01.01.2017' and "DATE_TO" to '31.12.2017 23:59:59'
- then "open" and "first" are being called
- the first 10 records are being copied into a MemTable

If "unidirectional" is set to true, there are several variants of the result, but all are wrong:
Variant 1:
Just open the dashboard without any break points, debug outputs or ShowMessage: Here I see all the 10 records filled with the same product, which is the one that would be on top due to the highest revenue.

Variant 2:
Opening the dashboard with a break point set at the "open" method of the IBOQuery: Pressing F9 form here leads to the same 10 recods as in variant 1. Pressing F8 leads to just one record, which is the one, that would be the latest of all the obtained recods, but which wouldn't be within the top 10 records.

Variant 3:
Opening the dashboard with a break point set at the "first" method of the IBOQuery: Pressing F9 form here leads to just one record, which is the one, that would be the latest of all the obtained recods, but which wouldn't be within the top 10 records.

Variant 4:
Calling "OutputDebugString(PChar(IntToStr(MyIBOQuery.RecordCount)));" straight after "open" leads to the debug output "1" and there is again only one record, which is the one, that would be the latest of all the obtained recods, but which wouldn't be within the top 10 records.

Quite weird, that variant 1 shows 10 same records if there is no "interruption" like a debug step or debug output.


If "unidirectional" is set to false, everything is correct: 10 different records

So something seems to be broken still...

Best regards,
Patrick



From: "'IBO Support List' supportlist@... [IBObjects]" <IBObjects@yahoogroups.com>
To: IBObjects@yahoogroups.com
Sent: Monday, May 29, 2017 8:39 PM
Subject: RE: [IBO] Unidirectional - IBO 5.9.1 Build 2522

 
This bug is now confirmed fixed and it will be in the next release.
Please let me know if you would like me to bump your subscription a little so that you can get this fix.
 
Thanks,
Jason Wharton
 
 

From: IBObjects@yahoogroups.com [mailto: IBObjects@yahoogroups.com ]
Sent: Monday, May 22, 2017 3:07 AM
To: IBObjects@yahoogroups.com
Subject: Re: [IBO] Unidirectional - IBO 5.9.1 Build 2522
 



This bug still exists in IBO 5.9.3 Build 2577 Beta.
 
Couldn't test the current beta release, because our subscription expired recently.
 

From: "'IBO Support List' supportlist@... [IBObjects]" < IBObjects@yahoogroups.com >
To: IBObjects@yahoogroups.com
Sent: Saturday, November 19, 2016 8:40 PM
Subject: RE: [IBO] Unidirectional - IBO 5.9.1 Build 2522
 
 
I will get a hotfix out for this early next week.
 
Thank you for reporting this.
 
Kind regards,
Jason Wharton
 
 

From: IBObjects@yahoogroups.com [mailto: IBObjects@yahoogroups.com ]
Sent: Tuesday, November 08, 2016 6:04 AM
To: IBObjects@yahoogroups.com
Subject: [IBO] Unidirectional - IBO 5.9.1 Build 2522
 


Good Morning,

Used the component "ibo5.7.13.2411" and migrate to the latest version "ibo5.9.1.b2522" property of the query Unidirectional stopped working.
Now to to set the property "Unidirectional = true" data repeat.
The following example...

procedure TForm1.Button1Click(Sender: TObject);
begin
 qCustomer.Active := false;
 qCustomer.SQL.Text := 'select * from citys';
 qCustomer.Unidirectional := True;
 qCustomer.Active := true;
 qCustomer.first;
 while not qCustomer.eof do
 begin
   ListBox1.Items.Add(qCustomer.FieldByName('name_city').AsString);
   qCustomer.next;
 end;

end;


If the property is "Unidirectional = true" values are:

Alabama
Alaska
Arizona
Arkansas
California

If the property is "Unidirectional = false" values are:

Alabama
Alabama
Alabama
Alabama
Alabama

Att
Jonathan Fabricio Seibel