CopyTo (selector)

De Wiki1000
Version du 4 janvier 2017 à 17:38 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
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-20px.png 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 :

Selecteur (tech)Développement DSM

Outils personnels