Access 2007 : Sous-formulaire de saisie

Fermé
Moi - 25 mai 2010 à 15:03
 rrymouna - 27 mars 2014 à 13:39
Bonjour,

J'ai un soucis access 2007 depuis 2 semaines et j'ai beau parcourir tous les forums possibles, aucun topic n'est similaire à mon cas.

Je suis en stage et travaille sur une base de données afin de gérer les periodes de formation des employées.

Dans ma base de données j'ai trois principales tables:
la table PERSONNEL (ID matricule, Nom, prénom, numéro...)
la table FORMATION (ID N°formation, Nom, délai)
la table RECYCLAGE (ID N°recyclage, date, formation#, matricule#)

C'est donc la table recyclage qui fait la jonction entre les deux autres tables.

J'ai trois principaux formulaires:
F1: un pour acceder au fichier personnel (nom, prenom, mail...) qui marche très bien.
F2: Un deuxième avec sous-formulaire pour accèder aux formations par employé
F3: Un troixième avec sous-formulaire pour accèder aux employés par formation

F2 est basé sur les trois tables et présente par Employé toutes les formations et les dates correspondantes.
Seulement il m'est impossible d'ajouter une nouvelle formation avec une nouvelle date dans le sous-formulaire présenté sous forme de feuille de donnée.
l'erreur "le champ ne peut pas être mis à jour" apparait.

F3 rencontre la même erreur quand j'essaie d'entrer un nouveau matricule dans le sous-formulaire. alors qu'il est basé sur une requête et la table RECYCLAGE.

J'ai essayé de faire une requête pour chaque formulaire mais cela ne marche pas, j'ai essayé d'enlever toute requête et de refaire les formulaires mais à chaque fois il m'est impossible d'ajouter un nouvel enregistrement.

ajout/modif/suprr autorisés et vérouillage sur non. Les relations et intégrités référentielles sont toutes bien crées.

Si quelqu'un pouvait m'aider. Merci beaucoup.
A voir également:

30 réponses

Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
26 mai 2010 à 09:13
Bonjour Moi ,

Quel est le type du Recordset du sous formulaire ?
L'entrée de données est-elle à oui ?


Cordialement
0
Bonjour Jean_Jacques,
Merci beaucoup de vous pencher sur mon problème.
Pour F2 (basé sur les tables) :D'après les propriétés de mon sous-formulaire c'est une feuille de réponse dynamique.
L'entrée de donnée est sur nom mais même en la mettant sur oui, je ne peux toujours pas ajouter de saisie.
Dans mon sous formulaire j'ai un champs qui est calculé grâce à une formule dans une textbox, cela pourrait-il affecter son fonctionnement?

Pour F3 le type recordset est identique et même chose pour entrée de donnée, sur non mais même sur oui cela ne fonctionne pas. (par contre pour celui ci c'est dans la requête que j'ai inséré la formule pour le champs).

Je ne m'en sors pas!
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
26 mai 2010 à 10:03
Moi,

Sous ACCESS 2000, j'ai fait un test qui fonctionne en utilisant :
Type de recordset : Feuille rép. dyn (Maj globale)
et
Entrée des données -> Oui

A+
0
Je viens d'essayer et nouveau problème: d'une part les données du formulaire sont à retaper: Nom de la personne, prénom, service... (alors que j'aimerais vraiment la fiche employé qui apparaisse et juste le sous-formulaire à completer au fil des années, estce possible?). Cela me donne ça:

[URL=https://www.imagup.com][IMG]http://pics.imagup.com/ano1/1274909582.jpg[/IMG][/URL]

http://pics.imagup.com/ano1/1274909582.jpg

et ensuite quand j'essais de rentrer le matricule le message d'erreur:
"Modifications non effectuées: risque de doublons dans champ index, modifiez les données...".
Le matricule des employés n'est pas un numero automatique mais un nombre donné par l'entreprise.
Merci encore.

J'ai réalisé une capture d'ecran de mes relations, de peur de m'être mal exprimée:

[URL=https://www.imagup.com][IMG]http://pics.imagup.com/ano1/1274909850.jpg[/IMG][/URL]

http://pics.imagup.com/ano1/1274909850.jpg

Merci encore!
0

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

Posez votre question
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
Modifié par Jean_Jacques le 26/05/2010 à 11:09
Moi,

Je suggère de créer une requête test pour vérifier si le lien est réel entre les tables.

C.àd. entre la table qui alimente le formulaire et celle qui alimente le sous-formulaire.

A+ je m'absente en ville ...
La science ne fait que trouver ce qui existe depuis toujours.
REEVES Hubert.
0
Après bien des recherches je n'ai aucune idée de ce qu'est une requête test mais en verifiant une a une, toutes mes tables sont liées.
J'ai essayé de nombreuses modifications mais même au niveau de la requête il est impossible de rentrer un nouvel enregistrement!!!
Je n'arrive absolument pas à comprendre mon erreur, avec ou sans requête, le formulaire ne peut être rempli!
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
26 mai 2010 à 14:26
Dans le cas présent, par test il faut comprendre que je veux m'assurer par une requête d' essai que le lien entre les 2 tables est effectif. Voici un exemple SQL qui liste les enregistrements qui ont un code identique [Code Traitement] dans 2 tables distinctes. Table1 et Table2.


SELECT [Table1].[Code Traitement], Table2.[Code]
FROM Table2 RIGHT JOIN [Table1] ON Table2.[Code] = [Table1].[Code];

Copiez/collez ce qui précède dans Requête/Créer requête/Affichage - > Mode SQL (en mettant les bons noms des tables et des champs liés).
Si c'est bon, vous obtenez une liste de correspondance du type de ceci :

100 100
101 101
102 102
ainsi de suite

A+
0
Haaa j'en étais loin! Alors je viens de le faire et tout correspond mais apparement ce serait un problème de structure puisque j'ai refait mes 3 tables dans une nouvelle base de données vierge, en testant juste 3 données et le même problème me bloque.

ps: Dans la formule le dernier [Code] est en fait[Code traitement].
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
26 mai 2010 à 16:48
Moi,


Un outil est prévu pour analyser les tables :


Outils
Analyse
Tables

A+
0
Vraiment merci beaucoup du temps que vous me consacrez!
J'ai tenté de refaire ma base de données sur access 2000 et cela marche! J'ai réalisé que le problème venait de ma table recyclage qui comprend deux clefs etrangères or sur access 2007 on ne peut mettre deux clefs sur deux champs différents dans une même table. Pensez-vous que cela pourrait être l'unique problème? et y voyez vous une solution?

merci encore!
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
27 mai 2010 à 09:30
Je ne dispose pas de la version 2007 de ACCESS, aussi ne suis-je pas le meilleur conseiller.

Cependant, si vous ouvrez votre base 2000 avec ACCESS version 2007, elles sera convertie à la norme 2007. C'est jouable mais sans garantie ...Car il peut rester, exceptionnellement, des anomalies résiduelles à traiter au cas par cas.

Bonne journée
0
Bonjour,
A force d'essais en suivant vos conseils j'ai finalement réussi à faire marcher ma version 2007, seulement maintenant qu'il m'est possible d'ajouter des enregistrements supplémentaires dans mes sous-formulaires, j'aimerais aussi pouvoir en supprimer :) . Estce possible? Quand je place un bouton "supprimer un enregistrement" dans le sous-formulaire il n'apparait pas dans le formulaire principale.
Merci d'avance, en esperant que ce soit ma dernière question!!
0
Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
28 mai 2010 à 16:11
Bonjour Moi,

Je vous mets en garde. Classiquement il est souhaitable d'éviter la suppression d'un enregistrement.
Une maladresse est toujours possible et reconstituer des informations de gestion effacées est au minimum fastidieux. Il vaut mieux prévoir, par exemple, un champ Oui/Non qui vous permettra d'éviter l'affichage à l'écran des enregistrements non utiles (en les filtrants) sans pour autant perdre l'information.
Si vous souhaitez tout de même créer un bouton de suppression, ce dernier doit être situé dans le formulaire sur la ligne qui contient l'enregistrement, cote à cote avec les champs affichés.
Lors de l'affichage du formulaire, vous verrez donc apparaître un bouton pour chaque ligne .... Ce qui correspond à chaque fois à un enregistrement ....

Je ne suis pas sûr d'avoir répondu à votre demande, mais nous pouvons toujours en reparler .....

A+
0
Utilisateur anonyme
28 mai 2010 à 16:39
Salut Moi

Ton cas m'interesse bcp, je suis un mordu de la base de donnees. Concernant ta derniere question, je ne crois pas que ce bouton "Supprimer" apparaitra sur le formulaire principal.

J'aimerais avoir une idee de la structure de ce formulaire/sous-formulaire avant de dire quoi que ce soit, parce que je n'ai jamais rencontré un bouton 2 fois sur la meme interface.

Un peu plus de lumiere. Peut-etre que je comprend pas trop.
0
Salut!
Alors en effet je viens de tester l'idée de Jean_Jacques et à moins d'avoir mal compris, le bouton n'apparait pas dans le formulaire. Par contre, je n'ai pas de bouton "supprimer l'enregistrement" sur le formulaire principale. je vais faire une capture d'ecran parce que je pense, en effet, m'exprimer plutot mal. je reviens avec!
0
http://pics.imagup.com/ano1/1275105678.jpg

https://www.imagup.com

Je ne sais pas laquelle marche. Voilà l'image de mon formulaire. l'endroit raturé sur paint et ce que j'aimerais par exemple supprimer.
0
Rhyton le boyar
31 mai 2010 à 08:52
Hello,

Je suis d'accord avec Jean Jacques supprimer des enregistrement n'est pas conseillé:
Si on souhaite tout de meme le faire il vaut mieux prévoir un formulaire Ajout et un autres pour les suppressions c'est plus sur.

Enfin en ce qui concerne le bouton, il ne peut pas apparaitre sur un sous formulaire en mode Feuilles de données c'est aussi bète que ça.
si le sous formulaire est en mode Formulaire alors le bouton réapparaitra.

Bon courage,

Rhyton
0
Bonjour,
Avant tout merci de vos conseils, en effet tout simplement en mode formulaire le bouton apparait. Je comprends pour le risque de mélanger saisie/suppression sans compter que ls futurs utilisateurs sont pires novices que moi sur access. Du coup j'aimerais suivre l'idée de Jean_Jacques , mais au lieu d'associer le coche "oui/non" à un affichage, plutot à envoyer l'enregistrement dans une table archive si la case est cochée. Soit un code évenement sur "clic" qui permettrait de créer une table "archives".
Seulement je suis plutot très mauvaise en SQL, VBA, existe-t-il des codes types pour ce genre de code?

Merci d'avance,
0
Rhyton le boyar
31 mai 2010 à 10:09
Bonjour,

d'autres t'indiqueront peut être une méthode directe avec programmation VBA directe.

Ceci dit tu peux le faire graces aux assistant access.
Crée une table archive avec les même champs
Crée une requètes selection ne t'affichant que les lignes ou le champ est coché
transforme cette requète en une requète ajout dans ta table archive.
Crée ensuite une requète de suppression avec les mêmes critères.

Enfin crée une macro avec l'assistant
executer requète d'ajout
executer requète de suppression

tu peux éventuellement si tu veux désactiver puis réactiver les messages en début et fin de macro.

crée ton bouton d'archivage sur ton formulaire
va dans l'onglet "evenement" des propriété, et sur la propriété "sur clic", grace a la liste déroulante, choisi la macro que tu viens de créer.

fais tes test sur une base d'essai bien entendu.

Bon courage,

Rhyton
0
Génial! Merci beaucoup, j'essaie ça de suite. Je viens justement de créer ma requête selection et ma table "archive" et je bugais un peu pour la suite. Je vous tiens au courant, merci beaucoup beaucoup!!!
0
Alors j'ai suivi la procédure et cela fonctionne, seulement à chaque action du bouton "archiver" cela supprime les élèments enregistrés dans la table "achive" precedemment. Comme ceux-ci ont été supprimés des tables. or j'aimerais garder la trace de tous les enregistrements supprimés.
0
Edit: Tout marche j'ai tout simplement modifié la requête Création en requête ajout afin de garder la trace des enregistrements effacés.
Merci encore de toute cette gentillesse.
0
Rhyton le boyar
15 juin 2010 à 09:25
Hello,

je vient de rentrer de vacances, Content que ton probleme soit resolu.

peux tu alors le classer comme tel sur le forum, tu remonte vers le haut du sujet et tu devrait avoir une option te permettant de le cliquer comme resolu.

Merci et bonne journee,

Rhyton
0
Bonjour,

Je ne sais pas si c'est le même problème que j'ai ou non, mais j'ai une base de données Access 7 là où j'ai un formulaire et un sous formulaire qui dépendent l'un de l'autre réellement ce sont 2 tables (l'une à 4 champs clés dont 3 parmi eux sont clés de la 2ième table).

Alors dans mon formulaire de saisie j'ai crée les champs de la 1ière table en haut et ceux de la 2ième en sous formulaire en saisissant 1 seule fois les champs en commun , tout ça passe bien sauf que de temps à autre le sous formulaire ne présente plus les champs à saisir et ça ne sera fonctionnelle que si je rentre en mode création et je modifie en oui les options (ajout, modifier, supprimer) et je ne sais pas comment ça se change automatiquement!!!

Mon problème c'est que plusieurs personne utilise cette application et chaque fois on me tél ou on m'envoi un email que ça fonctionne!!!
Bon maintenant que la base est petite je demande de m'envoyer toute la base directement je corrige et je le renvoi, mais une fois que ça va s'alourdir de données que vais je faire??

Très urgent SVP!!

Merci
0