cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 2013
-
16 mars 2004 à 19:31
jackalunion
Messages postés128Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention14 juillet 2008
-
25 juin 2008 à 03:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
jackalunion
Messages postés128Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention14 juillet 2008 25 juin 2008 à 03:49
1+1 est impossible
en empreinte un 1 et ont le rend pas
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 16 mars 2004 à 19:31
Il ne faudrait pas confondre faire des calculs avec des champs et utiliser des champs calculés !
En cliquant sur "Calculez les champs", on déclenche un exception du fait que l'ensemble n'est pas en mode édition et c'est normal.
Si les champs dans lesquels tu veux écrire sont bien déclarés comme champs calculés (fkCalculated), tu dois aussi utiliser l'évènement OnCalcFields de l'ensemble de données et y mettre ton code comme suit :
procedure TForm2.Table1CalcFields(DataSet: TDataSet);
begin
//Prix unitaire hors tva
table1.fieldbyname('puhtva').asfloat :=
table1.fieldbyname('pu').asfloat * (100
- table1.fieldbyname('remise').asfloat) / 100;
// prix unitaire tvacomprise
table1.FieldByName('putvac').asfloat :=
table1.fieldbyname('puhtva').asfloat
+ table1.fieldbyname('tva').AsFloat;
end;
L'utilité du bouton intitulé "Calculez les champs" devient ainsi nulle.
A celà j'ajouterai que, comme les tables physiques sont dans le même dossier que l'application (stocks.*), il n'est pas utile de préciser un chemin dans la propriété DataBaseName de Table1.
25 juin 2008 à 03:49
en empreinte un 1 et ont le rend pas
16 mars 2004 à 19:31
En cliquant sur "Calculez les champs", on déclenche un exception du fait que l'ensemble n'est pas en mode édition et c'est normal.
Si les champs dans lesquels tu veux écrire sont bien déclarés comme champs calculés (fkCalculated), tu dois aussi utiliser l'évènement OnCalcFields de l'ensemble de données et y mettre ton code comme suit :
procedure TForm2.Table1CalcFields(DataSet: TDataSet);
begin
//Prix unitaire hors tva
table1.fieldbyname('puhtva').asfloat :=
table1.fieldbyname('pu').asfloat * (100
- table1.fieldbyname('remise').asfloat) / 100;
// tva
table1.FieldByName('tva').AsFloat :=
table1.fieldbyname('PuHtva').AsFloat
* table1.fieldbyname('tauxtva').asfloat / 100;
// prix unitaire tvacomprise
table1.FieldByName('putvac').asfloat :=
table1.fieldbyname('puhtva').asfloat
+ table1.fieldbyname('tva').AsFloat;
end;
L'utilité du bouton intitulé "Calculez les champs" devient ainsi nulle.
A celà j'ajouterai que, comme les tables physiques sont dans le même dossier que l'application (stocks.*), il n'est pas utile de préciser un chemin dans la propriété DataBaseName de Table1.