Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/08/2007, 22h49   #1
YeP
Invité de passage
 
Inscription : mai 2004
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 6
Points : 1
Points : 1
Par défaut Epine de conception BDD : calculs de valeurs

Bonjour à tous, et merci pour toute la doc en ligne qui m'a permis de mettre sur pied mon petit projet.

Je suis en train de construire sous Access2007 une base qui référencent des spécimens, des lignées ainsi que leurs suivis photos avec observations. La base en elle même est construite et je peux dors et déjà basculer toute mes vieilles données Excel dessus. Mes besoins étant minimes (j'ai quand meme pas mal ramé sur des décisions concernant diverses approches avec les photos...), la base est assez épurée.

Je butes sur un problème de calcul de date. Après plusieurs essais divers et variés, j'ai opté imbécilement pour un code événement sur les zones textes des formulaires. Le code VBA marche au poil et affiche ce qu'il faut au bon endroit... seulement les données ne sont à jour qu'en employant les formulaires "équipés" en ajout ou modification.

Code :
1
2
3
4
5
6
7
8
9
 
Private Sub Timeline_GotFocus()
'calcul nb jours Timeline avec date1
 If Not IsNull(Fin) Then
            Me![Timeline].Value = DateDiff("d", Me![Debut], Me![Fin])
        Else
            Me![Timeline].Value = DateDiff("d", Me![Debut], Me![Aujourdhui])
End If
End Sub
Je ne sais sur quel solution m'orienter pour que le calcul de date/jours soit "sédentaire" sur une table. Intégré dans le champ lui même?

Peut on insérer du code en tant que "valeur par défaut" autrement que par l'assistant ? (pour recycler le code ci haut qui m'a donné des sueurs n'ayant jamais fait de VBA auparavant... je ne saurais pas écrire la même chose en SQL ou avec l'assistant "..." )

Je ne sais pas trop si je dois créer une table gérant tout le système de date (c'est pas trop pour mon utilisation très basique?) de la base, ou bien m'orienter vers le SQL ou encore .... HELP!
Normalement on fait quoi dans ce cas là ?

Merci d'avance et bonne continuation !
YeP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2007, 23h28   #2
YeP
Invité de passage
 
Inscription : mai 2004
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 6
Points : 1
Points : 1
Je vous met en primeur ce qui m'a bloque :

Citation:
Vous ne pouvez pas mettre de champs calculé dans une table Access.
La maintenance de ces derniers n'est pas toujours efficace.
Vous devez donc faire une requête.
Dans cette requête, prenez tous les champs de la table et faites un champ calculé (ex : Select Champ1 + Champ2 From ...). Utilisez également la fonction vraifaux() si besoin est (afin de ne pas diviser par 0 par exemple).
YeP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h22   #3
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
Salut,

Effectivement, il n'est pas conseillé de stocker des calculs dans des tables (j'ai eu à le faire une fois car je n'avais pas d'autres solutions (?!?) ).
En effet, tu peux effectuer ces calculs par une requête ou encore les afficher dans un champ indépendant sur le formulaire ou état.

Donc, soit tu crées une requête qui sera la source de ton formulaire, soit tu crées un champ indépendant avec en source de données la formule de calcul.
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 15h36   #4
YeP
Invité de passage
 
Inscription : mai 2004
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 6
Points : 1
Points : 1
Merci pour ta confirmation .

J'ai mis le code en direct sur événements (mise a jour et chargement formulaire). Je m'en sors beaucoup mieux en passant par l'éditeur VBA, le langage est moins "obtus" à comprendre.

Par contre j'ai effectivement besoin de gérer ce calcul via requete pour un autre formulaire...

J'ai un formulaire d'édition de suivi de specimen(table suivi) qui se référe à la (table specimen). Comme précedemment je faisais mon calcul avec des champs générés automatiquement par l'assistant, du coup mon code chèrement pondu n'est plus valable.

Je peux mettre des champs non visibles en mode formulaire de la table externe sans changer mon code, ou bien peut on le changer en indiquant le chemin complet des tables en VBA pour que ce soit "plus propre" ?

Merci encore!
YeP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 16h25   #5
Rédacteur
 
Avatar de Lou Pitchoun
 
Christophe Lessirard
Inscription : février 2005
Messages : 5 029
Détails du profil
Informations personnelles :
Nom : Christophe Lessirard
Âge : 33
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2005
Messages : 5 029
Points : 6 000
Points : 6 000
Envoyer un message via MSN à Lou Pitchoun
J'ai pas trop bien saisi le coup des champs non visibles...
mais c'est peut être ce qu'il y a de plus simple.
Consulte le tutoriel de Loufab sur les appels de formulaire
__________________

Access : Les Cours, Les Sources et Les FAQs Office
Avant de poster : les choses importantes à lire pour la bonne tenue du forum.
sinon

Ma boite à MPs n'est pas l'annexe du forum Le complément BouleDeCristal n'existe pas encore !!!
Lou Pitchoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 18h55   #6
YeP
Invité de passage
 
Inscription : mai 2004
Messages : 6
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 6
Points : 1
Points : 1
Merci de m'avoir aiguillé, je focalisais sur les tables... je n'avais pensé à une interaction entre formulaires.

Bonne journée !
YeP est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h47.


 
 
 
 
Partenaires

Hébergement Web