Ouverture et fermeture des ensembles de données
Remonter à Compréhension des ensembles de données - Index
Pour lire ou écrire des données dans un ensemble de données, une application doit d'abord l'ouvrir. Il y a deux moyens de procéder :
Open (méthode) | Code exemple |
---|---|
Définir la propriété 'Active' de l'ensemble de données à True, soit dans l'inspecteur d'objets à la conception, soit dans le code à l'exécution. |
CustTable.Active := True;
CustTable->Active = true;
|
Appeler la méthode Open de l'ensemble de données au moment de l'exécution. |
CustQuery.Open;
CustQuery->Open();
|
Lorsque vous ouvrez l'ensemble de données, celui-ci reçoit d'abord un événement DB.BeforeOpen, puis il ouvre un curseur, se remplit lui-même de données et, enfin, reçoit un événement DB.AfterOpen.
L'ensemble de données qui vient d'être ouvert est en mode visualisation, ce qui veut dire que votre application peut lire des données et naviguer dans cet ensemble de données.
Il y a deux façons de fermer un ensemble de données :
Close (méthode) | Code exemple |
---|---|
Définir la propriété Active de l'ensemble de données par False, soit dans l'inspecteur d'objets à la conception, soit dans le code à l'exécution. |
CustQuery.Active := False;
CustQuery->Active = false;
|
Appeler la méthode Close de l'ensemble de données au moment de l'exécution. |
CustTable.Close;
CustTable->Close();
|
De même que l'ensemble de données reçoit les événements BeforeOpen et AfterOpen quand vous l'ouvrez, il reçoit les événements DB.BeforeClose et DB.AfterClose quand vous le fermez. Vous pouvez utiliser ces événements, par exemple, pour inviter l'utilisateur à valider les modifications en attente ou à les annuler avant de fermer l'ensemble de données. Le code suivant illustre un tel gestionnaire :
procedure TForm1.CustTableVerifyBeforeClose(DataSet: TDataSet);
begin
if (CustTable.State in [dsEdit, dsInsert]) then begin
case MessageDlg('Post changes before closing?', mtConfirmation, mbYesNoCancel, 0) of
mrYes: CustTable.Post; { save the changes }
mrNo: CustTable.Cancel; { abandon the changes}
mrCancel: Abort; { abort closing the dataset }
end;
end;
end;
void __fastcall TForm1::VerifyBeforeClose(TDataSet *DataSet)
{
if (DataSet->State == dsEdit || DataSet->State == dsInsert)
{
TMsgDlgButtons btns;
btns << mbYes << mbNo;
if (MessageDlg("Post changes before closing?", mtConfirmation, btns, 0) == mrYes)
DataSet->Post();
else
DataSet->Cancel();
}
}
Remarque : Il se peut que vous deviez fermer un ensemble de données lorsque vous désirez changer certaines de ses propriétés, comme TableName sur un composant Bde.DBTables.TTable. Lorsque vous rouvrez l'ensemble de données, la nouvelle valeur de propriété prend effet.
Voir aussi
- Modification des données
- Types d'ensembles de données
- Détermination des états d'un ensemble de données
- Navigation dans les ensembles de données
- Recherche dans les ensembles de données
- Affichage et édition d'ensembles de données en utilisant des filtres
- Champs calculés
- Utilisation des descendants de TDataSet