Champ calculé avec adoquery et ACCESS

Signaler
Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
-
Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
-
Bonjour,


Après plusieurs recherches j'ai compris en partie comment fonctionnent les champs calculés avec ADOQuery pour une base ACCESS.


J'ai déjà posé une question similaire.
La nouvelle question est:


Avec ADOQQUERY je souhaite calculer les valeurs d'une colonne définie dans ma base ACCESS.
La commande sql me permet d'affichée les colonnes de données y compris la colonne que je souhaite calculé.


Pour cela il faut mettre la propriété   FieldKind  du champ à  fkCalculated dans ADOQUery.


Hors à l'exécution j'ai une erreur : base ouverte impossible de le faire


si je le fais en fermant la base alors j'ai aussi une erreur car le champ n'est pas reconnue.


Question:
Est-il possible de changer en dynamique le type du champ calculé à fkCalculated , "FieldKind :=  fkCalculated ", d'une table d'une base ACCESS ? avec delphi

Merci
Salutations

yvessimon

7 réponses

Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017

Bonjour,

J'ai en partie la réponse


il est préférable d'utiliser l'événement BeforePost

ce qui permet de maîtriser les calcul à fiare seulement à cet événement


l'événement onCalcFields se produit dans plusieurs cas et alors tous les champs sont calculé. d'ou un temps machine plus long


Salutations
yvessimon
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Le OnCalcField n'a pas le même objectif :
Il se déclenche systématiquement dès l'affichage des données dans un composant DB mais ne stocke rien ..
Alors que le BeforePost lui intervient juste avant le Post et donc il est utile pour stocker des informations dans un champ d'une table.

cantador
Messages postés
4
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
13 juin 2012

Bonjour à tous.
Je travaille sur une base Access et j'ai une table contenant 4 champs, dateMvt, code,debit et credit.J'aimerais à partir d'un AdoQuery
afficher dans un DBGRID un solde progressif à partir des 2 champs debit, credit pour un [Code] sélectionné.
Merci de bien vouloir m'aider.
Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017

Bonjour,

Dans la commande SQL :

SELECT sum([Champ1]+[Champ2]...) FROM TABLE WHERE CHAMP3 LIKE QuotedStr('%'+FILTRE+'%')

Salutations

yvessimon
Messages postés
4
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
13 juin 2012

Merci YvesSimmon,

Avec cette requête je n'obtiens que le total. Peut être je me suis mal expliqué.

Ce que je veux faire c'est à partir de ceci :
CODE DATE DEBIT CREDIT
10 04/01/2011 52
10 04/01/2011 52
10 04/01/2011 52
10 04/02/2011 28
20 04/02/2011 28
20 04/02/2011 28
30 04/02/2011 10
30 04/02/2011 10
30 04/02/2011 10
10 04/03/2011 10
40 04/03/2011 10
40 04/03/2011 10
10 04/04/2011 30
10 04/04/2011 30
10 04/04/2011 30

Afficher dans dans un DBGRID :

CODE DATE DEBIT CREDIT SOLDE
10 04/01/2011 52 52
10 04/01/2011 52 104
10 04/01/2011 52 156
10 04/02/2011 28 184
10 04/03/2011 10 194
10 04/04/2011 30 164
10 04/04/2011 30 134
10 04/04/2011 30 104

Merci encore une fois
Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017

Messages postés
637
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017

Bonjour,

Avec cette séquence le cumul progressif s'affiche :
----------
SELECT t1.date_
,SUM(t2.c_1) AS cumul
FROM [table] AS t1
INNER JOIN
[table] AS t2
ON t1.date_ >= t2.date_
GROUP BY t1.date_
, t1.c_1
-------------


Salutations

yvessimon