Jump to content
Rafal.B

Delphi 12 - 'Bind Visually' -> StringGrid connection works very slowly

Recommended Posts

Hello everyone.

I have a classic layout (Windows-FMX, MSSQLExpress database):
ADODataSet -> 'Bind Visually' -> StrinGrid
ADODataSet.CommantText = 'SELECT TOP 100 * FROM xxx' (regord contains about 90 fields)

The database contains approximately 60,000 records.
At design time, in Delphi 11, selecting ADODataSet.Active=True causes data to appear in the StrinGrid in ca. 0.3-0.5 sec.
In Delphi 12, this operation takes 5-7 seconds.
Of course, it behaves identically during execution time.
I've already tried:
I imported the database into MySQL, I used FireDAC components:
FDConnection -> FDQuery -> 'Bind Visual' -> StrigGrid. Unfortunately, the effect is the same.
However, when editing FDQuery (FireDAC Query Editir), after pressing 'Execute', the data in the 'RecordSet' tab appears immediately.
This means that this delay occurs within 'Bind Visual' -> StrigGrid.

What's changed in D12?
I have no idea how to solve this.
Such a long delay is unacceptable to me.

Edited by Rafal.B

Share this post


Link to post

Just to be clear, the application is the same in D11 and in D12? Or are you comparing VCL to FMX?

Share this post


Link to post

It's the same application.
I uninstalled D11 and installed D12.
I didn't change anything in the application itself.
Application in the FMX environment, Windows 23H2.
As a test, I installed D11 on a virtual machine.
And everything works quickly there as it should.

 

I noticed that right after starting D12, the first activation of ADODataSet.Active=True happens quickly (like in D11), and each subsequent activation is slower.
The same thing happens when the program is executed (fast first, then slowly);

Edited by Rafal.B

Share this post


Link to post

Delphi 12 Version 29.0.50491.5718:

I just did a small test on a fast MSSql server with a similar query on a very large table and I do not see such a delay. The data is shown quickly. I'm just using FDConnection and FDQuery. Probably your setup is different or your table contains some (big) blob's that are fetched?

 

Also tried ADOConnection/ADOQuery, this was actually a little bit faster.

 

Please provide a sample.

 

image.thumb.png.8ba67f5280d26ada64defa6bf98fee2a.png

Edited by Keesver

Share this post


Link to post

I recorded a video showing the problem:
Clean install of Windows and Delphi 12
The video shows ADOQuery activation in three situations:
1 - No StringGrid links to BindSouce
2 - StringGrid connected to one BindSouce field
3 - StringGrid connected to all BindSouce fields
The problem is option 3.
As you can see, the problem is not the speed of the connection to the database, but what happens in BindSouce and StringGrid with a larger number of fields in the record.
The number of fields in the record is about 90. The types used are: nchar, datetime, tinyint, int, float and nothing else.
I would like to point out that this problem does not occur on D11.

Share this post


Link to post

I found the culprit in this situation. It is: 
StringGrid -> Options -> Header
Disabling this option causes the data to display as quickly as in D11. Of course, the Header is not displayed then.
I compared the "FMX.Grid" file with D11 and D12.
There are a lot of changes regarding Header.
Unfortunately, something went wrong with Embarcadero, and I have no way to report it to them because QP still doesn't work.

 

Knowing what the problem is, the thread should be in the "FMX" topic.

Edited by Rafal.B

Share this post


Link to post

I reported this problem to technical support.
They confirmed its occurrence. They asked me to wait until the QP portal is launched and report it there.
I wonder if I'm the only one who has this problem?

Share this post


Link to post

I just installed Delphi 12.1
and no problem, everything works properly (fast). :classic_biggrin:👍

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×