Champs persistants, dbgrid et table access [Résolu]

informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention - 1 sept. 2005 à 11:41 - Dernière réponse : informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention
- 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é.
Afficher la suite 

Votre réponse

1 réponse

Meilleure réponse
informatixo 133 Messages postés mercredi 4 février 2004Date d'inscription 25 juillet 2012 Dernière intervention - 2 sept. 2005 à 08:00
3
Merci
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.

Merci informatixo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de informatixo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.