Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: comment creer un champ calcule dans une table dans access ?

99 views
Skip to first unread message

helpbenoit

unread,
Apr 1, 2010, 12:21:34 PM4/1/10
to
Alain a écrit le 10/09/2006 à 14h27 :
> comment creer un champ calcule dans une table dans access ?
bonjour,

il me semble avoir le meme probleme et je ne comprend pas la réponse....
le formulaire est fait a partir d'une table pas d'une requete. Donc, le calcul
se fait comment dans la table ?
exemple : je rentre une date dans le formulaire, elle s'inscrit dans la table.
Comment avoir date +30jours par ex. dans une autre colonne de la table et par
extension dans un autre champ du formulaire ?

3stone

unread,
Apr 2, 2010, 7:43:32 AM4/2/10
to
Salut,

Il n'y a pas de bonne raison pour sauvegarder cela dans une table!

Considérons que tu ais besoin d'une dizaine de dates calculées en
fonction d'une certaine date variable. Ta méthode te ferrai créer une
dizaine de champs... tous dépendant d'une seule et unique date.
C'est inutile, gonfle les tables inutilement et est source d'erreur.

On passe donc par une requête en créant ce champ calculé lorsque
nécessaire.

Si tu as une [DateVisite] et que tu relancer à 30 jours, tu mets
dans une nouvelle colonne (un nouveau champ) :

Plus30J: DateAdd("d";30;[DateVisite])

et tu obtient un champ calculé [Plus30J] pour chaque enregistrement
et sans devoir sauver quoi que ce soit !

La même méthode est applicable dans un formulaire, lorsque, par
exemple ton formulaire possède dans sa source un champ [DateVisite].
Il suffit de créer une zone de texte indépendante (donc sans source)
et de lui renseigner la "source calculée..."

=DateAdd("d";30;[DateVisite])

et cette zone de texte t'affichera également cette valeur pour
chaque enregistrement. Tu peux même te référer à cette zone
de texte pour d'autres calculs et vérifications.

PS:
Il faut se méfier de la traduction faite par Access, selon que
tu te trouve dans l'interface utilisateur ou le code VBA.

anglais => french
"d" = day => "j" pour jour
"m" = month => "m" pour mois
"y" = year => "a" pour année

de plus, ces paramètres utilisent 1, 2, 3 ou 4 lettres -
selon la fonction et la valeur... à voir dans l'aide...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)


Mehdi HAMMADI

unread,
Apr 6, 2010, 2:06:36 PM4/6/10
to
Bonjour Pierre,

Merci d'abord pour cette explication tr�s d�taill�.

Je profite de cette discussion pour en savoir un peut plus sur une nouveaut�
Access 2010 mais tout d'abord sachez que comme vous j'�tait jusqu'� il y a
quelques semaines adepte du fait qu'il �tait inutile d'avoir un champ
calcul� dans une table puis que cette information peut �tre d�duite � tout
moment � travers un champ calcul� d'une requ�te ou un calcul effectu� par un
contr�le ind�pendant comme vous l'avez si bien expliqu�.

Seulement � ma surprise, l'une des nouveaut�s de la version 2010 d'Access
est justement de proposer des champs calcul� pour les tables et mon premier
r�flexe fut mais pourquoi donc puisqu'il est possible � tout moment de
retrouver l'information...

j'ai donc annonc� la nouvelle � un coll�gue, qui lui est DBA et DEV sur SQL
Server, puis pos� la question : mais pourquoi?

