Dans ce tutoriel nous allons voir comment configurer SQLQuery dans Lazarus pour qu'il fonctionne comme un composant ADOTable de Delphi
Voici les deux composants :
1. Dans la propriété "DataBase" du composant SQLQuery(Lazarus), on choisit ODBCConnection1 qui est connecté à la base données Microsof Access "Materiels_Informatique.accdb" (Voir comment se connecter à une base de données Access avec ODBCConnection1), ensuite :
Dans la propriété "Transaction" du composant SQLQuery(Lazarus), on choisit SQLTransaction1
Dans la propriété "Database" du composant SQLTransaction, on choisit ODBCConnection1, et dans la propriété "Action" on choisit caCommit.
- Dans l’éditeur SQL de la propriété SQL on saisit la requête qui suit, avec quoi afficher toutes les lignes de la table "types" avec la procédure SQLQuery.Open; :
SELECT * FROM types
- Dans l’éditeur SQL de la propriété InsertSQL on saisit la requête qui suit, avec quoi insérer des données dans la table "types" avec la procédure SQLQuery.Insert; :
INSERT INTO types(lib_type) VALUES(:lib_type)
- Dans l’éditeur SQL de la propriété UpdateSQL on saisit la requête qui suit, avec quoi modifier les données de la table "types" avec la procédure SQLQuery.Edit; :
UPDATE types SET id_type=:id_type lib_type=:lib_type
WHERE id_type=:old_id_type
on ajoute le préfixe "OLD_" pour avoir la possibilité de modifier la valeur du champ clé primaire "num_id_type" comme :
- Dans l’éditeur SQL de la propriété DeleteSQL on saisit la requête qui suit, avec quoi supprimer des lignes de la table "types" avec la procédure SQLQuery.Delete; :
DELETE FROM types WHERE id_type=:id_type
2. Dans la propriété "Options" du composant SQLQuery(Lazarus), on met la valeur de "sqoKeepOpenOnCommit" à True, pour que SQLQuery reste activé après exécution des requêtes avec des instructions comme INSERT, UPDATE, DELETE au niveau du DataSet (SQLQuery) c'est à dire au niveau de l'ensemble de données chargé dans SQLQuery depuis la base de données,
SQLQuery.Options:=[sqoKeepOpenOnCommit];
- Mettre la propriété "UsePrimaryKeyAsKey" à False, dans le cas d'une base de données Microsoft Access en cas d’erreurs.
3. Pour insérer, modifier ou supprimer un enregistrement, on utilise les procédures qui suit:
procedure TForm1.btn_ajouterClick(Sender: TObject);
begin
SQLQuery.Insert; //Pour insérer un nouvel enregistrement
end;
SQLQuery.Edit; //Pour modifier un enregistrement
SQLQuery.Delete; //Pour supprimer un enregistrement
Et pour valider les changement au niveau de la base de données après exécutions des instructions comme INSERT, UPDATE, DELETE :
Méthode 1 : on peut utiliser les procédures qui suit avec un "Bouton Valider" par exemple:
procedure TForm1.btn_validerClick(Sender: TObject);
begin
try
SQLQuery.Post; //Appliquer les changements au niveau du "Dataset"
SQLQuery.ApplyUpdates(); //Appliquer les changements au niveau de la base de données
SQLQuery.Refresh; //Actualiser pour recharger les nouveaux changement des données au niveau de la base de données
Except on E:exception do
ShowMessage(E.Message); //En cas d'erreur afficher le message
end;
end;
Méthode 2 : ou bien on peut ajouter ces procédures aux événements du composant SQLQuery "AfterPost" et "AfterDelete", et comme ça la mise à jours des données au niveau de la base de données se fera automatiquement après chaque ajout, modification ou suppression d'un enregistrement :
procedure TForm1.SQLQueryAfterPost(DataSet: TDataSet);
begin
SQLQuery.ApplyUpdates(); //Appliquer les changements au niveau de la base de données après ajout ou modification
SQLQuery.Refresh; //Actualiser pour recharger les nouveaux changement des données au niveau de la base de données
end;
procedure TForm1.SQLQueryAfterDelete(DataSet: TDataSet);
begin
SQLQuery.ApplyUpdates(); //Appliquer les changements au niveau de la base de données après suppression
SQLQuery.Refresh; //Actualiser pour recharger les nouveaux changement des données au niveau de la base de données
end;
.