Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

modifié: dupliqué: et modifié le nouveau record

9 réponses
Avatar
Guy du Lac
Bonjour,

j'utilise access 2003
Dans un formulaire, je dois modifier certains champs sur le premier record
puis créer un réplicat de ce record et modifier un champ du nouveau record.
cette procedure doit se faire pour l'ensemble des records du formulaire en
cliquant sur un bouton.

Quelque chose qui ressemble à cela

for compteur = 1 to eof()
modifier certain champs sur le record
dupliquer le record modifier
modifier un champ sur le record dupliqué
avancer au record suivant du formulaire


next for

......... j'ai peu d'expérience en programmation avec Access.

--
Merci,
Guy du Lac

9 réponses

Avatar
Raymond [mvp]
Bonjour.

les modifications sont-elles automatiques ou manuelles ?
si c'est pour tout faire manuellement, autant mettre un copier/coller pour
l'opérateur.
si tu as 5000 enregistrements tu fais comment ?

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Bonjour,
|
| j'utilise access 2003
| Dans un formulaire, je dois modifier certains champs sur le premier record
| puis créer un réplicat de ce record et modifier un champ du nouveau
record.
| cette procedure doit se faire pour l'ensemble des records du formulaire en
| cliquant sur un bouton.
|
| Quelque chose qui ressemble à cela
|
| for compteur = 1 to eof()
| modifier certain champs sur le record
| dupliquer le record modifier
| modifier un champ sur le record dupliqué
| avancer au record suivant du formulaire
|
|
| next for
|
| ......... j'ai peu d'expérience en programmation avec Access.
|
| --
| Merci,
| Guy du Lac
Avatar
Guy du Lac
Bonjour Raymond,
tout doit se faire automatiquement en pesant sur un bouton
--
Merci,
Guy du Lac



Bonjour.

les modifications sont-elles automatiques ou manuelles ?
si c'est pour tout faire manuellement, autant mettre un copier/coller pour
l'opérateur.
si tu as 5000 enregistrements tu fais comment ?

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Bonjour,
|
| j'utilise access 2003
| Dans un formulaire, je dois modifier certains champs sur le premier record
| puis créer un réplicat de ce record et modifier un champ du nouveau
record.
| cette procedure doit se faire pour l'ensemble des records du formulaire en
| cliquant sur un bouton.
|
| Quelque chose qui ressemble à cela
|
| for compteur = 1 to eof()
| modifier certain champs sur le record
| dupliquer le record modifier
| modifier un champ sur le record dupliqué
| avancer au record suivant du formulaire
|
|
| next for
|
| ......... j'ai peu d'expérience en programmation avec Access.
|
| --
| Merci,
| Guy du Lac





Avatar
Raymond [mvp]
Dans la procédure il faudrait faire, à mon avis,
1-modification d'un enregistrement de la requête
2-cliquer sur le bouton dupliquer qui dupliquera et se positionnera sur
l'enregistrement créé.
3-modifier l'enregistrement créé.
4-revenir par un deuxième bouton sur l'enregistrement suivant l'ancien

dans les déclaratives en début de module:
Dim Ancien As Long

bouton duplication:
DoCmd.RunCommand acCmdSelectRecord
Ancien = Me.CurrentRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend

bouton retour
DoCmd.GoToRecord , , acGoTo, Ancien + 1


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Bonjour Raymond,
| tout doit se faire automatiquement en pesant sur un bouton
| --
| Merci,
| Guy du Lac
|
Avatar
Guy du Lac
merci pour les lignes de code, cela fonctionne très bien. Maintenant j'ai un
Runtime Error 3323 (La requete update ne renvoie aucun enregistrement)

ma ligne de code est: Me.RecordSource = req3. 'voir routine ci-bas

Est-il possible de laisser executer la requete en envoyant le message
d'erreur dans une variable et comment on fait cela? tout de suite apres cette
requete je call une routine SQL correspondant aux valeurs du dit formulaire.
ce sql update permet de remettre certain champs à blanc me permettant de
faire un nouveau traitement