Ce dernier m'a d'abord informer que cela existait d�j� sur d'autres syst�me
(SQL Server 2005 � titre d'exemple) puis m'a r�pondu tout simplement pour
des raisons d'optimisation de requ�te car un champ de table peut �tre
index�.

Je pense pour ma part que c�t� calculs, ceux-ci sont effectu�s � la mise �
jour de l'enregistrement et non pas chaque ex�cution de la requ�te.

Je vous demande donc quel est votre avis sur le sujet et pourriez vous
�ventuellement d�velopper un peu plus cela ou apporter des pr�cisions.

Encore Merci

Cordialement
MehdiH

"3stone" <home@sweet_home.be> a �crit dans le message de groupe de
discussion : eDsZJnl0...@TK2MSFTNGP06.phx.gbl...
> Salut,
>
> helpbenoit wrote:
>> Alain a �crit le 10/09/2006 � 14h27 :


>>> comment creer un champ calcule dans une table dans access ?
>> bonjour,
>>
>> il me semble avoir le meme probleme et je ne comprend pas la

>> r�ponse....


>> le formulaire est fait a partir d'une table pas d'une requete. Donc,
>> le calcul se fait comment dans la table ?
>> exemple : je rentre une date dans le formulaire, elle s'inscrit dans
>> la table. Comment avoir date +30jours par ex. dans une autre colonne
>> de la table et par extension dans un autre champ du formulaire ?
>
> Il n'y a pas de bonne raison pour sauvegarder cela dans une table!
>

> Consid�rons que tu ais besoin d'une dizaine de dates calcul�es en
> fonction d'une certaine date variable. Ta m�thode te ferrai cr�er une
> dizaine de champs... tous d�pendant d'une seule et unique date.


> C'est inutile, gonfle les tables inutilement et est source d'erreur.
>

> On passe donc par une requ�te en cr�ant ce champ calcul� lorsque
> n�cessaire.
>
> Si tu as une [DateVisite] et que tu relancer � 30 jours, tu mets


> dans une nouvelle colonne (un nouveau champ) :
>
> Plus30J: DateAdd("d";30;[DateVisite])
>

> et tu obtient un champ calcul� [Plus30J] pour chaque enregistrement


> et sans devoir sauver quoi que ce soit !
>

> La m�me m�thode est applicable dans un formulaire, lorsque, par
> exemple ton formulaire poss�de dans sa source un champ [DateVisite].
> Il suffit de cr�er une zone de texte ind�pendante (donc sans source)
> et de lui renseigner la "source calcul�e..."


>
> =DateAdd("d";30;[DateVisite])
>

> et cette zone de texte t'affichera �galement cette valeur pour
> chaque enregistrement. Tu peux m�me te r�f�rer � cette zone
> de texte pour d'autres calculs et v�rifications.
>
> PS:
> Il faut se m�fier de la traduction faite par Access, selon que


> tu te trouve dans l'interface utilisateur ou le code VBA.
>
> anglais => french
> "d" = day => "j" pour jour
> "m" = month => "m" pour mois

> "y" = year => "a" pour ann�e
>
> de plus, ces param�tres utilisent 1, 2, 3 ou 4 lettres -
> selon la fonction et la valeur... � voir dans l'aide...


>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/

> MPFA: http://www.mpfa.info/ (infos g�n�rales)
>
>
>
>
>
>

3stone

unread,
Apr 7, 2010, 7:12:49 AM4/7/10
to
Salut Mehdi,

Mehdi HAMMADI wrote:
> Je profite de cette discussion pour en savoir un peut plus sur une

> nouveauté Access 2010 mais tout d'abord sachez que comme vous j'était
> jusqu'à il y a quelques semaines adepte du fait qu'il était inutile
> d'avoir un champ calculé dans une table puis que cette information
> peut être déduite à tout moment à travers un champ calculé d'une
> requête ou un calcul effectué par un contrôle indépendant comme vous
> l'avez si bien expliqué.


et cela reste vrai pour la majorité des cas...


> Seulement à ma surprise, l'une des nouveautés de la version 2010
> d'Access est justement de proposer des champs calculé pour les tables
> et mon premier réflexe fut mais pourquoi donc puisqu'il est possible
> à tout moment de retrouver l'information...


Mais combien de nouveautés ne sont-elles pas apparues, et...
ont étés abandonnés aussi sec! Au grand dam de ceux qui se
précipitent... sur ces "nouveautés" ;-)


> j'ai donc annoncé la nouvelle à un collègue, qui lui est DBA et DEV
> sur SQL Server, puis posé la question : mais pourquoi?
>
> Ce dernier m'a d'abord informer que cela existait déjà sur d'autres
> système (SQL Server 2005 à titre d'exemple) puis m'a répondu tout
> simplement pour des raisons d'optimisation de requête car un champ de
> table peut être indexé.

Parfaitement!
Sur un système client/serveur, cela "peut" avoir ces avantages...
si tel est le besoin.
Mais, sur Access (spécialement en DAO) et comme dans beaucoup
de cas, il s'agit seulement de "posséder" cette information au niveau
d'un formulaire soit pour visionner, soit pour traitement ou comparaison.
Le temps de calcul est alors insignifiant.


> Je pense pour ma part que côté calculs, ceux-ci sont effectués à la
> mise à jour de l'enregistrement et non pas chaque exécution de la
> requête.

Cette possibilité (champs calculés), ainsi que cette hérésie que sont
les champs "à plusieurs valeurs" (ces derniers sont inutilisables dès
que la base est un temps soit peu importante) poussent encore
d'avantage les débutants à penser "tableur" pour l'organisation
de données.


> Je vous demande donc quel est votre avis sur le sujet et pourriez vous

> éventuellement développer un peu plus cela ou apporter des précisions.

Comme souvent, c'est une question de besoins.
Beaucoup de ces nouveautés existent parce que "le public le réclame",
et qu'Access fait partie de la suite bureautique...
Et n'oublions pas que pour vendre, il faut des "nouveautés" ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/

MPFA: http://www.mpfa.info/ (infos générales)

Mehdi HAMMADI

unread,
Apr 13, 2010, 7:16:47 AM4/13/10
to
Merci beaucoup pour ce retour.
MehdiH

"3stone" <home@sweet_home.be> a écrit dans le message de groupe de
discussion : eymQENk1...@TK2MSFTNGP04.phx.gbl...

0 new messages