Rechercher : dans
Par :

BDD ACCESS : mise à jour des tables

Dernière réponse le 30 avr 2009 à 10:56:02 Tyfon, le 14 fév 2008 à 18:54:13 
 Signaler ce message aux modérateurs

Bonjour,
Je viens de contruire une base de données sous access 2007 avec 2 tables en relation.
J'ai créé un formulaire pour mettre à jour ces tables.
Je peux consulter mes 2 tables liées mais je ne peux pas modifier un enregistrement pas plus que je ne peux créer un nouvel enregistrement.
J'ai pourtant vérifié que les propriétés du formulaire soient :
type de Recordset : feuille de réponse dynamique
entrée des données : oui
ajout autorisé : oui
suppr autoisée : oui
vérouillage: aucun
Quelqu'un(e) peut me dire ce que j'ai oublié pour pouvoir modifier un enregistrement?
Mercid'avance
à+

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « BDD ACCESS : mise à jour des tables » dans :
Mise à jour d'AntiVir impossible ? VoirImpossible de mettre à jour AntiVir Suite à l'installation de l'antivirus AntiVir, vous n'arrivez pas à le mettre à jour ? Pas de panique. Problème : Lorsque vous cliquez sur "Démarrer la mise à jour", rien ne se produit ? Cause : Une...

1

LatelyGeek, le 15 fév 2008 à 22:39:43

Comment est la relation entre les deux tables? Un à plusieurs, un à un, non définie? Et est ce que tu as un formulaire avec sous-formulaire???

Si la relation est de un à plusieurs mais que tu n'as pas de sous-formulaire, ou que la relation est non définie, ton problème n'est pas étonnant. Y a t-il des clés dans tes tables???

Répondre à LatelyGeek

2

Tyfon, le 18 fév 2008 à 19:37:35

Bonsoir et merci d'avoir répondu.
ma bdd est constituée de 2 tables 1 table principale (les individus) avec clé = numéro auto, 1 table secondaire (les performances de chaque individu) avec clé = numéro auto
La liaison est de type 1 à 1 avec liaison sur les 2 clés.
Pas de sous-fomulaire, j'appelle par Select dès la construction de la table tous les éléments des 2 tables dont j'ai besoin et tout s'affiche normalement.
Je navigue très bien entre les enregistrements, les données des 2 tables coïncident bien, mais je ne peux ni modifier un élément, ni supprimer un élément ni en rajouter.
Je suis un peu désolé d'avoir posté cette demande sur ce forum car je viens de découvrir qu'il y en avait un autre concernant la programmation.
Je vais attendre un peu et je posterai à nouveau ce message sur le forum programmation.
à+

Répondre à Tyfon

3

LatelyGeek, le 19 fév 2008 à 20:13:23

Juste une question: Si chaque individu ne peut avoir qu'un enregsitrement dans la table Performances, pourquoi avoir fait deux tables????? Les liaisons 1 à 1 sont quand même réservées à des cas un peu particuliers, et le tien ne semble pas nécessiter cette structure de base - mais je me trompe peut-être...

Répondre à LatelyGeek

4

Tyfon, le 20 fév 2008 à 14:29:30

Bonjour,
Effectivement dans mon exemple j'aurais pu ne faire qu'une seule table.
La réalité est que la table individus comprend 19 champs concernant les individus et la table performances comprend des performances de nature très diverses.
J'ai donc voulu séparer les types d'informations en mettant 2 tables séparées.
J'ai trouvé la solution pour mettre à jour mes 2 tables à partir de mon formulaire:
1) j'ai mis comme clé principale de la table performances une zone numérique (et non pas un numéro auto), ce qui fait que pour toute création d'un individu, il se crée un enregistrement performances vide.
2) j'ai modifié les relations en mettant une relation 1 à 1 entre les 2 tables
et maintenant tout fonctionne bien.

Nouvelle question :
pour l'instant j'ai créé une seule table performances "Perf 2008". Comment faire pour ne pas avoir une table séparée pour "perf 2007"?
J'ai pensé rajouter à la clé d'acès de la table "perf 2008" (que je baptiserai Performances) une clé secondaire (année) et saisir dans mon formulaire l'année de la performance pour n'atteindre que la perf de l'individu relative à l'année saisie.
Comment faire celà dans mon formulaire?

Répondre à Tyfon

5

LatelyGeek, le 20 fév 2008 à 17:25:21

Bonne solution, tu dois rajouter le champ année dans la table Performances. ce qui justifie à ce moment là l'existence de deux tables; La relation deviendra une relation de 1 à plusieurs..

Le formulaire serait à ce moment là basé sur une requête dans laquelle l'année serait l'année en cours (Critères: Année(Date())

Si tu veux pouvoir choisir l'année des performances à visualiser, tu mets un critères paramétré à la place ([De quelle année souhaitez vous visualiser les performances?])

Ou alors tu mets un champ indépendant dans ton formulaire de type liste modifiable basée sur les années présentes dans la table Performances, la requête fait référence à ce champ du formulaire (Clic droit - Créer dans la zone Critères de la requête) et tu mets un petit bout de VB Après MAJ de ce champ: DoCmd.ShowAllRecords

Une autre solution serait un formulaire avec sous-formulaire, qui te permettrait de consulter toutes les années en même temps!!!

Répondre à LatelyGeek

6

Tyfon, le 21 fév 2008 à 05:41:36

OK, et merci pour cette solution proposée.
Pour l'instant je fais une pause car je dois mabsenter un mois plein.
à +

Répondre à Tyfon

7

 dissou84, le 30 avr 2009 à 10:56:02

Bonjour ,je travaail sur le developpement d'une vb dans access 2007 voilà j'ai les tables suivants zone,refgion,secteur la clé de la table region migre dans secteur et celui de secteur dans zone et zone dans celui de groupement ,alors j'ai une autre table qui comporte la listes de tous les region,secteur,zone,groupement pour remplir mes tables j'ai crée une requéte d'ajout sur chacune de ces tables mais la requete m'affiche bien la liste mais refuse de transferer les information vers mes tables ,jai le message suivant mcaccess ne peutr pas ajouter tous les enregistrement de la requetes ajout
pourtant losque j'annule les relations la requetes fonctionne correctement

voici la listes de mes champ
region (coderegion,nom_region )
secteur(code_sectzeur,nom_secteur,#coderegion)
zone(code_zone,nom_zone,#code_secteur)
groupement (code_group,nom_goup,#code_zones

latblist (num,nom,car)
dans latbliste ,on retrouve toute les infoprmations consernant les nom de region,secteur,zone,group la champ car permet de determiner si c'est la reg,zone,secteur,group, dans ce champs la difference se fait au niveau du premier caractere utilise donc R,S,z,g
voici la requete que j'ai écrite pour le secteur
insert into secteur(code_secteur,nom_secteur)
select left( latbliste.(num),1), num,nom
from latbliste
where car='s'
et bien je crois que là vous pouvez mieux me comprendre
le msg estr mcsf à attribué laa valeur 0 à champ à la suite d'une ereur de conversion de données ,9 enregistrement non pas été ajoutés à la table à la validation

Répondre à dissou84