Encore merci pour ton aide, c'est vraiment apprécié



For compteur = 1 To Me.x

Me.Text93 = Me.Text93 - Me.tampon ' reduire aux-montant du
montant recu

DoCmd.RunCommand acCmdSelectRecord
ancien = Me.CurrentRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend
DoCmd.GoToRecord , , acLast
[DESCRIPTION] = "encaisse"
Me.Text93 = 0
Me.auxilliaire = 0
Me.montant = Me.tampon
Me.laDATE = Now()
Me.compte_GL = 100
Me.ligne = " "
DoCmd.GoToRecord , , acGoTo, ancien + 1

Next compteur
req1 = "UPDATE [Grand-Livre] SET [Grand-Livre].auxilliaire = 0,
[Grand-Livre].tampon = 0 "
req2 = "WHERE ((([Grand-Livre].aux_montant)=0));"
req3 = req1 + req2
Me.RecordSource = req3
Call marequete

--
Merci,
Guy du Lac



Dans la procédure il faudrait faire, à mon avis,
1-modification d'un enregistrement de la requête
2-cliquer sur le bouton dupliquer qui dupliquera et se positionnera sur
l'enregistrement créé.
3-modifier l'enregistrement créé.
4-revenir par un deuxième bouton sur l'enregistrement suivant l'ancien

dans les déclaratives en début de module:
Dim Ancien As Long

bouton duplication:
DoCmd.RunCommand acCmdSelectRecord
Ancien = Me.CurrentRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend

bouton retour
DoCmd.GoToRecord , , acGoTo, Ancien + 1


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Bonjour Raymond,
| tout doit se faire automatiquement en pesant sur un bouton
| --
| Merci,
| Guy du Lac
|





Avatar
Raymond [mvp]
Bonjour.

Me.RecordSource = req3
tu ne peux pas avoir une requête action en source d'un formulaire (update)

mais seulement select.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| merci pour les lignes de code, cela fonctionne très bien. Maintenant j'ai
un
| Runtime Error 3323 (La requete update ne renvoie aucun enregistrement)
|
| ma ligne de code est: Me.RecordSource = req3. 'voir routine ci-bas
|
| Est-il possible de laisser executer la requete en envoyant le message
| d'erreur dans une variable et comment on fait cela? tout de suite apres
cette
| requete je call une routine SQL correspondant aux valeurs du dit
formulaire.
| ce sql update permet de remettre certain champs à blanc me permettant de
| faire un nouveau traitement
|
| Encore merci pour ton aide, c'est vraiment apprécié
|
|
|
| For compteur = 1 To Me.x
|
| Me.Text93 = Me.Text93 - Me.tampon ' reduire aux-montant du
| montant recu
|
| DoCmd.RunCommand acCmdSelectRecord
| ancien = Me.CurrentRecord
| DoCmd.RunCommand acCmdCopy
| DoCmd.RunCommand acCmdPasteAppend
| DoCmd.GoToRecord , , acLast
| [DESCRIPTION] = "encaisse"
| Me.Text93 = 0
| Me.auxilliaire = 0
| Me.montant = Me.tampon
| Me.laDATE = Now()
| Me.compte_GL = 100
| Me.ligne = " "
| DoCmd.GoToRecord , , acGoTo, ancien + 1
|
| Next compteur
| req1 = "UPDATE [Grand-Livre] SET [Grand-Livre].auxilliaire = 0,
| [Grand-Livre].tampon = 0 "
| req2 = "WHERE ((([Grand-Livre].aux_montant)=0));"
| req3 = req1 + req2
| Me.RecordSource = req3
| Call marequete
|
| --
| Merci,
| Guy du Lac

Avatar
Guy du Lac
Raymond,

J'ai pensé contourner le problème en ouvrant un autre formulaire sans
source. Dans la routine Open y passer ma requete. J'ai le meme Runtime Error.
Existe-t-il une façon d'executer une requete update par la programmation?
--
Merci,
Guy du Lac



