Version 2025 r2 (release note)
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
Une vue locale peut être référencée en dehors de la méthode ou elle est définie.
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()
Une expression existe peut être utilisée dans les filtres comme une valeur logique
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 ;