OVH Cloud OVH Cloud

Dupliquer un enregistrement

7 réponses
Avatar
Luis
Bonjour,
J'aimerai dupliquer un enregistrement depuis un=20
formulaire, sachant que la table =E0 une num=E9rotation auto.
Par exemple pour une commande livr=E9e le client repasse la=20
m=EAme commande en lieu et place de tout saisir dans un=20
nouvel enregistrement, ouvrir une nouvelle fiche identique=20
sauf le num=E9ro (Num=E9roAuto) et la date.
Merci.
Luis

7 réponses

Avatar
3stone
Salut,

"Luis"
J'aimerai dupliquer un enregistrement depuis un
formulaire, sachant que la table à une numérotation auto.
Par exemple pour une commande livrée le client repasse la
même commande en lieu et place de tout saisir dans un
nouvel enregistrement, ouvrir une nouvelle fiche identique
sauf le numéro (NuméroAuto) et la date.



Regarde la propriété ".defaultValue"

cela devrait te facilité la chose...


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Luis
Bonjour,

Je ne sais pas utiliser DefaultValue.
Car j'avais commencé en l'utilisant comme ça pour chaque
champ

Me.Client.Lockedúlse
Me.Article.Lockedúlse
Me.Client.DefaultValue
Me.Article.DefaultValue
et ainsi de suite pour tous les champs à copier et j'ai
une erreur de compilation: 'Utilisation incorrecte de la
propriété.'
Comment est-ce que l'on utilise '.DefaultValue'S'il vous
plaît?
Merci.
Luis
-----Message d'origine-----
Salut,

"Luis"
J'aimerai dupliquer un enregistrement depuis un
formulaire, sachant que la table à une numérotation auto.
Par exemple pour une commande livrée le client repasse la
même commande en lieu et place de tout saisir dans un
nouvel enregistrement, ouvrir une nouvelle fiche identique
sauf le numéro (NuméroAuto) et la date.



Regarde la propriété ".defaultValue"

cela devrait te facilité la chose...


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




.



Avatar
3stone
Salut,

"Luis"
Je ne sais pas utiliser DefaultValue.

Tu as regardé dans l'aide ?


Car j'avais commencé en l'utilisant comme ça pour chaque
champ



Sur après mise à jour du champ, tu mets:

Me.Champ1.DefaultValue = """" & Me.Champ1.Value & """"


et à la saisie suivante, Access te présente automatiquement
les valeurs précédemment saisies.




--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
Avatar
Luis
Bonjour,
Sur après mise à jour du champ, tu mets:

Me.Champ1.DefaultValue = """" & Me.Champ1.Value
& """"

J'ai fais comme sur l'exemple que tu me donnes pour tous
les champs et j'ai un formulaire vide prêt à être rempli,
Access ne me présente pas les valeurs précédemment saisies.
J'ai essayé de faire valider et j'ai une erreur
Le Champ 'Client' ne peut pas être null et ceci pour tous
les champs du formulaire, alors qu'ils ne sont pas vides.
Faudrait-il que je les déclare Public genre 'Public
strClient As Variant'.

Tu as regardé dans l'aide ?


Comme je disais à Raymond dans un précedent message, j'ai
perdu mon aide Access.
J'ai désinstallé Access et réinstallé, fais toutes les
mises à jour et maintenant quand je veux ouvrir l'aide
j'ai une page grise. Pourquoi, je ne sais pas.
Merci.
Si tu peux encore me guider?
Luis

-----Message d'origine-----
Salut,

"Luis"
Je ne sais pas utiliser DefaultValue.

Tu as regardé dans l'aide ?


Car j'avais commencé en l'utilisant comme ça pour chaque
champ



Sur après mise à jour du champ, tu mets:

Me.Champ1.DefaultValue = """" & Me.Champ1.Value
& """"



et à la saisie suivante, Access te présente
automatiquement

les valeurs précédemment saisies.




--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------




.



Avatar
Michel Gesnot
Bonsoir Luis,

J'ai une autre proposition.

La solution proposée par Pierre suppose que les deux
commandes sont reçues simultanément et enregistrées l'une
après l'autre. Votre demande n'est pas tout à fait claire
à ce niveau.

Je vous suggère d'utiliser la petite routine qui suit.
Elle présente l'avantage de fonctionner à partir de
n'importe quel record qu'on a rappelé à l'écran, par
exemple à partir de l'historique des commandes du client
(qui passe régulièrement la même commande - si ça n'est
un 'hasard' heureux pour ma cause !).

Il faudrait la généraliser avec un dim et set
frmFormulaire au lieu de Me et elle pourrait devenir une
fonction de niveau public (sans argument et qui ne
retourne rien, mais qui peut alors être appelée
directement dans la ligne de commande sur la feuille de
propriété via =NomdelaFonction() ).

Sur votre formulaire, vous créez un bouton "Duplicata" et
pour l'événement "Sur Clic", vous appelez la procédure.


Option Compare Database
Option Base 1


Private Sub Commande10_Click()

Dim ctlCourant As Control, intBoucle As Integer
Dim strContrôles() As String
ReDim strContrôles(Me.Count)


For intBoucle = 1 To Me.Count
Set ctlCourant = Me.Controls(intBoucle - 1)
If ctlCourant.ControlType = acTextBox Then
If ctlCourant <> "" Then strContrôles(intBoucle) =
ctlCourant
End If
Next intBoucle
DoCmd.GoToRecord , , acNewRec

