Champs persistants, dbgrid et table access

Résolu
informatixo Messages postés 129 Date d'inscription mercredi 4 février 2004 Statut Membre Dernière intervention 25 juillet 2012 - 1 sept. 2005 à 11:41
informatixo Messages postés 129 Date d'inscription mercredi 4 février 2004 Statut Membre Dernière intervention 25 juillet 2012 - 2 sept. 2005 à 08:00
J'ai une Table access intitulé "Fourniture" avec :



id_fac (entier long) identificateur facture

ind_lig (entier long) identificateur ligne

num_lig (texte 50 caractères) numéro de ligne

des (memo) désignation

qua (réel double) Quantité

uni (texte 3 caractères) Unité(m², mètre linéaire, etc.)

pri_ven_ht (réel double) prix de vente unitaire HT

mon_ht (réel double) montant HT (correspond à qua * pri_ven_ht)



J'utilise un module de données avec des composants ADO (adoconection, adoquery, datasource)



et sur le adoquery j'ai mis des champs persistants pour pouvoir paramétrer l'affichage et



faire des calculs et la propriété autocalcfields=true.



J'utilise une dbgrid pour afficher le contenu qui a readonly=false, dsediting=true,



dsrowselect=false, dsmultiselect=false.



Dans cette dbgrid je n'affiche que num_lig, des, qua, uni, pri_ven_ht, mon_ht et pour celà



j'ai crée num_lig, des, qua, uni, pri_ven_ht en tant que champ persistants de type données



et mon_ht en tant que champ persistants de type calculé.



Je précise que pour le moment en guise de test tous les champs persistants ont



readonly=false donc ils sont éditables.



Le champ persistant mon_ht = qua * pri_ven_ht



A l'exécution impécable ma multiplication se déroule à merveille, le problème c'est qu'elle



ne s'inscrit pas dans la base de donnée.



Pour essayer d'être plus précis, le champ mon_ht de ma table Fourniture est vide, il ne



prend pas la valeur du champ persistant calculé "mon_ht".



Est-ce que quelqu'un pourrait m'aider par ce que je commence juste à utiliser les champs



persistants.



Avant de demander de l'aide j'ai quand même regarder l'aide delphi sur les dbgrid et ils



disent qu'un champ calculé n'est quand lecture.



Alors j'ai essayé d'en créer un autre (puisque qu'on peut apparement créer plusieurs champ



persistants pour un même champ de l'ensemble de données) de type données "mon_ht2" et avant



le changement d'enregistrement j'ai essayé de faire mon_ht2 := mon_ht mais ça n'a pas



marché.

1 réponse

informatixo Messages postés 129 Date d'inscription mercredi 4 février 2004 Statut Membre Dernière intervention 25 juillet 2012 1
2 sept. 2005 à 08:00
J'ai trouvé une solution donc je vais la donner car ça pourra peut-être en aider certains.



Je me suis rendu compte au fur et à mesure de quelques tests qu'il
fallait être en en mode édition pour pouvoir écrire le résultat du
champ persistant calculé dans la base de données.



A force de chercher j'ai trouvé un évènement du contrôle ADOQuery
qui s'appelle before post, il suffit d'écrire champ de la base = champ
calculé et ça fonctionne.



Ca fonctionne mais ce n'est peut-être pas correct, donc si quelqu'un a une autre idée je suis preneur.
3
Rejoignez-nous