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

Access Discussion :

Dupliquer certains champs dans un nouvel enregistrement [AC-2013]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut Dupliquer certains champs dans un nouvel enregistrement
    Bonjour,

    Je souhaite dupliquer certains champs dans un nouvel enregistrement dans la meme table je m'explique.

    J'ai une table nommé T_CYTOGENETIQUE après un processus j'ai une champ STTCYTO et un champs ENB (champs case a coché et un champs PBLC ( champs case a coché) donc deja pour l'instant quand PBLC n'est pas coché lorsque je clique sur ENB cela change le STTCYTO (selon un liste défini dans une table.)

    Donc maintenant je voudrais que le faite de cliquer sur ENB si le champs PBLC n'est pas coché me change le statut de STTCYTO (ça c'est fait mais aussi me duplique certains champs de cette enregistrement dans un nouvel enregistrement de la meme table (N°ACP, DDE(date du jour du clique), GENECYTO et et en plus que le champs STTCYTO de ce nouvel enregistrement m'affiche une valeur particulière (selon un liste défini dans une table).

    J’espère que c'est clair sinon n'hésiter pas demander

    merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Le mieux est d'utiliser une requête d'insertion (insert) et la lancer depuis VBA.

    1) sauvegarder l'enregistrement courant.
    2) Soit utiliser un INSERT / SELECT soit un INSERT / VALUES.
    https://msdn.microsoft.com/en-us/lib...or=-2147217396

    Il faut la composer depuis VBA et l'exécuter via un Currentdb.execute.

    CF le tuto sur le débogage des requêtes en VBA.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    merci pour votre réponse mais je suis pas trés au points niveau VBA et je comprend pas grand chose au tuto...

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    C'est justement le moment de s'y mettre.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    Je sais ben justement j'aimerais bien que que l'on me sorte lea lignea de code en mexpliquqnt le pourquoi comme ça lqa prochaine fois j'aurais pas a venir ici.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Tu sais faire une requete Select avec les champs que sources ?
    Ta table comporte un champ identifiant unique ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    non pas trop
    et oui j'ai un numéro auto dans ma table

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    90% d'une application passe par les requêtes. Sans connaissance de cette partie tu ne peux pas avancer :

    Voici un bon tuto :

    http://jeannot45.developpez.com/arti...tionrequetes1/
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    J'ai bien lu le tuto mais sélectionner des enregistrement avec une requete je sais faire mais la question est vu que ma requete seras demander ( a voir plus tard) lors de la mise a jour d'un champs (case a cocher) dans un formulaire je ne sais pas quoi mettre en critére pour que la requete me selectionne l'enregistrement qui correspond a la case que je viens de cocher( champs dans la meme table )

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    Bon je suis arrivé à crée une requete qui selectionne l'enregistrement courant et je l'ai transformer en ajout.

    maintenant dans mon formulaire ou je doit cocher la case qui permettra l'activation de la requete je n'arrive pas a ordonner l'execution de la requete en VBA.
    Voici mes lignes de code ( une partie est parametrer pour changer la valeur d''une liste deroulante)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ENB_AfterUpdate()
    If Me.PBLC.Value = False Then
    Me.STTCYTO.Value = "6"
    End If
    If Me.PBLC.Value = True Then
    Me.STTCYTO.Value = "23"
    End If
    If Me.PBLC.Value = True Then
    CurrentDb.Execute "R_SELECTNEWENR", dbFailOnError
    End If
    End Sub
    Et j'ai alors une erreur execution '3061'
    Trop peu de parametre. 1 attendu

  11. #11
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Et j'ai alors une erreur execution '3061'
    Trop peu de parametre. 1 attendu
    Tu lui as indiqué 1 paramètre que tu ne lui fourni pas. Avec le peu d'info fourni c'est la seule certitude.

    Concernant cet algo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub ENB_AfterUpdate()
    If Me.PBLC.Value = False Then
    Me.STTCYTO.Value = "6"
    End If
    If Me.PBLC.Value = True Then
    Me.STTCYTO.Value = "23"
    End If
    If Me.PBLC.Value = True Then
    CurrentDb.Execute "R_SELECTNEWENR", dbFailOnError
    End If
    End Sub
    Logiquement PBLC ne peut être vrai et faux au même moment. Donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Me.PBLC.Value = False Then
    Me.STTCYTO.Value = "6"
    Else
    Me.STTCYTO.Value = "23"
    CurrentDb.Execute "R_SELECTNEWENR", dbFailOnError
    End If
    ou mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    If Me.PBLC.Value Then
    Me.STTCYTO.Value = "23"
    CurrentDb.Execute "R_SELECTNEWENR", dbFailOnError 
    Else
    Me.STTCYTO.Value = "6"
    End If
    Manque qu'à connaitre le contenu de "R_SELECTNEWENR".

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    bonjour,

    merci de ces conseils.

    voici deux Screenshots de ma requête R_SELECTNEWENR
    Images attachées Images attachées   

  13. #13
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Je ne suis pas trop étonné qu'il ne voit pas la syntaxe "Formulaires!..."

    Soit dans la requête mettre ton lien dans Eval() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Eval(Formulaires!....)

    Soit passer en tout en VBA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dim vsql as string
    vsql = "INSERT .. SELECT ... WHERE ... = " & forms.[S-1...].[] & ";"
    currentdb.execute vsql, dbfailonerror
    S-1... doit être ouvert dans les 2 cas pour que ça fonctionne.


    PS : tu peux envoyer le texte SQL directement en basculant en mode SQL. plus pratique pour lire que ces copies d'écran
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    Merci pour la réponse rapide.

    J'ai construit comme ceci car la solution avec eval ne marchais pas .

    celle ci me met erreur 438 propriété ou objet non gérée

    Le formulaire 5-1SFPRLVT sera forcément ouvert vu que c'est au clique dans celui ci que le code sera exécuter.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ENB_AfterUpdate()
    Dim vsql As String
    vsql = "INSERT INTO T_CYTOGENETIQUE ( N°ACP, N°DEFGEN, STTCYTO, GENECYTO ) SELECT T_CYTOGENETIQUE.N°ACP, T_CYTOGENETIQUE.N°DEFGEN, T_CYTOGENETIQUE.STTCYTO, T_CYTOGENETIQUE.GENECYTO FROM T_CYTOGENETIQUE WHERE (((T_CYTOGENETIQUE.N°)= " & Forms.[5-1SFPRLVT].[] & ";"
     
    If Me.PBLC.Value Then
    Me.STTCYTO.Value = "23"
    CurrentDb.Execute vsql, dbFailOnError
    Else
    Me.STTCYTO.Value = "6"
    End If
    End Sub

  15. #15
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Si le code est dans le formulaire 5-machin alors utilise Me. comme pour les autres contrôles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub ENB_AfterUpdate()
    Dim vsql As String
     
    If Me.PBLC.Value Then
        Me.STTCYTO.Value = "23"
        vsql = "INSERT INTO T_CYTOGENETIQUE ( N°ACP, N°DEFGEN, STTCYTO, GENECYTO ) SELECT T_CYTOGENETIQUE.N°ACP, T_CYTOGENETIQUE.N°DEFGEN, T_CYTOGENETIQUE.STTCYTO, T_CYTOGENETIQUE.GENECYTO FROM T_CYTOGENETIQUE WHERE (((T_CYTOGENETIQUE.N°)= " & me.[] & ";"
        CurrentDb.Execute vsql, dbFailOnError
    Else
        Me.STTCYTO.Value = "6"
    End If
    End Sub
    Peuple la variable vsql que lorsqu'il le faut. Prendre les bonnes habitudes permet d'avoir un code clair, compréhensible et peut dans certain cas rendre l'application plus fluide.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    A part un souci de parenthèse que j'ai résolu tous fonctionne maintenant je vais essayer d'ajouter une msg box pour demander la confirmation de la copie .
    Mais j'aimerais faire en sorte que lors de la création parcontre dans un champs "DDE" soit ajouter la date du jour de la duplication une idée?

  17. #17
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    D'un coté le nom du champ et de l'autre la valeur sous forme d'une fonction VBA (now() ou Date()).
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    technicien labo
    Inscrit en
    Février 2016
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : technicien labo

    Informations forums :
    Inscription : Février 2016
    Messages : 116
    Points : 35
    Points
    35
    Par défaut
    Merci tous va parfaitement.

    Voila pour ceux qui ont le meme probleme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub ENB_AfterUpdate()
    Dim vsql As String
    Dim Msg, Style, Title, Response
     
    If Me.PBLC.Value = True Then
       Msg = "Voullez vous vraiment effectuer un nouvel envoi pour ce prélèvement?"
       Style = vbYesNo + vbExclamation
       Title = "ATTENTION"
       Response = MsgBox(Msg, Style, Title)
    If Response = vbYes Then    ' User chose Yes.
        Me.STTCYTO.Value = "23"    ' Perform some action.
        vsql = "INSERT INTO T_CYTOGENETIQUE ( N°ACP, STTCYTO, DDE, GENECYTO ) SELECT T_CYTOGENETIQUE.N°ACP,14, now(), T_CYTOGENETIQUE.GENECYTO FROM T_CYTOGENETIQUE WHERE ((T_CYTOGENETIQUE.N°)= " & Me.[] & ");"
        CurrentDb.Execute vsql, dbFailOnError
    End If
    If Response = vbNo Then ' User chose No.
        Me.STTCYTO.Value = "22"
        Me.ENB = False ' Perform some action.
    End If
    End If
    If Me.PBLC.Value = False Then
        Me.STTCYTO.Value = "6"
    End If
    Me.Requery
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2002] Comment Vérouiller certains champs dans certains enregistrements
    Par vortexlechien dans le forum IHM
    Réponses: 2
    Dernier message: 16/05/2009, 00h48
  2. Réponses: 11
    Dernier message: 20/07/2007, 15h32
  3. Réponses: 3
    Dernier message: 03/11/2006, 15h30
  4. Réponses: 4
    Dernier message: 10/08/2006, 17h58
  5. Commande Update... vider certains champ dans table.
    Par angelevil dans le forum ASP
    Réponses: 3
    Dernier message: 04/05/2005, 21h08

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