Champ calculé avec adoquery et ACCESS

yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017 - 31 oct. 2007 à 12:04
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017 - 11 avril 2011 à 13:45
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

yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
6 nov. 2007 à 09:41
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
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 nov. 2007 à 18:37
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
0
TVH Messages postés 4 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 13 juin 2012
7 avril 2011 à 10:50
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.
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2011 à 11:35
Bonjour,

Dans la commande SQL :

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

Salutations

yvessimon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TVH Messages postés 4 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 13 juin 2012
7 avril 2011 à 13:31
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
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
7 avril 2011 à 16:06
0
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
11 avril 2011 à 13:45
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
0
Rejoignez-nous