ZDataset.Locate + loPartialKey lazarus / 16-Databases ---------------------------------------------------------------------- tintinux · 2024-12-02 15:47 Hi With Zeos 8.0, I found that the TZQuery.Locate method with loPartialKey doesn't work anymore as usual. 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) Unfortunately, I can't post on the ZeosLib forum (blocked, unable to access sourceforge.io) and don't find a related post elsewhere. But I don't know if the issue is related to ZeosLib or Lazarus... 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'm sure that it was ok with Zeos 7 and the same code and configuration. I can easily reproduce with this code example (only one string field). Code: [Select]procedure TForm1.Edit1Change(Sender: TObject); begin   if ZreadonlyQuery1.Locate ('Account', edit1.Text, [loPartialKey] ) then     caption := 'found'   else     caption := 'not found'; end;  I have attached the full Lazarus project. Enter the name, username and password of your database in Zconnection1, and Code: [Select]CREATE TABLE Accounts ( Account VARCHAR(10) NOT NULL ); INSERT INTO Accounts VALUES ('1000'), ('1005'), ('2000'); Or you can adapt the code to an existing table... Any ideas or workaround ? ---------------------------------------------------------------------- tintinux · 2024-12-03 14:19 The problem seems new with ZeosLib 8.0 I have installed ZeosLib 7.2.6 and it works fine as expected with the example. Some manual changes are required in the .lfm, I find no way to make it compatible with both versions. Unfortunately there are other bugs in this version, solved only by the 8.0. ---------------------------------------------------------------------- Sieben · 2024-12-03 22:30 Why not use SQLdb then? ---------------------------------------------------------------------- tintinux · 2024-12-04 08:14 You are off topic, but the answers to your question are : 1) SqlDb can attach to only one Database type (and sometimes to only one Database version) at a time. 2) SqlDb doesn't exist for Delphi AFAIK, and many developers are required to use it and don't want to have to master too many packages 3) I would have all my projects to change and test, with no known advantage. 4) I am sure that a workaround or a fix will be find to solve my small issue Regards ---------------------------------------------------------------------- silvercoder70 · 2024-12-10 09:49 I typically use Filter/Filtered properties of the query with LIKE Not sure how well that would work in your scenario? if Edit1.Text = '' then Query1.Filtered := False else begin Query1.Filter := ...; Query1.Filtered := True; end; ---------------------------------------------------------------------- tintinux · 2024-12-17 10:51 Hi The bug is fixed in the SVN of ZeosLib. More details here. Cheers