Bonjour.

Me.RecordSource = req3
tu ne peux pas avoir une requête action en source d'un formulaire (update)

mais seulement select.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| merci pour les lignes de code, cela fonctionne très bien. Maintenant j'ai
un
| Runtime Error 3323 (La requete update ne renvoie aucun enregistrement)
|
| ma ligne de code est: Me.RecordSource = req3. 'voir routine ci-bas
|
| Est-il possible de laisser executer la requete en envoyant le message
| d'erreur dans une variable et comment on fait cela? tout de suite apres
cette
| requete je call une routine SQL correspondant aux valeurs du dit
formulaire.
| ce sql update permet de remettre certain champs à blanc me permettant de
| faire un nouveau traitement
|
| Encore merci pour ton aide, c'est vraiment apprécié
|
|
|
| For compteur = 1 To Me.x
|
| Me.Text93 = Me.Text93 - Me.tampon ' reduire aux-montant du
| montant recu
|
| DoCmd.RunCommand acCmdSelectRecord
| ancien = Me.CurrentRecord
| DoCmd.RunCommand acCmdCopy
| DoCmd.RunCommand acCmdPasteAppend
| DoCmd.GoToRecord , , acLast
| [DESCRIPTION] = "encaisse"
| Me.Text93 = 0
| Me.auxilliaire = 0
| Me.montant = Me.tampon
| Me.laDATE = Now()
| Me.compte_GL = 100
| Me.ligne = " "
| DoCmd.GoToRecord , , acGoTo, ancien + 1
|
| Next compteur
| req1 = "UPDATE [Grand-Livre] SET [Grand-Livre].auxilliaire = 0,
| [Grand-Livre].tampon = 0 "
| req2 = "WHERE ((([Grand-Livre].aux_montant)=0));"
| req3 = req1 + req2
| Me.RecordSource = req3
| Call marequete
|
| --
| Merci,
| Guy du Lac






Avatar
Raymond [mvp]
bien sur.

regarde les fonctions et commandes:

docmd.runsql

currentdb.execute


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Raymond,
|
| J'ai pensé contourner le problème en ouvrant un autre formulaire sans
| source. Dans la routine Open y passer ma requete. J'ai le meme Runtime
Error.
| Existe-t-il une façon d'executer une requete update par la programmation?
| --
| Merci,
| Guy du Lac
Avatar
Guy du Lac
Raymond,

j'ai utilisé le code que tu m'as donné dans un formulaire et tout fonctionne
très bien. Maintenant j'ai besoin de faire la meme procédure dans un autre
formulaire mais cela ne fonctionne pas et je ne trouve pas pourquoi.

à la ligne : DoCmd.GoToRecord , , acFirst 'repositionne pointeur
sur premier
j'ai un message me disant "you can't go to the specified record"
'creer enregistrement avec la somme du chèque
DoCmd.RunCommand acCmdSelectRecord
ancien = Me.CurrentRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend
DoCmd.GoToRecord , , acLast
Me.auxilliaire = Me.Combo110 'pret pour concilliation
Me.ligne = "B"
Me.Text93 = Me.reponse ' aux-montant = montant du cheque
Me.DESCRIPTION = "paiement avec cheque # " + Str(Me.Text38)
Me.no_facture = 0
Me.credit_debit = "CT"
Me.montant = Me.reponse 'montant du cheque
Me.laDATE = Now()
Me.compte_GL = Me.Combo110 'retrait de quelle banque


'calcul du nombre d'enregistrement ou il y a un montant appliqué

