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

De Wiki1000
(Page créée avec « {{version2025r1}} __TOC__ ''' PREVIEW ''' ==Script== ===Vue locale=== * Paramètre de type de donnée <source lang="delphi"> Type vue1 = viewOf(ClassA) p1:TEnum(... »)
 
Ligne 77 : Ligne 77 :
: Permet de créer des objets à partir d'un sélecteur
: Permet de créer des objets à partir d'un sélecteur


* CopyTo, Update, UpdateFrom
: Fonctionne sur les classes 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>
<pre>
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
;
</pre>


[[Category:Version 2025 R2]]
[[Category:Version 2025 R2]]
[[Category:Release note]]
[[Category:Release note]]

Version du 10 avril 2025 à 17:08

Modèle:Version2025r1

PREVIEW

Script

Vue locale

  • 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

<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()

<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.
  • Amélioration de CopyTo
Permet de créer des objets à partir d'un sélecteur
  • CopyTo, Update, UpdateFrom
Fonctionne sur les classes 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
;