OVH Cloud OVH Cloud

transfert d'enregistrement

20 réponses
Avatar
Sky
Bonjour,

j'ai un formulaire "commande" sur lequel je voudrais affecter un contrôle
(style bouton) "validation" qui aurait pour but de pouvoir consulter les
informations saisies préalablement mais sans pouvoir les modifier.

J'ai donc créé un formulaire clône de "commande", où tous les champs sont
vérouillés, ainsi que 2 nouvelles tables (bon commande validé et détail
commande validé).
Le but étant de transférer l'enregistrement "bon commande", ainsi que le
"détail commande" dans les tables "bon commande validé" et "détail commande
validé".

Quelqu'un peut-il m'aiguiller sur la marche à suivre, ou existe t-il une
solution plus simple ?

10 réponses

1 2
Avatar
Raymond [mvp]
Bonjour.

la solution dépend de ton organisation. soit tu peux valider immédiatement,
soit il faut attendre que tous les éléments soient saisis. Normalement, lors
d'une nième saisie, compte tenu que tu dois contrôler à chaque événement
Form_AfterUpdate si la saisie est complète, tu dois pouvoir valider
directement sans passer par un form spécial de validation. ceci étant, la
procédure de validation est la même, tu dois faire 2 requêtes ajout pour
copier les enregistrements dans les deux tables "bon commande validé" /
"détail commande validé" et deux requêtes suppression pour supprimer les
enregistrements dans les deux tables "bon commande" / "détail commande".
Toutes ces requêtes seront construites avec une clause where sur le numéro
de commande égal au numéro de commande du formulaire.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417e1b68$0$3662$
Bonjour,

j'ai un formulaire "commande" sur lequel je voudrais affecter un contrôle
(style bouton) "validation" qui aurait pour but de pouvoir consulter les
informations saisies préalablement mais sans pouvoir les modifier.

J'ai donc créé un formulaire clône de "commande", où tous les champs sont
vérouillés, ainsi que 2 nouvelles tables (bon commande validé et détail
commande validé).
Le but étant de transférer l'enregistrement "bon commande", ainsi que le
"détail commande" dans les tables "bon commande validé" et "détail
commande validé".

Quelqu'un peut-il m'aiguiller sur la marche à suivre, ou existe t-il une
solution plus simple ?



Avatar
Sky
bonjour raymond,

merci de tes précisions,

j'ai suivi ta logique et j'ai donc créé 2 requêtes ajouts et 1 requête
suppression (l'autre à priori n'étant pas obligatoire, car lorsque je
supprime les enregistrements commande, il supprime également les
enregistrements détail commande).
Voulant donc automatiser cette validation, j'ai tapé le code suivant mais je
n'arrive pas à imputer la constante me.numbc dans les requêtes.

Dim stDocName2 As String
Dim choixnumbc As String

stDocName2 = "req ajout commande validée"
DoCmd.OpenQuery stDocName2, acViewDesign, acEdit
choixnumbc = "SELECT * FROM req ajout commande validée"
With choixnumbc
numbc = Me.numbc
End With

Dim stDocName3 As String
stDocName3 = "req ajout détail commande validée"
DoCmd.OpenQuery stDocName3, acNormal, acEdit

peux tu m'aiguiller ? d'avance merci

"Raymond [mvp]" a écrit dans le message de
news:
Bonjour.

la solution dépend de ton organisation. soit tu peux valider
immédiatement, soit il faut attendre que tous les éléments soient saisis.
Normalement, lors d'une nième saisie, compte tenu que tu dois contrôler à
chaque événement Form_AfterUpdate si la saisie est complète, tu dois
pouvoir valider directement sans passer par un form spécial de validation.
ceci étant, la procédure de validation est la même, tu dois faire 2
requêtes ajout pour copier les enregistrements dans les deux tables "bon
commande validé" / "détail commande validé" et deux requêtes suppression
pour supprimer les enregistrements dans les deux tables "bon commande" /
"détail commande". Toutes ces requêtes seront construites avec une clause
where sur le numéro de commande égal au numéro de commande du formulaire.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417e1b68$0$3662$
Bonjour,

j'ai un formulaire "commande" sur lequel je voudrais affecter un contrôle
(style bouton) "validation" qui aurait pour but de pouvoir consulter les
informations saisies préalablement mais sans pouvoir les modifier.

J'ai donc créé un formulaire clône de "commande", où tous les champs sont
vérouillés, ainsi que 2 nouvelles tables (bon commande validé et détail
commande validé).
Le but étant de transférer l'enregistrement "bon commande", ainsi que le
"détail commande" dans les tables "bon commande validé" et "détail
commande validé".

Quelqu'un peut-il m'aiguiller sur la marche à suivre, ou existe t-il une
solution plus simple ?







Avatar
Raymond [mvp]
Vu qu'on ne voit pas ta requête c'est pas facile.

pour la table commande, exemple:
Dim Sql As String
Sql = "INSERT INTO [commande validée] ( No_Commande, Région, Téléphone,
Madate ) SELECT commande.No_Commande, commande.Région, commande.Téléphone,
commande.Madate FROM commande WHERE commande.No_Commande = '" &
Me.No_Commande & "'"""
CurrentDb.execute Sql