For intBoucle = 1 To Me.Count
If strContrôles(intBoucle) <> "" Then
Set ctlCourant = Me.Controls(intBoucle - 1)
If ctlCourant.Locked = 0 Then ctlCourant =
strContrôles(intBoucle)
End If
Next intBoucle

End Sub


En principe, cela fonctionne tel que.

J'espère que cela résoudra votre problème.

M. Gesnot



-----Message d'origine-----
Bonjour,
Sur après mise à jour du champ, tu mets:

Me.Champ1.DefaultValue = """" & Me.Champ1.Value
& """"

J'ai fais comme sur l'exemple que tu me donnes pour tous
les champs et j'ai un formulaire vide prêt à être rempli,
Access ne me présente pas les valeurs précédemment
saisies.

J'ai essayé de faire valider et j'ai une erreur
Le Champ 'Client' ne peut pas être null et ceci pour tous
les champs du formulaire, alors qu'ils ne sont pas vides.
Faudrait-il que je les déclare Public genre 'Public
strClient As Variant'.

Tu as regardé dans l'aide ?


Comme je disais à Raymond dans un précedent message, j'ai
perdu mon aide Access.
J'ai désinstallé Access et réinstallé, fais toutes les
mises à jour et maintenant quand je veux ouvrir l'aide
j'ai une page grise. Pourquoi, je ne sais pas.
Merci.
Si tu peux encore me guider?
Luis




Avatar
Luis
Bonjour,
J'ai essayé cette routine et au clic j'ai
"erreur d'exécution '2105'
Impossible d'atteindre l'enregistrement spécifié."

Ligne en surbrillance:
DoCmd.GoToRecord , , acNewRec

Savez-vous porquoi?
Luis
-----Message d'origine-----
Bonsoir Luis,

J'ai une autre proposition.

La solution proposée par Pierre suppose que les deux
commandes sont reçues simultanément et enregistrées l'une
après l'autre. Votre demande n'est pas tout à fait claire
à ce niveau.

Je vous suggère d'utiliser la petite routine qui suit.
Elle présente l'avantage de fonctionner à partir de
n'importe quel record qu'on a rappelé à l'écran, par
exemple à partir de l'historique des commandes du client
(qui passe régulièrement la même commande - si ça n'est
un 'hasard' heureux pour ma cause !).

Il faudrait la généraliser avec un dim et set
frmFormulaire au lieu de Me et elle pourrait devenir une
fonction de niveau public (sans argument et qui ne
retourne rien, mais qui peut alors être appelée
directement dans la ligne de commande sur la feuille de
propriété via =NomdelaFonction() ).

Sur votre formulaire, vous créez un bouton "Duplicata" et
pour l'événement "Sur Clic", vous appelez la procédure.


Option Compare Database
Option Base 1


Private Sub Commande10_Click()

Dim ctlCourant As Control, intBoucle As Integer
Dim strContrôles() As String
ReDim strContrôles(Me.Count)


For intBoucle = 1 To Me.Count
Set ctlCourant = Me.Controls(intBoucle - 1)
If ctlCourant.ControlType = acTextBox Then
If ctlCourant <> "" Then strContrôles(intBoucle) =
ctlCourant
End If
Next intBoucle
DoCmd.GoToRecord , , acNewRec

For intBoucle = 1 To Me.Count
If strContrôles(intBoucle) <> "" Then
Set ctlCourant = Me.Controls(intBoucle - 1)
If ctlCourant.Locked = 0 Then ctlCourant =
strContrôles(intBoucle)
End If
Next intBoucle

End Sub


En principe, cela fonctionne tel que.

J'espère que cela résoudra votre problème.

M. Gesnot



-----Message d'origine-----
Bonjour,
Sur après mise à jour du champ, tu mets:

Me.Champ1.DefaultValue = """" & Me.Champ1.Value
& """"

J'ai fais comme sur l'exemple que tu me donnes pour tous
les champs et j'ai un formulaire vide prêt à être
rempli,


Access ne me présente pas les valeurs précédemment
saisies.

J'ai essayé de faire valider et j'ai une erreur
Le Champ 'Client' ne peut pas être null et ceci pour
tous


les champs du formulaire, alors qu'ils ne sont pas vides.
Faudrait-il que je les déclare Public genre 'Public
strClient As Variant'.

Tu as regardé dans l'aide ?


Comme je disais à Raymond dans un précedent message,
j'ai


perdu mon aide Access.
J'ai désinstallé Access et réinstallé, fais toutes les
mises à jour et maintenant quand je veux ouvrir l'aide
j'ai une page grise. Pourquoi, je ne sais pas.
Merci.
Si tu peux encore me guider?
Luis



.





Avatar
Michel Gesnot
Bonjour Luis,

Sous Acces 2000, cela fonctionne.
Je ne sais pas avec quelle version vous travaillez.

1ère hypothèse :
Vérifier dans la feuille de propriétés de votre formulaire
que "Ajout autorisé" est bien sur oui.
Si elle est sur non, l'erreur 2105 se produit dès que vous
dépassez le dernier record existant.

2e hypothèse :
vous travaillez avec Access 2 ou 7 et il faut consulter la
KB 128195. Même si vous n'êtes pas dans l'événement
BeforeUpdate, vous pouvez tester la solution proposée :
SendKeys ...

J'espère que cela fonctionnera.

Michel Gesnot


-----Message d'origine-----
Bonjour,
J'ai essayé cette routine et au clic j'ai
"erreur d'exécution '2105'
Impossible d'atteindre l'enregistrement spécifié."

Ligne en surbrillance:
DoCmd.GoToRecord , , acNewRec

Savez-vous porquoi?
Luis
.