Bonjour,
Toujours dans mon exploration de lazarus et sqlite, j'ai voulu faire des essais avec le composant natif de lazarus, surtout que je le pensais plus au point puisqu'en version 1.xx. La principale différence au départ c'est qu'il faut utiliser plusieurs composants : TSQlite3Connection, TSQLTransaction et TSQLQuery avec un TDatasource.
Pour l'usage du composant sqlite3 (se trouvant dans le répertoire composants) il ne faut que en plus du Tdatasouce que le composant TSqlite3Datset.
Jusque là point de problème. Mais à l'usage mes modestes connaissances sont mis à mal car je n'arrive pas effacer un enregistrement, je n'arrive pas à compacter ma base, pourtant avec l'autre composant pas de problèmes.
Je joins ci-dessous les 2 parties de programme qui fonctionnent avec TSQLite3Dataset et pas avec le natif espérant que l'un d'entre vous pourra m'indiquer mes erreurs.
pour effacement avec TSqlite3Dataset
Le même avec les composants natifs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 NBENREG:=SAutomat.RecNo; Edit3.Text:=IntToStr(NBENREG); MQ:='Delete from AUTOMAT WHERE K_AUTOMAT='+IntToStr(NBENREG); SAutomat.SQL:=MQ; SAutomat.ExecSQL; SAutomat.ApplyUpdates; SAutomat.Close; SAutomat.SQL:='Select * from AUTOMAT order by CODEDATE'; SAutomat.Open; SAutomat.ExecSQL; SAutomat.RefetchData;
SQLBank est un composant TSQLQuery qui remplace semble-t-il le passage de la commande SQL dans l'autre
Autre particularité, la recherche du nombre d'enregistrement avec la commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 XKEY:=SQLBank.FieldByName('K_BANK').Value; SQLBank.Close; MQ:='Delete from BANK WHERE K_BANK='+IntToStr(XKEY); SQLBank.Open; SQLBank.SQL.Text:=MQ; SQLBank.ExecSQL; SQLBank.ApplyUpdates;
donne aussi des résultats très étranges
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLBank.RecordCount
avec le premier composant c'est la valeur des enregistrements dans la vue selon les demandes à la sélection de la table, mais avec le natif, c'est n'importe quoi puis la valeur devient correcte après par exemple l'essai de suppression d'un enregistrement.
Toukours pour l'effacement j'ai tenté de le faire via le bouton d'un DBnavigator avec après la validation de la petite fenêtre de confirmation de l'effacement et un commande
l'enregistrement est bien supprimé de la vue mais pas de la table, à la réouverture il est toujours présent "comme le canard de Robert Lamoureux"
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQLBank.ApplyUpdates;
Tout cela fait beaucoup de questions, mais je n'y pas encore trouvé de réponses, alors merci de bien vouloir m'aider si possible.
Partager