I found that the TZQuery.Locate method with loPartialKey doesn't work anymore as expected on Zeos 8.0
At least using Ubuntu 24.04, Lazarus 3.6, and MariaDb Ver 15.1 Distrib 10.11.8-MariaDB, for debian-linux-gnu (x86_64)
Problem is :
When the first characters of an existing key are entered, the result of Locate returns false (and the position in the Dataset don't change).
When a full existing key is entered, the Locate returns true and position is changed, as expected.
Looks like [loPartialKey] is ignored.
I have checked that it is OK with Zeos 7.2.6 and the same code and configuration.
I can easily reproduce with an example project, containing :
Code: Select all
procedure TForm1.Edit1Change(Sender: TObject);
begin
if ZreadonlyQuery1.Locate ('Account', edit1.Text, [loPartialKey] ) then
caption := 'found'
else
caption := 'not found';
end;
Or you can adapt the code to an existing table.
I'm unable to add the example project in attachments.