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 :

Copier et coller un enregistrement dans un form


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Copier et coller un enregistrement dans un form
    Bonjour à tous,

    j'aimerais savoir comment copier un enregistrement de ma base donnée et de le coller dans un nouvel enregistrement. En fait, j'ai un bouton qui permet de rechercher tout mes enregistrements et de modifier ceux-ci. En appuyant sur modifier, l'enregistrement s'affiche dans mon formulaire. Par la suite j'aimerais récupérer c'est informations et de créer un nouvel enregistrement à partir de celui-ci mais en incrémentant mon ID. voici le formulaire que j'aimerais copier :
    Nom : Capture.PNG
Affichages : 703
Taille : 75,6 Ko

    puis voici le code de mon bouton "Copie".

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub btnCopy_Click()
    'Forms!frm_Process.TabCtl361 = 0
    On Error GoTo Err_Handle
    Dim reponse As String
     
        DoCmd.SetWarnings False
        Me.Group.SetFocus
        DoCmd.RunCommand acCmdSaveRecord
        reponse = MsgBox("Êtes-vous certain de vouloir créer une copie de de ces données?", vbYesNo + vbQuestion, "Confirmation")
        If reponse = vbYes Then
     
        DoCmd.RunCommand acCmdSelectRecord
        DoCmd.RunCommand acCmdCopy
        DoCmd.GoToRecord , , acNewRec
        DoCmd.RunCommand acCmdPasteAppend
        Me.StreamNum.Visible = True
        Me.StreamTitle.Visible = True
        Call EmptyClipboard
     
     
        Me!btnCreate.Enabled = True
        Me!btnUndo.Enabled = True
        Me!btnSave.Enabled = True
        Me!btnDelete.Enabled = True
        Me!btnCopy.Enabled = True
     
    Else
     
    Exit_btnCopy_Click:
        End If
     
    Err_Exit:
        Exit Sub
     
    Err_Handle:
        Select Case Err.Number
            Case Not 2501
            MsgBox Err.Number & "  " & Err.Description, "Unknown error"
        End Select
     
        If Err.Number = 3022 Then
     
            response = MsgBox("Le '# de processus de sélection' et '# de volet' entrés existent déjà.", vbExclamation, "Erreur")
            Me.StreamNum.Value = Null
            Me!StreamNum.SetFocus
     
        End If
     
    DoCmd.SetWarnings True
     
    End Sub

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    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 : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    Bonjour,
    Via une requête Insert c'est plus sûr.

    1) récupérer l'id courant
    2) jouer la requête insert select

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim idCurrent as long
    dim db as dao.database
    set db = currentdb
    if me.newrecord or me.dirty then me.dirty=false
     
    idCurrent=me.MonchampID.value
     
    db.execute "INSERT INTO matable ([colonne2],...) SELECT [Colonne2],.... FROM matable WHERE monchampID=" & idCurrent & ";",dbfailonerror
    'Attention de ne pas inclure le champ ID dans le transfert (ni coté Insert ni Select)
     
    ...
    Enfin c'est un truc dans le style de cet algo.

    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 Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Mais ce code ne fera qu'ajouter automatiquement un enregistrement dans ma base de données ? J'aimerais simplement afficher le même enregistrement dans mon formulaire mais en incrémentant ma clée primaire (Elle est Autoincrement). Par la suis l'utilisateur pourrais décider sois d'enregistrer l'enregistrement dans la base de donnée ou simplement d'annuler l'opération. En résumer le boutton copie permet de créer une copie des informations présente dans le formulaire et de créer un nouvel enregistrement sans toute fois l'enregistrer. Voila pourquoi j'ai utiliser ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     DoCmd.RunCommand acCmdSelectRecord
        DoCmd.RunCommand acCmdCopy
        DoCmd.GoToRecord , , acNewRec
        DoCmd.RunCommand acCmdPasteAppend

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    11 987
    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 : 11 987
    Points : 24 540
    Points
    24 540
    Par défaut
    J'aimerais simplement afficher le même enregistrement dans mon formulaire mais en incrémentant ma clée primaire (Elle est Autoincrement)
    Tu ne peux pas incrémenter ta clef, tu as choisi d'utiliser un autoincrement c'est le moteur Jet qui se charge de ça. La seule méthode pour qu'il incrémente c'est d'ajouter un enregistrement :
    • Soit par requête Insert (comme je le fais dans le code)
    • Soir avec les commande docmd comme tu le fais dans le tiens.
    • Soit en se positionnant sur l'enregistrement Newrec et en faisant une simple modification. Même si tu fais annuler l'incrément est déjà fait.


    Donc oui, avec mon code tu obtiens une simple copie effectivement, avec un nouvel Id. Comme tu le souhaites.
    Rien ne t'empêche d'effectuer un déplacement vers celui-ci pour que l'utilisateur puisse faire la modification.

    A noter que tu as demandé à l'utilisateur s'il voulait faire une copie, s'il répond oui mais qu'il ne le souhaites pas c'est un peu ballot.
    A la limite s'il n'est pas content de sa modification et qu'il souhaite annuler, tu effaces l'enregistrement.

    Si tu souhaites travailler avec un enregistrement non créé dans la base, il te faut passer par une autre source : table temporaire ou datashapping http://arkham46.developpez.com/artic...s/msdatashape/
    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

Discussions similaires

  1. Trouver un enregistrement dans un form
    Par nico62370 dans le forum IHM
    Réponses: 2
    Dernier message: 11/12/2008, 09h12
  2. Message lors de l'effacement enregistrement dans un form
    Par electrosat03 dans le forum VBA Access
    Réponses: 1
    Dernier message: 03/11/2008, 20h18
  3. Nombre total d'enregistrement dans un Form
    Par pleasewait dans le forum Access
    Réponses: 2
    Dernier message: 28/12/2006, 17h53
  4. Réponses: 4
    Dernier message: 15/04/2006, 20h41
  5. Copier un ensemble d'enregistrement dans la meme table
    Par SergeF dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 19h22

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