Bonsoir Agur,
Après quelques essais, voici deux options pour solutionner ton problème.
Soit mettre le dataset en readonly := true avant d'exécuter la requête "select distinct..."
Soit changer le code suivant dans le fichier SqlitePassSQLSmts.inc et recompiler la library.
Procedure TSqlitePassSelectStmt.AddPrimaryKeys;
....
Tokenizer.Text := SQLSections.GetSectionText(kwSelect);
Tokenizer.InsertAfter(kwSelect, FPrimaryKeyStmt);
SQLSections.SetSectionTextFromTokenizer(kwSelect, Tokenizer);
FPrimaryKeyCount := TablesName.Count;
...
par celui-ci
Tokenizer.Text := SQLSections.GetSectionText(kwSelect);
if Tokenizer.Locate(kwDistinct)
then Tokenizer.InsertAfter(kwDistinct, FPrimaryKeyStmt)
else Tokenizer.InsertAfter(kwSelect, FPrimaryKeyStmt);
SQLSections.SetSectionTextFromTokenizer(kwSelect, Tokenizer);
FPrimaryKeyCount := TablesName.Count;
La deuxième solution sera incluse dans la prochaine version. Elle évite le message d'erreur mais ne retourne pas une requête "Distinct" réelle puisque une colonne rowid est ajoutée à la requête (pour écrire dans la base de données si besoin) et fausse le résultat. Donc, je te propose d'utiliser la 1ère solution.
@+
Luc