version 1 - Decembre 97
Le composant UpdateMulti est similaire au composant UpdateSQL de Delphi, mais permet la mise à jour de plusieurs tables.
Le composant UpdateMulti a été développé par Cogisoft, il est utilisé pour le développements d'applications réalisés par Cogisoft aussi bien pour des clients qu'en interne depuis début 1996.
Ceux d'entre vous qui connaissent le composant UpdateSQL n'auront pas de mal à appréhender le composant UpdateMulti.
Le principe en est le même, UpdateMulti apporte simplement des fonctionnalités supplémentaires.
Le composant UpdateSQL présent dans Delphi depuis la version 2 permet de fournir les requêtes à exécuter lors d'une mise à jour sur un composant Query. Le composant UpdateSQL a trois propriétés principales: DeleteSQL, InsertSQL et ModifySQL. Ces propriétés contiennent la requête SQL à exécuter respectivement lors d'une suppression, d'une insertion ou d'une modification.
Une limitation du composant UpdateSQL apparait lorsqu'on souhaite que la mise à jour porte sur plusieurs tables: chaque propriété ne peut contenir qu'une seule requête SQL (DELETE, INSERT ou UPDATE).
Ce problème intervient par exemple lorsque la requête SELECT du composant Query forme une jointure entre plusieurs tables.
Le composant UpdateMulti répond à ce problème en acceptant plusieurs requêtes dans chaque propriété SQL. Ainsi, lors d'une insertion, il est désormais possible d'insérer dans deux tables.
Le composant UpdateMulti peut être utilisé en lieu et place du composant UpdateSQL, il s'utilise donc en mode "cached updates".
Le composant UpdateMulti apporte deux fonctionnalités supplémentaires:
Dans ces événements on défini les valeurs des champs qui ne sont pas renseignés par l'utilisateur, typiquement les valeurs des index des enregistrements dans chaque table ainsi que les valeurs des champs de contrôle (ex: date de création, de modification, nom du créateur, ...). On peut aussi y mettre des règles de validation testant les valeurs des champs déjà remplis.
Pour affecter ou lire les valeurs des champs, il faut accéder à DeleteParams, InsertParams ou ModifyParams.
Exemple: lors d'une insertion sur une requête avec jointure, il est nécessaire de remplir le champ Cust_No des deux tables avec la même valeur. Dans l'evénement OnInsert, on affectera une valeur à InsertParams.ParamByName('Cust_No').AsInteger, le paramètre Cust_No étant présent dans les deux requêtes INSERT ( :Cust_No ).
Le composant UpdateMulti s'utilise comme le composant UpdateSQL.
Voici les étapes:
Pour cela il faut modifier la propriété UpdateObject du DataSet pour la faire pointer sur le composant UpdateMulti.
Cette étape consiste à l'initialisation des propriétés DeleteSQL, InsertSQL et ModifySQL avec les requêtes SQL ad hoc.
Une même propriété peut contenir plusieurs ordres SQL distincts chargés de mettre à jour les données sur chaque table concernée. Les ordres sont séparés par une ligne ne contenant qu'un caractère appelé "séparateur" (par défaut '!'). Le séparateur est défini par la propriété Separator.
Une fois que vous aurez fourni les requêtes SQL, les paramètres apparaitront dans les propriétés DeleteParams, InsertParams et ModifyParams.
Vous pouvez spécifier le type des paramètres grâce à ces propriétés.
Mettre éventuellement du code dans les événements OnDelete, OnInsert et OnModify.
Exemple:
InsertParams.ParamByName('Cust_No').AsInteger := NewID;
(NewID étant obtenu par appel une procédure stockée qui génère un nouvel identifiant.)
La plupart des paramètres utilisent les valeurs fournies par l'utilisateur ou les valeurs provenant de la requête SELECT.
Tous les champs n'ont pas besoin d'être renseignés par programmation dans les événements.
Le composant UpdateMulti donne la main avant que les requêtes de modification soient exécutées grâce aux événements OnDelete, OnInsert et OnModify. Il ne donne pas la main avant l'exécution de chacune des requêtes, ni après que l'ensemble des requêtes ne soient exécutées. Cette limitation est simple à corriger.
Si vous trouvez des améliorations a apporter, merci de nous les signaler pour que nous puissions améliorer le composant pour tout le monde.
Versions de Delphi supportées: 2 et 3.
Installer le fichier UMReg.pas dans la DCL (Composant | Installer un composant).
Installer le composant grâce au paquet dclUpdateMulti.dpk ou dans un paquet different. Si vous installez le composant dans un paquet different, il faut ajouter UMReg.pas et UpdateMulti.pas, le paquet requiert Delphi 3\Lib\dclDB30.dcp
01 53 01 92 60
Copyright © 1998 Cogisoft - Site réalisé par Cogisoft
Dernière modification : 30 janvier 1998