tu fais pareil pour le détail.
remplace et rajoute tes champs réels.

si tu n'as pas de champ autonum, tu peux procéder avec *
Sql = "INSERT INTO [commande validée] SELECT commande.* FROM commande WHERE
commande.No_Commande = '" & Me.No_Commande & "'"""

si No_Commande est numérique tu indiques:
WHERE commande.No_Commande = " & Me.No_Commande

pour la suppression c'est plus facile, je pense que tu sais faire.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417e5c4c$0$3691$
bonjour raymond,

merci de tes précisions,

j'ai suivi ta logique et j'ai donc créé 2 requêtes ajouts et 1 requête
suppression (l'autre à priori n'étant pas obligatoire, car lorsque je
supprime les enregistrements commande, il supprime également les
enregistrements détail commande).
Voulant donc automatiser cette validation, j'ai tapé le code suivant mais
je n'arrive pas à imputer la constante me.numbc dans les requêtes.

Dim stDocName2 As String
Dim choixnumbc As String

stDocName2 = "req ajout commande validée"
DoCmd.OpenQuery stDocName2, acViewDesign, acEdit
choixnumbc = "SELECT * FROM req ajout commande validée"
With choixnumbc
numbc = Me.numbc
End With

Dim stDocName3 As String
stDocName3 = "req ajout détail commande validée"
DoCmd.OpenQuery stDocName3, acNormal, acEdit

peux tu m'aiguiller ? d'avance merci


Avatar
Sky
bonjour raymond,

merci pour ton aide, j'ai toutefois un pb de syntaxe que je n'arrive pas à
solutionner malgré plusieurs essais infructueux
voici mon code
Dim sql As String
sql = "INSERT INTO [req ajout commande validée] SELECT commande.datecde,
commandetransport,commande.délai_livraison,commande.livraisoncd,
commande.fournisseurcde.commande.chantiercde,commande.collaborateurcde,
commande.numbc, commande.pourescpte,commande.escpte FROM commande WHERE
commande.numbc='" & Me.numbc & "'"""
CurrentDb.Execute sql

la formulation est bonne mais il me dit "erreurde syntaxe dans l'expression
'commande.numbc='2004001""
J'en déduit donc qu'il s'agit d'une astuce sur les "" mais je n'arrive pas
trouver la solution (numbc étant un champ numauto)

encore merci


"Raymond [mvp]" a écrit dans le message de
news:
Vu qu'on ne voit pas ta requête c'est pas facile.

pour la table commande, exemple:
Dim Sql As String
Sql = "INSERT INTO [commande validée] ( No_Commande, Région, Téléphone,
Madate ) SELECT commande.No_Commande, commande.Région, commande.Téléphone,
commande.Madate FROM commande WHERE commande.No_Commande = '" &
Me.No_Commande & "'"""
CurrentDb.execute Sql

tu fais pareil pour le détail.
remplace et rajoute tes champs réels.

si tu n'as pas de champ autonum, tu peux procéder avec *
Sql = "INSERT INTO [commande validée] SELECT commande.* FROM commande
WHERE commande.No_Commande = '" & Me.No_Commande & "'"""

si No_Commande est numérique tu indiques:
WHERE commande.No_Commande = " & Me.No_Commande

pour la suppression c'est plus facile, je pense que tu sais faire.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417e5c4c$0$3691$
bonjour raymond,

merci de tes précisions,

j'ai suivi ta logique et j'ai donc créé 2 requêtes ajouts et 1 requête
suppression (l'autre à priori n'étant pas obligatoire, car lorsque je
supprime les enregistrements commande, il supprime également les
enregistrements détail commande).
Voulant donc automatiser cette validation, j'ai tapé le code suivant mais
je n'arrive pas à imputer la constante me.numbc dans les requêtes.

Dim stDocName2 As String
Dim choixnumbc As String

stDocName2 = "req ajout commande validée"
DoCmd.OpenQuery stDocName2, acViewDesign, acEdit
choixnumbc = "SELECT * FROM req ajout commande validée"
With choixnumbc
numbc = Me.numbc
End With

Dim stDocName3 As String
stDocName3 = "req ajout détail commande validée"
DoCmd.OpenQuery stDocName3, acNormal, acEdit

peux tu m'aiguiller ? d'avance merci






Avatar
Raymond [mvp]
Je t'avais marqué:
si No_Commande est numérique tu indiques:
WHERE commande.No_Commande = " & Me.No_Commande
donc:
... WHERE commande.numbc = " & Me.numbc


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417f6bb3$0$3228$
bonjour raymond,

merci pour ton aide, j'ai toutefois un pb de syntaxe que je n'arrive pas à
solutionner malgré plusieurs essais infructueux
voici mon code
Dim sql As String
sql = "INSERT INTO [req ajout commande validée] SELECT
commande.datecde,
commandetransport,commande.délai_livraison,commande.livraisoncd,
commande.fournisseurcde.commande.chantiercde,commande.collaborateurcde,
commande.numbc, commande.pourescpte,commande.escpte FROM commande WHERE
commande.numbc='" & Me.numbc & "'"""
CurrentDb.Execute sql

