Copie dans un nouvel enregistrement VBA acc
Résolu
Adri
-
Adri -
Adri -
A voir également:
- Copie dans un nouvel enregistrement VBA acc
- Copie cachée - Guide
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
- Copie rapide - Télécharger - Gestion de fichiers
16 réponses
Alros voici la solution (sorry pr le retard, petit rdv... !)
Dans la partie INSERT TO, vous devez donner le nom du champ tel qu'il est dénommé dans la table
Dans la partie VALUES, vous devez donner le nom que porte votre champ dans le formulaire.
DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Gestionnaire) VALUES (""" & Titre & """, """ & Nom & """, """ & Prénom & """, """ & Titre_Mme & """, """ & Nom_Mme & """, """ & Gestionnaire & """);"
Dans la partie INSERT TO, vous devez donner le nom du champ tel qu'il est dénommé dans la table
Dans la partie VALUES, vous devez donner le nom que porte votre champ dans le formulaire.
En programmation tout est possible meme si ce n'est pas forcement evident... (jc bellamy)
Comment est ton formulaire ? L'a tu generer automatiquement ?
Je pense que le mieux pour dupliquer un enregistrement est d'utiliser une requete ajout :
Comment est ton formulaire ? L'a tu generer automatiquement ?
Je pense que le mieux pour dupliquer un enregistrement est d'utiliser une requete ajout :
Sub Dupliquer() DoCmd.RunSQL "INSERT INTO ... SELECT ..." End Sub
Le formulaire n'est pas généré automatiquement.
L'utilisateur rempli un certain nombre de champs et l'idée est qu'il clique sur un bouton pour dupliquer (ce qu'il vient de remplir).
Je vais essayer ce que tu me propose ! Merci ;-)
L'utilisateur rempli un certain nombre de champs et l'idée est qu'il clique sur un bouton pour dupliquer (ce qu'il vient de remplir).
Je vais essayer ce que tu me propose ! Merci ;-)
En effet, ta solution semble bonne, mais elle copie tous les enregistrements !!! Et moi je voudrais dupliquer uniquement le document en cours !
Or, comme il sagit d'un code, je ne peut pas spécifier la valeur du champ à l'avance.
:s
ps: comme ma DB est destinée à être multi-utilisateur, il faut que ce soit vraiment l'enregistrement actuelement utilisé par l'utilisateur.
Or, comme il sagit d'un code, je ne peut pas spécifier la valeur du champ à l'avance.
:s
ps: comme ma DB est destinée à être multi-utilisateur, il faut que ce soit vraiment l'enregistrement actuelement utilisé par l'utilisateur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Il faut que tu ajoute une clause where.
Je ne sais pas du tout quels sont tes champs mais la syntaxe presque complete pourrais etre :
je suppose que ta table s'appelle matable et que l'identifiant de cette table s'appelle id.
l'id entre guillemet designe le nom du champ dans la table.
l'id en dehors des guillemets fait reference a la valeur du champ id dans le formulaire.
donc le runsql interpretera en fait un chaine du genre :
Je ne sais pas du tout quels sont tes champs mais la syntaxe presque complete pourrais etre :
Sub Dupliquer() DoCmd.RunSQL "INSERT INTO matable SELECT * FROM matable WHERE id=" & id End Sub
je suppose que ta table s'appelle matable et que l'identifiant de cette table s'appelle id.
l'id entre guillemet designe le nom du champ dans la table.
l'id en dehors des guillemets fait reference a la valeur du champ id dans le formulaire.
donc le runsql interpretera en fait un chaine du genre :
"INSERT INTO matable SELECT * FROM matable WHERE id=123"
Merci... Je pense qu'on y est presque, mais j'ai un problème car il me dit que Le nombre de valeur de la requête doit coïncider avec le nombre de champs destination. Je comprends bien le message, mais je ne vois pas où il me manque un élément... puisque j'ai 7 insert to et 7select !
Private Sub TddDBQ_Click()
DoCmd.RunSQL "INSERT INTO Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire) SELECT Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire)
FROM Donation
WHERE NomMr = "& NomMr And Prénom ="& Prénom"
End Sub
En fait, une fois qu'il a copié ceci, il devrait encore écrire une valeur dans un champ, car tous ne sont pas complétés. Mais chaque chose en son temps... A moins qu'on puisse ajouter une value directement?
Private Sub TddDBQ_Click()
DoCmd.RunSQL "INSERT INTO Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire) SELECT Donation (TitreMr,NomMr,Prénom,TitreMme,NomMme,Numéro_Custumer,Gesionnaire)
FROM Donation
WHERE NomMr = "& NomMr And Prénom ="& Prénom"
End Sub
En fait, une fois qu'il a copié ceci, il devrait encore écrire une valeur dans un champ, car tous ne sont pas complétés. Mais chaque chose en son temps... A moins qu'on puisse ajouter une value directement?
Salut,
on peut ajouter une value directement, mais à mon avis, le problème risque d'être autre : pour pouvoir faire le select il faut que l'enregistrement existe, or quand on est en train de saisir dans le form, le record n'est pas encore créé, donc il ne sera pas présent dans la table, donc pas récupérable via select.
Il faut, à mon avis, faire un insert into, mais avec des values en source (que tu seras allé chercher en vba) et non avec un select.
on peut ajouter une value directement, mais à mon avis, le problème risque d'être autre : pour pouvoir faire le select il faut que l'enregistrement existe, or quand on est en train de saisir dans le form, le record n'est pas encore créé, donc il ne sera pas présent dans la table, donc pas récupérable via select.
Il faut, à mon avis, faire un insert into, mais avec des values en source (que tu seras allé chercher en vba) et non avec un select.
Il y a une erreur dans ton WHERE. Tu dois ecrire :
qui sera interprete ainsi :
Tu peux en plus ajouter des guillemets pour gerer les cas ou il y a un espace dans le NomMr ou Prenom
qui sera interprete ainsi :
WHERE NomMr=" & NomMr & " AND Prénom=" & Prénom
qui sera interprete ainsi :
WHERE NomMr=Diez AND Prénom=Santiago
Tu peux en plus ajouter des guillemets pour gerer les cas ou il y a un espace dans le NomMr ou Prenom
WHERE NomMr=""" & NomMr & """ AND Prénom=""" & Prénom & """"
qui sera interprete ainsi :
WHERE NomMr="Diez" AND Prénom="Santiago Felipe"
Blux a probablement raison. Sa proposition donne la commande suivante :
J'ai suppose que TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer et Gesionnaire existent tous a la fois comme champ de table et comme champ de formulaire.
J'ai suppose qu'il fallait mettre des guillemets partout sauf autour de Numéro_Custumer qui est probablement numerique.
Private Sub TddDBQ_Click() DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer, Gesionnaire) SELECT """ & TitreMr & """, """ & NomMr & """, """ & Prénom & """, """ & TitreMme & """, """ & NomMme & """, " & Numéro_Custumer & ", """ & Gesionnaire & """;" End Sub
J'ai suppose que TitreMr, NomMr, Prénom, TitreMme, NomMme, Numéro_Custumer et Gesionnaire existent tous a la fois comme champ de table et comme champ de formulaire.
J'ai suppose qu'il fallait mettre des guillemets partout sauf autour de Numéro_Custumer qui est probablement numerique.
Merci à tous pour votre aide !
Bon j'ai encodé toutes vos informations...
Le code donne ceci (j'ai viré le Numéro Customer pcq je devrais le renommer dans ma table pr ne pas que ca bug) et j'ai également bougé la condition WHERE, car il n'arrivait à aucun résultat (0 lignes !)! :(
Par contre, en virant également le FROM donation, il m'indique qu'il copie 1 ligne =D
Mais dans ces cas là, j'obtiens ceci comme message.
http://img143.imageshack.us/img143/5265/erreurxa0.png
(ici il parle de 10 lignes, mais c'est pcq je n'avais pas encore bougé le FROM. En bougeant le FROM, il n'indique qu'une ligne)
Bon j'ai encodé toutes vos informations...
Le code donne ceci (j'ai viré le Numéro Customer pcq je devrais le renommer dans ma table pr ne pas que ca bug) et j'ai également bougé la condition WHERE, car il n'arrivait à aucun résultat (0 lignes !)! :(
DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Gestionnaire) SELECT """ & TitreMr & """, """ & NomMr & """, """ & Prénom & """, """ & TitreMme & """, """ & NomMme & """, """ & Gesitonnaire & """ FROM Donation;"
Par contre, en virant également le FROM donation, il m'indique qu'il copie 1 ligne =D
Mais dans ces cas là, j'obtiens ceci comme message.
http://img143.imageshack.us/img143/5265/erreurxa0.png
(ici il parle de 10 lignes, mais c'est pcq je n'avais pas encore bougé le FROM. En bougeant le FROM, il n'indique qu'une ligne)
parceque justement il faut que tu enleve le FROM Donation.
Comme l'evoquais Blux, les donnees ne doivent pas etre prise dans la table (on est pas encore sur qu'elles y soient) mais dans le formulaire. Donc tu dois enlever FROM Donation.
Comme l'evoquais Blux, les donnees ne doivent pas etre prise dans la table (on est pas encore sur qu'elles y soient) mais dans le formulaire. Donc tu dois enlever FROM Donation.
Oui mais même ne bougeant le FROM j'ai quand même le message. Blux avait entièrement raison comme tu le dis, maintenant il ne sélectionne qu'une seule ligne.
Mais bon il y a ce problème de validation.
Mais bon il y a ce problème de validation.
Private Sub TddDBQ_Click() DoCmd.RunSQL "INSERT INTO Donation (TitreMr, NomMr, Prénom, TitreMme, NomMme, Gestionnaire) VALUES (""" & TitreMr & """, """ & NomMr & """, """ & Prénom & """, """ & TitreMme & """, """ & NomMme & """, """ & Gestionnaire & """);" End Sub
Et puis vu que TitreMr est un champ, il faudrait passer par TitreMr.value avant et mettre le tout dans une chaine pour éviter les soucis de """"" multiples.
Ensuite, il serait intéressant d'afficher les valeurs de données, pour voir.
Mets un msgbox "#" & TitreMr & "#" & TitreMr.value & "#" avant ton docmd, pour voir si la donnée est correctement renseignée
Ensuite, il serait intéressant d'afficher les valeurs de données, pour voir.
Mets un msgbox "#" & TitreMr & "#" & TitreMr.value & "#" avant ton docmd, pour voir si la donnée est correctement renseignée
Merci Blux !! J'ai réussi à copier !!
Je vais maintenant adapter la suite, si j'ai encore des questions, je poserai.
On va dailleurs commencer avec une question à 5 Cent : est-il possible de modifier le contenu du message qui indique qu'une ligne va être modifiée?
Encore MERCI !! :)
Je vais maintenant adapter la suite, si j'ai encore des questions, je poserai.
On va dailleurs commencer avec une question à 5 Cent : est-il possible de modifier le contenu du message qui indique qu'une ligne va être modifiée?
Encore MERCI !! :)