IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Copie d'un champ d'une Table 1 vers Table 2 lors de l'ajout d'un record dans Table 2


Sujet :

VBA Access

  1. #1
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut Copie d'un champ d'une Table 1 vers Table 2 lors de l'ajout d'un record dans Table 2
    bonjour

    Je viens demander votre aide car je suis bloqué sur un point.

    j'ai une table T_dossier. Elle contient toutes les infos du dossier d'une personne. J'ai une table T_controle. Cette table va servir à enregistrer des infos concernant le controle d'un dossier.

    T_dossier est en relation avec T_controle (1 à plusieurs). Dans la table T_controle, La clé primaire est IDcontrolledossier de type Numauto et la clé étrangère est IDdossier (numérique)

    J'ai un formulaire composé d'un sous form. ce sousform est basé sur une requete composé de certains champs de la table T_dossier. J'ai un bouton" controler le dossier sélectionné".

    Le but de ma manip est lorsqu'un enregistrement est sélectionné dans le sous form et que l'on clic sur "controler le dossier sélectionné", la Table T_controle créer un nouvel enregistrement. Le champ ID dossier correspondrait à celui du dossier controlé (ID dossier dans T_dossier). En gros IDdossier (T_dossier) doit etre copié dans IDdossier(T_controle) lorsqu'un dossier est sélectionné dans le sous form et que le bouton est activé.

    Je ne sais pas comment faire, j'ai cherché différentes possibilités sur google sans trouvé de réponse efficace.

    En espérant que quelqu'un est une solution... Merci d'avance

    Cordialement
    Guillaume

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,

    Pas très clair tout ça, pour moi en tout cas, je ne comprend pas bien ce qu' affiche le formulaire qui contient le sous formulaire.

    J'ai un formulaire composé d'un sous form. ce sousform est basé sur une requete composé de certains champs de la table T_dossier. J'ai un bouton" controler le dossier sélectionné".
    Que contient le formulaire d'où viennent ses données?

    Vous êtes dans la construction de la BDD donc vous savez ce que vous voulez faire, mais à la lecture de vos explications moi je n'y voit pas très clair.
    Mais quelqu'un de plus voyant comprendra peut-être mieux que moi.
    Cordialement.

    RJ

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bonjourrjamin,

    Oui je comprend que cela ne soit pas clair. et je vais faire en sorte de l'être.

    je ne comprend pas bien ce qu' affiche le formulaire qui contient le sous formulaire.

    Je réalise un appli qui servira à controler des dossiers. Dans ma table T_dossier j'ai les champs IDdossier (clé primaire) nom, prénom, num secu etc j'ai 18 champs au total.

    Cette table est relié à une autre table T_controle. Dans cette table j'ai les champs IDcontroledossier (clé primaire), IDdossier (clé étrangère), type de controle, IDcontroleur, date..etc
    Dans un form menu général le controleur cliquera sur "procédure de controle"

    Un form s'ouvrira : controle_dossier_01. Dans ce form j'ai deux choses.
    1) un sous form
    2) un bouton "controler le dossier sélectionné".
    Le sousform est basé sur une requete. Dans cette requete en mode feuille de données j'ai quelques champs issu de la table T_dossier. Cela permet au controleur de voir les dossier à controler. Il doit en sélectionner 1 parmis ceux présent. En cliquant sur le bouton cela ouvre un autre formulaire Controle_dossier 2.


    En gros la table T_controle se compose ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    T_Controle :
    IDControleDossier	IDDossier		…	  FlagIF
    144			12		Dupond	        …	    Oui
    157			12		Durand	        …

    Pour un dossier il peut y avoir 2 controles au maximum. Je souhaite donc que lorsqu'un controleur choisira un dossier et cliquera sur le bouton,un nouvel enregistrement s'ajoute (dans T_controle) et que le champ de la table T_dossier(IDdossier) se copie dans la table T_controle(IDdossier). Le champ IDcontroleDossier est en numauto donc lors de l'ajout d'un nouvel enregistrement une valeur sera forcément attribué.

    je ne sais pa si cela est plus clair. je possède un pdf avec les visuels de mon appli si besoin.

  4. #4
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Je n'ai toujour pas trouvé de solution.

    La méthode OpenArgs pourrait t-elle fonctionner ??

    sur clic du bouton dans controle_dossier_01

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub controlselectdoss_Click()
     
    DoCmd.OpenForm "Controle_doss_02", , , , acFormAdd, , Me!IDdossier
    End Sub]
    Puis sur l'évènement OpenForm du formulaire dossier_controle_02

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Open(Cancel As Integer)
    DoCmd.GoToRecord , , acNewRec
    Me!IDdossier = Me.OpenArgs
    End Sub
    Je n'ai pas de message d'erreur mais pas rien ne se passe au final... aucun enregistrement d'ajouté...

    bref je suis bien perdu je crois...

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    ‘core moi,

    La source du formulaire Controle_doss_02 est-elle bien sur la relation T_Dossier-1------∞-T_Controle, avec notamment T_Controle.IdDossier dans la sélection (onglet Données-->Source puis clic sur […]) ?

  6. #6
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    yes

    La source du formulaire Controle_doss_02 est-elle bien sur la relation T_Dossier-1------∞-T_Controle, avec notamment T_Controle.IdDossier
    Oui c'est ok pour ca.

    Mais en faite sans comprendre pourquoi j'ai un message d'erreur maintenant :

    erreur d'execution 2498 le type d'une expression entrée par un des arguments est incorrect...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "Controle_doss_02", , , , acFormAdd, , Me!IDdossier

  7. #7
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Pour l'erreur c'est bon en faite; Cela venait de la source du controle dans le formulaire select_doss_01. requete T_dossier-1------∞-T_controle.

    J'ai maintenant juste T_dossier.IDdossier

    Plus de message d'erreur. par contre lorsque j'arrive sur controle_select_doss_02. ( je n'ai pas encore les infos que je dois récup dans des champs textes provenant de la table T_dossier ni les infos à enregistrer dans T_controle mais cela n'est pas la même procédure).
    Lorsque je simule que tt est Ok et que je clic sur commencer le controle pour arriver sur le formulaire avec les onglets et le libellés..etc, la table controle ajoute un nouvel enregistrement mais la valeur de ID Dossier reste à 0...

    C'est sur la bonne voie, mais ne faudrait-il pas que cet ajout se fasse avant...

  8. #8
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    Juste avant l’OpenForm, est-ce qu’un Msgbox(Me!idDossier) renvoie la bonne valeur ?
    Essaye en déplaçant ton bouton "controler le dossier sélectionné" dans le détail ou dans l’en-tête du sous-formulaire.

  9. #9
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Juste avant l’OpenForm, est-ce qu’un Msgbox(Me!idDossier) renvoie la bonne valeur ?
    Non je n'ai rien ce type.

    Essaye en déplaçant ton bouton "controler le dossier sélectionné" dans le détail ou dans l’en-tête du sous-formulaire.
    J'ai essayé mais le faite que ce sous formulaire soit en mode feuille de données, le bouton n'apparait pas. Seulement le tableau de données est visible....

  10. #10
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 601
    Points : 56 700
    Points
    56 700
    Billets dans le blog
    40
    Par défaut
    Citation Envoyé par Chagui Voir le message
    J'ai essayé mais le faite que ce sous formulaire soit en mode feuille de données, le bouton n'apparait pas. Seulement le tableau de données est visible....
    Et en mettant le sous-formulaire en mode "formulaire continu" (onglet Format) ?

    Si ça ne marche toujours pas, met des copies d’écran des formulaires en pièces-jointes. Ça pourrait inspirer quelqu’un d’autre…

  11. #11
    Membre habitué
    Inscrit en
    Juillet 2010
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 230
    Points : 129
    Points
    129
    Par défaut
    Bon finalement j'ai trouvé ce qui n'allait pas...

    J'avais comme premier enregistrement dans la table T_dossier, IDdossier = 0 donc forcément la valeur de (Me!idDossier) renvoyait 0 dans la table T_controle...

    Donc la méthode OpenArgs fonctionne bien. Le problème c'est qu'elle ne prend que le 1er enregistrement mais pas celui que je sélectionne. (le 10ème par ex).

    De plus l'enregistrement créé dans la table T_controle ne s'ajoute que lorsque que je ferme le formulaire(controle_select_doss02), (perte du focus je crois..) via un bouton "commencer le controle" qui ouvre quand à lui le 3eme formulaire controle_select_doss03. Je me demande si les informations à saisir dans controle_select_doss02 qui doivent etre enregistrer dans T_controle pourront etre réellement enregistré si l'enregistrement se créer apres...

    Si quelqu'un à une réponse je suis preneur merci

Discussions similaires

  1. [AC-2003] Copie d'un champ d'une table dans un autre champ
    Par chuspyto dans le forum VBA Access
    Réponses: 8
    Dernier message: 30/03/2013, 12h08
  2. Réponses: 2
    Dernier message: 29/06/2011, 18h50
  3. Copie d'un champ d'une table à une autre
    Par dodo91 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 13/05/2009, 11h29
  4. Réponses: 2
    Dernier message: 07/05/2008, 18h24
  5. [MySQL] Ajout d'un record dans une base de donnees
    Par barthelv dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/03/2006, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo