Chapitre 5 : Derrière l'ensemble de données Données...
Le statut de la première section de données
Lors du développement d'applications de base de données avec Delphi et ADO, la majeure partie du travail est consacrée à l'étude de la documentation d'aide du composant Dataset. . Afin de créer un programme basé sur ADO, Delphi fournit plusieurs composants d'ensemble de données : TAdoTable, TAdoQuery et d'autres composants. Ils sont utilisés pour obtenir, présenter et modifier des données à partir de tables ou de requêtes de bases de données.
Dans le chapitre 5 de ce didacticiel, nous verrons comment présenter, parcourir et lire des données en introduisant certaines propriétés, événements et méthodes de la plupart des composants d'ensemble de données qui nous intéressent.
Choisissez, réglez, connectez et obtenez
Maintenant que vous avez atteint le chapitre 5, vous devriez connaître les étapes requises pour créer un formulaire de base de données. Au chapitre 4, nous avons créé manuellement un simple formulaire de navigation dans les données. Ce chapitre l’utilisera pour poursuivre la discussion.
Jusqu'à présent, nous n'avons utilisé qu'un seul composant d'ensemble de données (ADO) : TAdoTable. Il est important de comprendre que TADOQuery et TADODataSet (en tant que composants d'ensemble de données) utilisent les mêmes paramètres pour les mêmes méthodes et événements.
Sésame ouvert ; Sésame fermé (Sésame ouvert ; Sésame fermé)
L'une des caractéristiques très importantes du développement de bases de données Delphi est que Delphi nous permet de traiter les données lors de la conception du programme. Vous vous en souviendrez peut-être : dans le chapitre précédent, nous avons utilisé la propriété Active pour ouvrir une connexion active aux données au moment de la conception.
Il n'est pas difficile de comprendre qu'avant de commencer à traiter les données de la table, le programme doit d'abord ouvrir l'ensemble de données. Delphi dispose de deux manières d'obtenir cette fonctionnalité. La première est que, comme nous l'avons vu, la propriété Active peut être définie sur True au moment de la conception ou de l'exécution ; la seconde est que nous pouvons appeler la méthode Open au moment de l'exécution. Par exemple, ajoutez le code suivant au gestionnaire d'événements OnCreate du formulaire pour obtenir les données du composant ADOTable.
ADOTable1.Open;
Remarque : Chaque ensemble de données ADO peut accéder aux données de base de données via sa propre propriété ConnectionString ou un composant ADOConnection (et sa ConnectionString). Si le composant ADOTable1 est connecté au composant ADOConnection1 (cette méthode est recommandée), l'ouverture de ADOTable activera le composant ADOConnection correspondant. ADOConnection fournit deux événements qui seront exécutés : OnWillConnect et OnConnectComplete.
La méthode Open définit la propriété Active sur True et active la connexion. Lorsque nous avons terminé la connexion, nous pouvons définir la propriété Active sur False ou appeler la méthode Close pour nous déconnecter. Habituellement, nous plaçons l'appel à la méthode Close dans le gestionnaire d'événements OnClose du formulaire :
ADOTable1.Fermer ;
Avant de continuer, il est crucial de savoir que l’utilisation des méthodes et propriétés des ensembles de données repose sur la connaissance de l’état actuel des données. En termes simples, la propriété State d'un ensemble de données détermine quelles actions peuvent ou ne peuvent pas se produire sur l'ensemble de données à tout moment.
Comment allez-vous?
Si l'ensemble de données est fermé, l'état des données affichera une connexion inactive. Lorsque la connexion est fermée, aucune opération, comportement ou méthode ne peut être effectué sur les données. Lorsque nous ouvrons pour la première fois une connexion à l’ensemble de données, l’ensemble de données est dans l’état Parcourir par défaut. Vous devez toujours connaître l’état de « vos » données. Par exemple, lorsque nous connectons un ensemble de données à un DBGrid, l'utilisateur peut voir l'ensemble de données sous-jacent (ou l'ensemble d'enregistrements), mais s'il souhaite modifier certaines données, il doit définir l'état sur Modifier.
Lorsqu’un programme traite des données, il est important de comprendre que l’état de l’ensemble de données change constamment. Par exemple, lors de la navigation dans les données dans DBGrid (état Parcourir), l'utilisateur commence à modifier les enregistrements et l'état passe automatiquement à Modifier. Bien entendu, lorsque la propriété AutoEdit des contrôles de visualisation de données (DBGrid, DBEdit) est définie sur True, il s'agit de leur comportement par défaut.
Mais comment obtenir le statut ? ADOTable (ni aucun autre composant DataSet) n'a aucun déclencheur pour gérer les changements d'état.
Eh bien, jetons un coup d'oeil : pour chaque composant DataSet, nous utilisons généralement un composant DataSource pour restituer une connexion à un ou plusieurs contrôles de visualisation de données. C'est ça.
Chaque composant de source de données possède un événement OnStateChange, qui est déclenché chaque fois que l'état de l'ensemble de données sous-jacent change. Placez le code suivant dans le gestionnaire d'événements OnStateChange pour afficher l'état actuel du composant d'ensemble de données ADOTable1 à l'aide du titre du formulaire :
PRocédure TForm1.DataSource1StateChange(Expéditeur : TObject);
var ds : chaîne ;
commencer
cas ADOTable1.État de
dsInactif : ds:='Fermé';
dsBrowse : ds:='Navigation';
dsEdit : ds:='Édition';
dsInsert: ds:='Insertion d'un nouvel enregistrement';
autre
ds:='Autres états'
fin ;
Légende :='État ADOTable1 : ' + ds ;
fin ;