CopyTo (selector)
De Wiki1000
Version du 4 janvier 2017 à 17:38 par Syfre (discuter | contributions)
function CopyTo(const iDestClassName:string; const iPropNames:Array of string; const iPropValues:Array of variant):Integer;
Cette méthode copie les objets de la sélection vers une classe destination.
Paramètre | Usage |
---|---|
Result | Nombre d'objets affectés par l'opération |
iDestClassName | Classe destination |
iPropNames | Tableau de nom d'attribut de la classe destination |
iPropValues | Tableau de valeur pour les attributs iPropNames |
Cette fonction retourne le nombre d'objets affectés par l'opération.
- iDestClassName
- Classe destination des objets copiés, cette classe peut être identique à la classe source du sélecteur.
- iPropNames,iPropValues
- C'est deux tableaux doivent avoir le même nombre d'élément et doivent référencer des attributs de la classe destination.
Tip : L'opération est effectué par un ordre SQL en mode auto commit, si une transaction longue est ouverte la session de la transaction longue est utilisée. |
Les attributs des objets créés sont déterminés ainsi, dans l'ordre :
- Si l'attribut est présent dans le tableau iPropNames la valeur est déterminée par iPropValues
- Si il existe un attribut de même nom dans la classe source, la colonne destination est mappée sur la colonne source
- Si l'attribut est un attribut numérique la valeur est initialisée à 0
- Si l'attribut est un attribut chaîne, la valeur reste NULL
Les valeurs contenues dans iPropvalues peuvent être :
- Une valeur constante
- Une référence vers une colonne de la classe source, le format doit être "Nom_de_classe_source.Chemin_attribut"
- Une référence vers une colonne d'une contrainte, le format doit être "Nom_de_contrainte.Chemin_attribut"
Exemple :
Copie vers la même classe (duplication d'objet):
function doCopyTo():Integer; var sel:TSelector; begin sel := ClassC.CreateSelector('unBool=%1','unEntierC',True,[False]); Result := sel.CopyTo('ClassC',['unBool'],[True]); end;
Copie vers une classe différente:
function doCopyTo():Integer; var sel:TSelector; begin sel := ClassC.CreateSelector('unBool=%1','unEntierC',True,[False]); Result := sel.CopyTo('ClassA',['unCodeA','unExtension'],['ClassC.unCodeC','ClassC.unCodeC']); end;
Voir aussi :