Bonjour,
Je plussoie
ce qu'écrit barbibulle

Envoyé par
barbibulle
la plupart du temps c'est une fausse bonne idée de vouloir enregistrer dans la base un champs calculé. (Je ne parle pas des champs calculés par la base données mais des champs 'normaux' qui contiendrait un résultat d'un calcul fait pas un programme extérieur. Comme dans votre cas.)
une réflexion au sujet des requêtes de selection : nommer tous les champs que l'on veut est toujours préférable à un *
Si vous ne pouvez vraiment pas vous passer de ce champ , voilà quelques pistes

Envoyé par
quattro
1 - puis-je réutiliser le même comp. SQL1 ou dois-je en prendre un autre?
2 - dois je utiliser un autre composant (bouton,etc..) pour insérer le code permettant la soustraction?
3 - a quoi ressemblerais ce code?
1- cela dépend de comment vous l'utilisez , donc difficile de confirmer quoique ce soit à ce sujet
2- idem , ce n'est pas obligé vous pourriez par exemple le faire (le calcul)dans un évènement BeforePost
3- s'il s'agit de faire une mise à jour du champ total1 quelque chose du genre
update tb1.db set total1=H2-H1
fera la mise à jour du champ total1 pour toute la table , en y ajoutant une clause where on pourra limiter cette mise à jour à l'ensemble voulu
par exemple :
UPDATE t1.db SET total1=H2-H1 WHERE dated BETWEEN :dated AND :fin
maintenant vous pourriez aussi utiliser un TUpdateSQL pour gérer cela directement avec votre composant table
le texte ressemblerai à ça pour l'update
1 2 3 4 5 6 7 8
|
update "test.db"
set
H1 = :H1,
H2 = :H2,
Total1 =:H2-:H1
where
CLE = :OLD_CLE |
et à ceci pour l'insert
1 2 3 4 5
|
insert into "test.db"
(H1, H2,Total1)
values
(:H1, :H2, :H2-:H1) |
utilisez le menu contextuel de l'updatesql pour générer les SQL puis modifiez les de façon à calculer le champ T1 comme indiqué.
! Attention la propriété UpdateMode a (pour cet exemple) été mise à upWhereKeyOnly , faites des essais avec les autres modes pour voir ce qui se passe au niveau de la clause Where du Update , c'est instructif 
Dernier point , si les enregistrements et tous les champs sont affichés dans une dbgrid , je ne suis pas sur qu'il ne faille pas mettre Autorefresh à true et/ou peut être travailler en cacheupdates (cela fait longtemps que je n'ai pas travaillé avec paradox et bde
)
Partager