BDD ACCESS : mise à jour des tables

Résolu/Fermé
Tyfon Messages postés 43 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 7 février 2022 - 14 févr. 2008 à 18:54
 Ben - 16 mars 2010 à 10:25
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
à+

8 réponses

Tyfon Messages postés 43 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 7 février 2022 12
21 févr. 2008 à 05:41
OK, et merci pour cette solution proposée.
Pour l'instant je fais une pause car je dois mabsenter un mois plein.
à +
2
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
15 févr. 2008 à 22:39
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???
0
Tyfon Messages postés 43 Date d'inscription mercredi 22 août 2007 Statut Membre Dernière intervention 7 février 2022 12
18 févr. 2008 à 19:37
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.
à+
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
19 févr. 2008 à 20:13
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...
0

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

Posez votre question
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?
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
20 févr. 2008 à 17:25
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!!!
0
dissou84 Messages postés 11 Date d'inscription jeudi 2 octobre 2008 Statut Membre Dernière intervention 30 avril 2009
30 avril 2009 à 10:56
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
0
Bonjour à tous,

Je viens à vous car je suis débutant en MS Access et le language VB et je developpe une appli' de gestion des utilisateurs pour sécuriser une base de données en attribuant différents droits (Insert/Update/Delete) pour chacun des forms selon le user..

J'ai jusqu'ici réussis, à récupérer le nom du user logué, son ID et lui attribuer des droits sur le form en cours...

Je cherche maintenant à créer un écran de saisie pour l'admin qui lui servirait à mettre à jour la table que j'ai créée servant à assigner des droit spécifique selon le user logué...

J'ai donc creé un nouveau form avec un combobox affichant les différents profiles (admin/user/visitor) mais je ne sais pas du tout comment coder cela :(

J'aimerais que selon le profile sélectionné une table s'affiche avec le nom des forms et leurs droits respectifs, et que si aucun profile n'est sélectionné --> MSGBOX "Please select a profile"

Voilà voilà merci d'avance à tous !
0