Admin Fondateur
Nombre de messages : 197 Age : 40 Localisation : Tlemcen ( Algérie ) Date d'inscription : 04/12/2006
| Sujet: relier des requêtes en maître/détail Mar 13 Fév - 1:50 | |
| Prenons l'exemple d'une relation entre les tables CLIENT et FACTURE. Requête maître (associée à un composant DSClient : TDataSource) - Code:
-
SQLClient.SQL.Add := 'SELECT cli_no, cli_nom, cli_prenom, cli_telephone, ville'; SQLClient.SQL.Add := 'FROM client'; Requête détail (associée à un composant DSFacture : TDataSource) - Code:
-
SQLFacture.SQL.Add := 'SELECT cli_no, fac_no, fac_date, fac_montant_ttc'; SQLFacture.SQL.Add := 'FROM facture'; SQLFacture.SQL.Add := 'WHERE cli_no = :cli_no'; Méthode 1 : Propriété DataSource Selon le jeu de composants que vous utilisez (BDE, IBX ,dbExpress...), vos requêtes disposent ou non d'une propriété DataSource. Dans l'inspecteur d'objets, mettez DSClient dans la propriété DataSource de SQLFacture.
Méthode 2 : Evènement OnAfterScroll L'évènement OnAfterScroll d'un ensemble de données se déclenche après chaque changement d'enregistrement. L'expression :cli_no présente dans la requête de SQLFacture correspond à un paramètre dynamique de cette requête, nous allons donc devoir lui affecter manuellement ses valeurs. - Code:
-
procedure TMyForm.SQLClient.AfterScroll(Sender: TDataSet); begin SQLFacture.Close; SQLFacture.ParamByName('cli_no').AsInteger := SQLClient.FieldByName('cli_no').AsInteger; SQLFacture.Open; end; | |
|