Affichage des articles dont le libellé est Base de données - Lazarus. Afficher tous les articles
Affichage des articles dont le libellé est Base de données - Lazarus. Afficher tous les articles

jeudi 2 janvier 2025

Comment configurer le composant SQLQuery(Lazarus) pour qui'il fonctionne comme un composant ADOTable(Delphi)

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; 

.

lundi 30 décembre 2024

Lazarus - Login à une Base de Données Access protégée par mot de passe

 

Description :

Exemple d'une application créée avec Lazarus qui permet de se connecter à une base de données Microsoft Office Access protégée par un mot de passe de sécurité.

Exemple 1 : Débutant V1



Exemple simple, pour ça il faut définir manuellement le chemin vers la base de données "Materiels_Informatique.mdb" ou "Materiels_Informatique.accdb" dans les propriétés du composant ADOConnection1 comme suite :

- Pour base de données Access 2002-2003 (*.mdb) et 2007 (*.accdb)  :

with dm.ODBCConnection1 do

begin

Close;

LoginPrompt:=false;

KeepConnection:=true;

Driver:='Microsoft Access Driver (*.mdb, *.accdb)';

{dm.ODBCConnection1.Params : Paramètres de ODBCConnection1}

params.Clear;

Params.Add('DBQ='+ExtractFilePath(Application.ExeName)+'Materiels_Informatique.accdb'); //Chemin vers la base de données Access (.mdb ou .accdb)

Params.Add('Locale Identifier=1031');

Params.Add('PWD='+Edit_MotDePasse.Text); //Mot de passe de la base de données

end;{with dm.ODBCConnection1}

 

 

Dans l’unité « Project1 », la forme « F_login » doit être la forme qui se créer en premier, pour que lorsque on lance l’application c’est la forme « F_login » qui va s’afficher en premier et sera la forme principale du projet Lazarus, comme suite :

 

Exemple 2 : Débutant V2

 


Liens pour télécharger les codes sources des projets Lazarus :

Débutant V1 + V2 : Télécharger depuis (Google Drive)

 

samedi 28 décembre 2024

Lazarus - Comment connecter ODBCConnection1 à une base de données Microsoft Access protégée par un mot de passe de sécurité

 

1. On sélectionne le composant ODBCConnection1, ensuite :

- Ajouter « Microsoft Access Driver (*.mdb, *.accdb) » à la propriété Driver du composant ODBCConnection1

- Mettre KeepConnection à True

- Mettre LoginPrompt à False



 

2.

On clique sur le bouton de la propriété Params du composant ODBCConnection1, et dans la fenêtre qui va s’afficher on saisi comme dans la figure :

DBQ=.\Nom_Base_Données.accdb

PWD=Mot_De_Passe

DBQ=.\Nom_Base_Données.accdb -- On précède le nom de la base de données par « .\ » si elle se trouve dans le même emplacement que celui de l’exécutable « Project1.exe », sinon on doit spécifier le chemin comme D:\Database\Nom_Base_Données.accdb

 

Et au finale, on met : 

Connected à True