Me.x = DCount("[table_grand_livre]", "grand-livre",
"[Grand-Livre].auxilliaire = 510 And [Grand-Livre].CLIENT =
[Forms]![payable]![Client]")
DoCmd.GoToRecord , , acFirst 'repositionne pointeur sur premier
enregistrement
Dim compteur As Integer

For compteur = 1 To Me.x
Me.Text93 = Me.Text93 - Me.tampon ' reduire aux-montant du
montant recu
DoCmd.RunCommand acCmdSelectRecord
ancien = Me.CurrentRecord
DoCmd.RunCommand acCmdCopy
DoCmd.RunCommand acCmdPasteAppend
DoCmd.GoToRecord , , acLast
[DESCRIPTION] = "réduit compte payable"
Me.Text93 = 0
Me.auxilliaire = 0
Me.montant = Me.tampon
Me.laDATE = Now()
Me.compte_GL = 510
Me.ligne = " "
DoCmd.GoToRecord , , acGoTo, ancien + 1

Next compteur
End If


--
Merci,
Guy du Lac



bien sur.

regarde les fonctions et commandes:

docmd.runsql

currentdb.execute


--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Raymond,
|
| J'ai pensé contourner le problème en ouvrant un autre formulaire sans
| source. Dans la routine Open y passer ma requete. J'ai le meme Runtime
Error.
| Existe-t-il une façon d'executer une requete update par la programmation?
| --
| Merci,
| Guy du Lac





Avatar
Raymond [mvp]
Bonsoir.

Compte tenu que tu as utilisé l'objet Me après DoCmd, l'objet actif n'est
plus le même et il faut le redéfinir. utilise ceci:
DoCmd.GoToRecord acDataForm, Me.Name, acFirst
ça devrait rendre l'objet Me objet actif.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"Guy du Lac" a écrit dans le message de
news:
| Raymond,
|
| j'ai utilisé le code que tu m'as donné dans un formulaire et tout
fonctionne
| très bien. Maintenant j'ai besoin de faire la meme procédure dans un autre
| formulaire mais cela ne fonctionne pas et je ne trouve pas pourquoi.
|
| à la ligne : DoCmd.GoToRecord , , acFirst 'repositionne
pointeur
| sur premier
| j'ai un message me disant "you can't go to the specified record"
| 'creer enregistrement avec la somme du chèque
| DoCmd.RunCommand acCmdSelectRecord
| ancien = Me.CurrentRecord
| DoCmd.RunCommand acCmdCopy
| DoCmd.RunCommand acCmdPasteAppend
| DoCmd.GoToRecord , , acLast
| Me.auxilliaire = Me.Combo110 'pret pour concilliation
| Me.ligne = "B"
| Me.Text93 = Me.reponse ' aux-montant = montant du cheque
| Me.DESCRIPTION = "paiement avec cheque # " + Str(Me.Text38)
| Me.no_facture = 0
| Me.credit_debit = "CT"
| Me.montant = Me.reponse 'montant du cheque
| Me.laDATE = Now()
| Me.compte_GL = Me.Combo110 'retrait de quelle banque
|
|
| 'calcul du nombre d'enregistrement ou il y a un montant
appliqué
|
| Me.x = DCount("[table_grand_livre]", "grand-livre",
| "[Grand-Livre].auxilliaire = 510 And [Grand-Livre].CLIENT | [Forms]![payable]![Client]")
| DoCmd.GoToRecord , , acFirst 'repositionne pointeur sur premier
| enregistrement
| Dim compteur As Integer
|
| For compteur = 1 To Me.x
| Me.Text93 = Me.Text93 - Me.tampon ' reduire aux-montant du
| montant recu
| DoCmd.RunCommand acCmdSelectRecord
| ancien = Me.CurrentRecord
| DoCmd.RunCommand acCmdCopy
| DoCmd.RunCommand acCmdPasteAppend
| DoCmd.GoToRecord , , acLast
| [DESCRIPTION] = "réduit compte payable"
| Me.Text93 = 0
| Me.auxilliaire = 0
| Me.montant = Me.tampon
| Me.laDATE = Now()
| Me.compte_GL = 510
| Me.ligne = " "
| DoCmd.GoToRecord , , acGoTo, ancien + 1
|
| Next compteur
| End If
|
|
| --
| Merci,
| Guy du Lac
|