Version 2025 r2 (release note)
De Wiki1000
(Différences entre les versions)
(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(... ») |
(→Sélecteur) |
||
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 à 19:08
Sommaire[masquer] |
PREVIEW
Script
Vue locale
- Paramètre de type de donnée
Type vue1 = viewOf(ClassA) p1:TEnum(enumName) = ...; end;
- Héritage de vue locale
Type vue1 = viewOf(ClassA) p1:string = ...; [...] end; vue2 = viewOf(vue1) p1:string = ...; [inherited] end;
- Scope de vue locale
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;
- Expression Exists()
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;
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
function updateFrom(sel:TSelector; iMatchedProps:Array of string; iUpdatedProps:Array of string; iUpdatedValue:Array of variant):Integer;
Permet de mettre à jour une classe à partir d'un sélecteur et d'une colonne de correspondance.
Exemple :
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;
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 ;