« Version 2025 r2 (release note) » : différence entre les versions

De Wiki1000
Ligne 7 : Ligne 7 :


===Vue locale===
===Vue locale===
* Une vue locale peut contenir des attributs "oidXXX" sans définir le rôle
'''Exemple:'''
<source lang="delphi">
Type
  vue1 = viewOf(ClassA)
  p1:TEnum(enumName) = ...;
  oidRef:TOID = oidrefB;
  ..
  idRefB:TOID = oidrefB notInSelect;
  [ (idRefB=%ArgRefB) and ....]
  end;
</source>
* Une vue locale peut contenir des attributs non mappés dans la définition.
'''Exemple:'''
<source lang="delphi">
Type
  vue1 = viewOf(ClassA)
    ACount:Integer = count(oid)
    oidRef:TOID;
    codeRef:string;
    libelleRef:string;
  ..
  [  ...]
  end;
var sel:TSelector;
begin
  sel := vue1.createSelector();
  case iGroupBy of
  'refB':
    begin
      sel.AddColumn('oidrefB','oidRef');
      sel.AddColumn('refB.code','codeRef');
      sel.AddColumn('refB.Caption','libelleRef');
    end;
  'refC':
    begin
      sel.AddColumn('oidrefC','oidRef');
      sel.AddColumn('refC.code','codeRef');
      sel.AddColumn('refC.Caption','libelleRef');
    end;
  end;
end;
</source>


* Paramètre de type de donnée
* Paramètre de type de donnée
Ligne 34 : Ligne 84 :
* Scope de vue locale
* Scope de vue locale


Une vue locale peut être référencée en dehors de la méthode ou elle est définie.
Une vue locale peut être référencée en dehors de la méthode elle est définie.


<source lang="delphi">
<source lang="delphi">
Ligne 59 : Ligne 109 :


Une expression existe peut être utilisée dans les filtres comme une valeur logique
Une expression existe peut être utilisée dans les filtres comme une valeur logique
Note : Une expression Exists() est beaucoup plus rapide qu'un "Count<>0"


<source lang="delphi">
<source lang="delphi">

Version du 10 avril 2025 à 17:26

Modèle:Version2025r1

PREVIEW

Script

Vue locale

  • Une vue locale peut contenir des attributs "oidXXX" sans définir le rôle

Exemple:

<source lang="delphi"> Type

 vue1 = viewOf(ClassA)
  p1:TEnum(enumName) = ...;
  oidRef:TOID = oidrefB;
  ..
  idRefB:TOID = oidrefB notInSelect;
  [ (idRefB=%ArgRefB) and ....]
 end;

</source>

  • Une vue locale peut contenir des attributs non mappés dans la définition.

Exemple:

<source lang="delphi"> Type

 vue1 = viewOf(ClassA)
   ACount:Integer = count(oid)
   oidRef:TOID;
   codeRef:string;
   libelleRef:string;
  ..
  [  ...]
 end;

var sel:TSelector; begin

 sel := vue1.createSelector();
 case iGroupBy of
  'refB':
    begin
      sel.AddColumn('oidrefB','oidRef'); 
      sel.AddColumn('refB.code','codeRef'); 
      sel.AddColumn('refB.Caption','libelleRef'); 
    end;
  'refC':
    begin
      sel.AddColumn('oidrefC','oidRef'); 
      sel.AddColumn('refC.code','codeRef'); 
      sel.AddColumn('refC.Caption','libelleRef'); 
    end;
 end; 

end; </source>

  • Paramètre de type de donnée

<source lang="delphi"> Type

 vue1 = viewOf(ClassA)
  p1:TEnum(enumName) = ...;
 end;

</source>

  • Héritage de vue locale

<source lang="delphi"> Type

 vue1 = viewOf(ClassA)
  p1:string = ...;
  [...]
 end;
 vue2 = viewOf(vue1)
  p1:string = ...;
  [inherited]
 end;

</source>

  • Scope de vue locale

Une vue locale peut être référencée en dehors de la méthode où elle est définie.

<source lang="delphi"> procedure Class1.foo; Type

 vue1 = viewOf(ClassA)
  p1:string = ...;
 end;

begin

 ...

end;

procedure Class2.bar; Type

 vue2 = viewOf(class1.foo.vue1)
  p1:string = ...;
 end;

begin

 ...

end; </source>

  • Expression Exists()

Une expression existe peut être utilisée dans les filtres comme une valeur logique

Note : Une expression Exists() est beaucoup plus rapide qu'un "Count<>0"

<source lang="delphi"> Type

 vue1 = viewOf(ClassA)
  id:string = ...;
 end;
 vue2 = viewOf(ClassB)
  id:string = ...;
  bb:boolean = vue1.Exists('(id=self.id)',True,[]) notInSelect;
  [(bb=true) and (....)]
 end;

</source>

Sélecteur

  • lastOpeStamp, lastAffectedStamp
Attributs mis à jour par la dernière opération assembliste.
  • RmvParameter()
Permet de retirer un paramètre qui a été ajouté par AddParameter()
  • Amélioration de CopyTo
Permet de créer des objets à partir d'un sélecteur
  • CopyTo, Update, UpdateFrom
Fonctionne sur les classes de stéréotype SQL

UpdateFrom

<source lang="delphi"> function updateFrom(sel:TSelector; iMatchedProps:Array of string; iUpdatedProps:Array of string; iUpdatedValue:Array of variant):Integer; </source>

Permet de mettre à jour une classe à partir d'un sélecteur et d'une colonne de correspondance.

Exemple :

<source lang="delphi"> Type

 // Update the temp table 
 vueTemp = viewOf(TempLettrage)
   reference1:string = reference1;
   reference2:string = reference2;
   modeLettrage:Integer = modeLettrage; 
 end;
  
 vueRef1 = viewOf(TempLettrage)
   //ACount:Integer = count(id);
   ATotal:Currency = sumSign(montant:TCValue,sens,'1');
   reference1:string = reference1; 
   [(modeLettrage=0) and (reference1<>)] 
 end; 

var selT,selG:TSelector; begin

 withP long transaction do
   begin
    // for updating the temp table on "match" 
    selT := vueTemp.CreateSelector(,,True,[]);
    // Lettrage sur reference 1 
    selG := vueRef1.CreateSelector('(ATotal=0)',,True,[]);
    selG.useCTE := True; 
    selT.UpdateFrom(selG,['reference1'],['modeLettrage'],[1]); 
   end;

end; </source>

with CTE as (
select sum(case when t0.sens=1 then ISNULL(t0.montant_TCValue, 0) else -ISNULL(t0.montant_TCValue, 0) end)  as "ATotal",t0.reference1  as "reference1"
from dbo.TEMPLETTRAGE t0 WITH (NOLOCK)
where ((t0.modeLettrage = 0) and (t0.reference1 IS NOT NULL))
group by t0.reference1
)
merge into dbo.TEMPLETTRAGE tm0 using (
SELECT  *
FROM CTE
Where (ATotal = 0.0000)
) tm1 on (tm1.reference1=tm0.reference1)
when matched then update set
tm0.modeLettrage = 1
;