la formulation est bonne mais il me dit "erreurde syntaxe dans
l'expression 'commande.numbc='2004001""
J'en déduit donc qu'il s'agit d'une astuce sur les "" mais je n'arrive
pas trouver la solution (numbc étant un champ numauto)

encore merci



Avatar
Sky
re bonjour raymond,

désolé, pour le pb de compréhension.

j'ai toutefois un souci puisqu'il m'affiche "impossible d'insérer des
données d'une requête action"

voici mon code :

Dim sql1 As String
sql1 = "INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc=" & Me.numbc
CurrentDb.Execute sql1

Il m'execute la requete ajout via les objets mais l'automatisation ne
fonctionne pas

Qu'ais-je oublié ?



"Raymond [mvp]" a écrit dans le message de
news: %
Je t'avais marqué:
si No_Commande est numérique tu indiques:
WHERE commande.No_Commande = " & Me.No_Commande
donc:
... WHERE commande.numbc = " & Me.numbc


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417f6bb3$0$3228$
bonjour raymond,

merci pour ton aide, j'ai toutefois un pb de syntaxe que je n'arrive pas
à solutionner malgré plusieurs essais infructueux
voici mon code
Dim sql As String
sql = "INSERT INTO [req ajout commande validée] SELECT
commande.datecde,
commandetransport,commande.délai_livraison,commande.livraisoncd,
commande.fournisseurcde.commande.chantiercde,commande.collaborateurcde,
commande.numbc, commande.pourescpte,commande.escpte FROM commande WHERE
commande.numbc='" & Me.numbc & "'"""
CurrentDb.Execute sql

la formulation est bonne mais il me dit "erreurde syntaxe dans
l'expression 'commande.numbc='2004001""
J'en déduit donc qu'il s'agit d'une astuce sur les "" mais je n'arrive
pas trouver la solution (numbc étant un champ numauto)

encore merci







Avatar
Raymond [mvp]
Crée une requête avec ton texte sql et exécute la en direct:
INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc = ??

Remplacer ?? par la valeur de Me.numbc
ça va te dire si la syntaxe est bonne et si oui vérifies la bonne exécution
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417f9529$0$3660$
re bonjour raymond,

désolé, pour le pb de compréhension.

j'ai toutefois un souci puisqu'il m'affiche "impossible d'insérer des
données d'une requête action"

voici mon code :

Dim sql1 As String
sql1 = "INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc=" & Me.numbc
CurrentDb.Execute sql1

Il m'execute la requete ajout via les objets mais l'automatisation ne
fonctionne pas

Qu'ais-je oublié ?


Avatar
Sky
désolé raymond, mais je sais pas comment procéder :(

"Raymond [mvp]" a écrit dans le message de
news:
Crée une requête avec ton texte sql et exécute la en direct:
INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc = ??

Remplacer ?? par la valeur de Me.numbc
ça va te dire si la syntaxe est bonne et si oui vérifies la bonne
exécution
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417f9529$0$3660$
re bonjour raymond,

désolé, pour le pb de compréhension.

j'ai toutefois un souci puisqu'il m'affiche "impossible d'insérer des
données d'une requête action"

voici mon code :

Dim sql1 As String
sql1 = "INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc=" & Me.numbc
CurrentDb.Execute sql1

Il m'execute la requete ajout via les objets mais l'automatisation ne
fonctionne pas

Qu'ais-je oublié ?






Avatar
Raymond [mvp]
Passe moi ta base avec le minimum d'objets et dis moi les noms d'objets à
voir. enleve XYZ. dans mon adresse.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417fa4e0$0$3629$
désolé raymond, mais je sais pas comment procéder :(



Avatar
Sky
désolé, j'ai mis le temps mais j'ai trouvé le mode sql
il m'indique la même chose "impossible des données dans une requête action"

"Sky" a écrit dans le message de news:
417fa4e0$0$3629$
désolé raymond, mais je sais pas comment procéder :(

"Raymond [mvp]" a écrit dans le message de
news:
Crée une requête avec ton texte sql et exécute la en direct:
INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc = ??

Remplacer ?? par la valeur de Me.numbc
ça va te dire si la syntaxe est bonne et si oui vérifies la bonne
exécution
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Sky" a écrit dans le message de news:
417f9529$0$3660$
re bonjour raymond,

désolé, pour le pb de compréhension.

j'ai toutefois un souci puisqu'il m'affiche "impossible d'insérer des
données d'une requête action"

voici mon code :

Dim sql1 As String
sql1 = "INSERT INTO [req ajout commande validée] SELECT
commande.datecde, commande.transport, commande.délailivraison,
commande.livraisoncde, commande.fournisseurcde, commande.chantiercde,
commande.collaborateurcde, commande.numbc, commande.pourcescpte,
commande.escpte FROM commande WHERE commande.numbc=" & Me.numbc
CurrentDb.Execute sql1

Il m'execute la requete ajout via les objets mais l'automatisation ne
fonctionne pas

Qu'ais-je oublié ?










1 2