Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite, je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite, je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite, je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a ét é simplifié
car la mise à jour porte sur une douzaine de champ. mais en fait, il s'agit
d'une série d'options que je choisi à l'aide d'un menu contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVe r70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'un e
| constante par une macro apellée par le menu contextuel et RéfOpé ration
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de sui te, je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur d epuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregist rement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires .
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laque lle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeu r ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a ét é simplifié
car la mise à jour porte sur une douzaine de champ. mais en fait, il s'agit
d'une série d'options que je choisi à l'aide d'un menu contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVe r70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" <home@sweet_home.be> a écrit dans le message de news:
evKlki%23gIHA.1168@TK2MSFTNGP02.phx.gbl...
Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'un e
| constante par une macro apellée par le menu contextuel et RéfOpé ration
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de sui te, je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur d epuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregist rement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires .
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laque lle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeu r ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a ét é simplifié
car la mise à jour porte sur une douzaine de champ. mais en fait, il s'agit
d'une série d'options que je choisi à l'aide d'un menu contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVe r70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'un e
| constante par une macro apellée par le menu contextuel et RéfOpé ration
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de sui te, je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur d epuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregist rement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires .
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laque lle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeu r ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a été
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a été
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" <home@sweet_home.be> a écrit dans le message de news:
evKlki%23gIHA.1168@TK2MSFTNGP02.phx.gbl...
Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a été
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Voilà qui est fait. Merci Jérome. Je n'y avait pas pensé.
Mais pour enregistrer je fait comment ?
??? "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70"
La suite du traitement dépend plutot du contenu de l'enregistrement p as de
l'enrgistrement mais pas du formulaire.
"jerome crevecoeur" o.fr>
a écrit dans le message de news: % gbl...
Je pense que tu essayes de mettre à jour des champs qui sont dans ton
formulaire principal.
L'enregistrement est donc déjà ouvert.
Le mieux serait de mettre à jour les zones de textes elle-meme du
formulaire principal du style:
Forms("FPrincipal")("OptionG01")="G01"
CordialementBonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a é té
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuV er70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier u n
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G0 1 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'u ne
| constante par une macro apellée par le menu contextuel et RéfOp ération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de su ite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dan s la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregis trement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaire s.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que j e
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laqu elle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une vale ur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition .
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Voilà qui est fait. Merci Jérome. Je n'y avait pas pensé.
Mais pour enregistrer je fait comment ?
??? "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70"
La suite du traitement dépend plutot du contenu de l'enregistrement p as de
l'enrgistrement mais pas du formulaire.
"jerome crevecoeur" <spamailleurs.crevecoeur.spamailleurs.jerome@wanado o.fr>
a écrit dans le message de news: %23QBTr2EhIHA.5296@TK2MSFTNGP05.phx. gbl...
Je pense que tu essayes de mettre à jour des champs qui sont dans ton
formulaire principal.
L'enregistrement est donc déjà ouvert.
Le mieux serait de mettre à jour les zones de textes elle-meme du
formulaire principal du style:
Forms("FPrincipal")("OptionG01")="G01"
Cordialement
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a é té
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuV er70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" <home@sweet_home.be> a écrit dans le message de news:
evKlki%23gIHA.1168@TK2MSFTNGP02.phx.gbl...
Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier u n
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G0 1 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'u ne
| constante par une macro apellée par le menu contextuel et RéfOp ération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de su ite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dan s la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregis trement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaire s.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que j e
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laqu elle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une vale ur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition .
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Voilà qui est fait. Merci Jérome. Je n'y avait pas pensé.
Mais pour enregistrer je fait comment ?
??? "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70"
La suite du traitement dépend plutot du contenu de l'enregistrement p as de
l'enrgistrement mais pas du formulaire.
"jerome crevecoeur" o.fr>
a écrit dans le message de news: % gbl...
Je pense que tu essayes de mettre à jour des champs qui sont dans ton
formulaire principal.
L'enregistrement est donc déjà ouvert.
Le mieux serait de mettre à jour les zones de textes elle-meme du
formulaire principal du style:
Forms("FPrincipal")("OptionG01")="G01"
CordialementBonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a é té
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuV er70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier u n
| enregistrement, j'appelle une fonction d'un module général, qui utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G0 1 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'u ne
| constante par une macro apellée par le menu contextuel et RéfOp ération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de su ite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dan s la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregis trement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaire s.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que j e
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laqu elle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une vale ur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition .
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Voilà qui est fait. Merci Jérome. Je n'y avait pas pensé.
Mais pour enregistrer je fait comment ?
??? "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70"
La suite du traitement dépend plutot du contenu de l'enregistrement pas de
l'enrgistrement mais pas du formulaire.
"jerome crevecoeur"
a écrit dans le
message de news: %
Je pense que tu essayes de mettre à jour des champs qui sont dans ton
formulaire principal.
L'enregistrement est donc déjà ouvert.
Le mieux serait de mettre à jour les zones de textes elle-meme du
formulaire principal du style:
Forms("FPrincipal")("OptionG01")="G01"
CordialementBonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a été
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui
utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Voilà qui est fait. Merci Jérome. Je n'y avait pas pensé.
Mais pour enregistrer je fait comment ?
??? "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70"
La suite du traitement dépend plutot du contenu de l'enregistrement pas de
l'enrgistrement mais pas du formulaire.
"jerome crevecoeur"
<spamailleurs.crevecoeur.spamailleurs.jerome@wanadoo.fr> a écrit dans le
message de news: %23QBTr2EhIHA.5296@TK2MSFTNGP05.phx.gbl...
Je pense que tu essayes de mettre à jour des champs qui sont dans ton
formulaire principal.
L'enregistrement est donc déjà ouvert.
Le mieux serait de mettre à jour les zones de textes elle-meme du
formulaire principal du style:
Forms("FPrincipal")("OptionG01")="G01"
Cordialement
Bonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a été
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" <home@sweet_home.be> a écrit dans le message de news:
evKlki%23gIHA.1168@TK2MSFTNGP02.phx.gbl...
Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui
utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Voilà qui est fait. Merci Jérome. Je n'y avait pas pensé.
Mais pour enregistrer je fait comment ?
??? "DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70"
La suite du traitement dépend plutot du contenu de l'enregistrement pas de
l'enrgistrement mais pas du formulaire.
"jerome crevecoeur"
a écrit dans le
message de news: %
Je pense que tu essayes de mettre à jour des champs qui sont dans ton
formulaire principal.
L'enregistrement est donc déjà ouvert.
Le mieux serait de mettre à jour les zones de textes elle-meme du
formulaire principal du style:
Forms("FPrincipal")("OptionG01")="G01"
CordialementBonjour "3stone"
Je veux bien simplifier, mais c'est le problème posé qui lui a été
simplifié car la mise à jour porte sur une douzaine de champ. mais en
fait, il s'agit d'une série d'options que je choisi à l'aide d'un menu
contextuel.
Pour l'esthétique je verais plus tard.
Mon problème reste donc entier :
Comment s'assurer que le formulaire n'est pas en mode édition ?
A partir du formulaire j'ai souvent contourné le problème par :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Mais, çà, c'est quand je suis dans le formulaire.
J'ai l'impression parfois que c'est trop compliqué !
Merci de regarder cela de plus près.
"3stone" a écrit dans le message de news:
evKlki%Salut,
"William Kameron"
| Dans un sous-form, à l'aide d'un menu contextuel, pour modifier un
| enregistrement, j'appelle une fonction d'un module général, qui
utilise
| l'instruction : "DoCmd.RunSQL"
|
| Public Function Formule(G01 as Single) as Boolean
| Dim RéfOpération as long, StrSQL as String
|
| If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
| And acObjStateOpen) <> 0 Then
| Set frm = Forms("FPrincipal")
| RéfOpération = " &
frm.[FSecondaire].Form![FOpérations]!RéfOpération
|
| DoCmd.SetWarnings False
| StrSQL = "UPDATE [Opérations] set [OptionG01] = " & G01 & "_
| WHERE RéfOpération = " & RéfOpération
| DoCmd.RunSQL StrSQL, False
| DoCmd.SetWarnings true
|
| End If
|
| End function
|
| Ici, G01 est fournie en entrée dans la fonction sous la forme d'une
| constante par une macro apellée par le menu contextuel et RéfOpération
pointe
| sur l'enregistrement courant du sous-form "FOpérations"
|
| Lorsque j'exécute la commande deux, trois et plusieurs fois de suite,
je
| recois toujours le message :
|
| CONFLIT D'ECRITURE
| Cet enregistrement a été modifié par un autre utilisateur depuis
| que vous avez commencé à le modifier....
|
|
| POURTANT JE SUIS LE SEUL UTILISATEUR DE LA BASE POUR L'INSTANT ! !
Pourquoi tu cries ? ;-)
En fait, cela vient de ton code...
Si un enregistrement est en édition et que par ailleurs tu tape dans la
table
sur éventuellement le même enregistrement via ton DoCmd.RunSQL
tu as bien un "autre" utilisateur qui tente d'accéder à l'enregistrement
vérrouillé - car en modif par toi...
| Il arrive même que le message apparaisse dans d'autres formulaires.
| 1° Le problème est-il lié à l'instruction "DoCmd.RunSQL" ?
| 2° Comment inhiber ce message en assurant les modifications que je
voudrais
| porter à ma base ?
|
| Je veux bien utiliser une autre méthode mais, je ne vois pas laquelle
| d'autant plus que la fonction se trouve dans un module général.
Puisque tu est dans un sous-formulaire, pourquoi ce détour par
une fonction (pas très élégante ;-) pour juste ajouter une valeur ?
Ou alors, assure toi que ton sous-formulaire ne soit pas en édition.
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant de savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est biz arre cette
fois mais j'ai l'impression d'être incompris.
Le tuyau que ma filé Jerome est très bon.
Seulement juste après il me faut enregistrer les modifications porté es par
les différentes instructions de mise à jour d'une table nommée "O pération".
Public Function ChoisirFormule(G01,G02,G03,... G12 as Single) as Boolea n
'****** ChoisirFormule est une fonction dans un module global qui renvo ie la
valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possible
Dim RéfOpération as long, StrSQL as String, Résultat as Boolean
Etape1:
'****** Mise à jours des variables
frm.[FSecondaire].Form![FOpérations]!OptionG01 = G01
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G02
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G03
...
...
...
frm.[FSecondaire].Form![FOpérations]!OptionG12 = G12
Etape2:
'****** Ici, il me faut enregistrer tout ce qui précède car le calcul
qui suit,
'****** prélèvera les informations directement de la table Opé rations
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Etape3:
'****** Appel d'une fonction qui calcule de une valeur en fonction des
options
'****** le résultat est stocké dans la table Opérations
Résultat = CalculeValeurs (
frm.[FSecondaire].Form![FOpérations]!RéfOpération)
Etape4:
'***** Afichage du résultat
frm.[FSecondaire].Form![FOpérations].Form.Requery
Etape5:
ChoisirFormule = Résultat
End Function
Pourquoi je passe par une fonction ?
1° C'est parceque les options sont choisies à l'aide d'un menu cont extuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'aut res cas.
3° Cette fonction CalculeValeurs est appelée dans tous les modules de calcul
de l'application
Sans la nécessité de calculer les valeurs le problème serait clos depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne puis savoir
si les combinaison son possible entre les différentes options G01, G0 2, G03,
... G12.
Quel est mon problème ?
A l'étape 2, comment enregistrer les modifications opérées lors d u choix des
options ?
C'est-à dire remplacer les points d'interrogations par l'instruction idoine.
Voilà !C'est bête je me dis !
Je pense m'être exprimé
"3stone" a écrit dans le message de news:Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant de savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est biz arre cette
fois mais j'ai l'impression d'être incompris.
Le tuyau que ma filé Jerome est très bon.
Seulement juste après il me faut enregistrer les modifications porté es par
les différentes instructions de mise à jour d'une table nommée "O pération".
Public Function ChoisirFormule(G01,G02,G03,... G12 as Single) as Boolea n
'****** ChoisirFormule est une fonction dans un module global qui renvo ie la
valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possible
Dim RéfOpération as long, StrSQL as String, Résultat as Boolean
Etape1:
'****** Mise à jours des variables
frm.[FSecondaire].Form![FOpérations]!OptionG01 = G01
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G02
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G03
...
...
...
frm.[FSecondaire].Form![FOpérations]!OptionG12 = G12
Etape2:
'****** Ici, il me faut enregistrer tout ce qui précède car le calcul
qui suit,
'****** prélèvera les informations directement de la table Opé rations
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Etape3:
'****** Appel d'une fonction qui calcule de une valeur en fonction des
options
'****** le résultat est stocké dans la table Opérations
Résultat = CalculeValeurs (
frm.[FSecondaire].Form![FOpérations]!RéfOpération)
Etape4:
'***** Afichage du résultat
frm.[FSecondaire].Form![FOpérations].Form.Requery
Etape5:
ChoisirFormule = Résultat
End Function
Pourquoi je passe par une fonction ?
1° C'est parceque les options sont choisies à l'aide d'un menu cont extuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'aut res cas.
3° Cette fonction CalculeValeurs est appelée dans tous les modules de calcul
de l'application
Sans la nécessité de calculer les valeurs le problème serait clos depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne puis savoir
si les combinaison son possible entre les différentes options G01, G0 2, G03,
... G12.
Quel est mon problème ?
A l'étape 2, comment enregistrer les modifications opérées lors d u choix des
options ?
C'est-à dire remplacer les points d'interrogations par l'instruction idoine.
Voilà !C'est bête je me dis !
Je pense m'être exprimé
"3stone" <home@sweet_home.be> a écrit dans le message de news:
uV33kWHhIHA.4164@TK2MSFTNGP05.phx.gbl...
Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant de savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est biz arre cette
fois mais j'ai l'impression d'être incompris.
Le tuyau que ma filé Jerome est très bon.
Seulement juste après il me faut enregistrer les modifications porté es par
les différentes instructions de mise à jour d'une table nommée "O pération".
Public Function ChoisirFormule(G01,G02,G03,... G12 as Single) as Boolea n
'****** ChoisirFormule est une fonction dans un module global qui renvo ie la
valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possible
Dim RéfOpération as long, StrSQL as String, Résultat as Boolean
Etape1:
'****** Mise à jours des variables
frm.[FSecondaire].Form![FOpérations]!OptionG01 = G01
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G02
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G03
...
...
...
frm.[FSecondaire].Form![FOpérations]!OptionG12 = G12
Etape2:
'****** Ici, il me faut enregistrer tout ce qui précède car le calcul
qui suit,
'****** prélèvera les informations directement de la table Opé rations
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Etape3:
'****** Appel d'une fonction qui calcule de une valeur en fonction des
options
'****** le résultat est stocké dans la table Opérations
Résultat = CalculeValeurs (
frm.[FSecondaire].Form![FOpérations]!RéfOpération)
Etape4:
'***** Afichage du résultat
frm.[FSecondaire].Form![FOpérations].Form.Requery
Etape5:
ChoisirFormule = Résultat
End Function
Pourquoi je passe par une fonction ?
1° C'est parceque les options sont choisies à l'aide d'un menu cont extuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'aut res cas.
3° Cette fonction CalculeValeurs est appelée dans tous les modules de calcul
de l'application
Sans la nécessité de calculer les valeurs le problème serait clos depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne puis savoir
si les combinaison son possible entre les différentes options G01, G0 2, G03,
... G12.
Quel est mon problème ?
A l'étape 2, comment enregistrer les modifications opérées lors d u choix des
options ?
C'est-à dire remplacer les points d'interrogations par l'instruction idoine.
Voilà !C'est bête je me dis !
Je pense m'être exprimé
"3stone" a écrit dans le message de news:Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant de savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est bizarre
cette fois mais j'ai l'impression d'être incompris.
Le tuyau que ma filé Jerome est très bon.
Seulement juste après il me faut enregistrer les modifications portées par
les différentes instructions de mise à jour d'une table nommée
"Opération".
Public Function ChoisirFormule(G01,G02,G03,... G12 as Single) as Boolean
'****** ChoisirFormule est une fonction dans un module global qui renvoie
la valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possible
Dim RéfOpération as long, StrSQL as String, Résultat as Boolean
Etape1:
'****** Mise à jours des variables
frm.[FSecondaire].Form![FOpérations]!OptionG01 = G01
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G02
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G03
...
...
...
frm.[FSecondaire].Form![FOpérations]!OptionG12 = G12
Etape2:
'****** Ici, il me faut enregistrer tout ce qui précède car le calcul
qui suit,
'****** prélèvera les informations directement de la table Opérations
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Etape3:
'****** Appel d'une fonction qui calcule de une valeur en fonction des
options
'****** le résultat est stocké dans la table Opérations
Résultat = CalculeValeurs (
frm.[FSecondaire].Form![FOpérations]!RéfOpération)
Etape4:
'***** Afichage du résultat
frm.[FSecondaire].Form![FOpérations].Form.Requery
Etape5:
ChoisirFormule = Résultat
End Function
Pourquoi je passe par une fonction ?
1° C'est parceque les options sont choisies à l'aide d'un menu contextuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'autres cas.
3° Cette fonction CalculeValeurs est appelée dans tous les modules de
calcul de l'application
Sans la nécessité de calculer les valeurs le problème serait clos depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne puis savoir
si les combinaison son possible entre les différentes options G01, G02,
G03, ... G12.
Quel est mon problème ?
A l'étape 2, comment enregistrer les modifications opérées lors du choix
des options ?
C'est-à dire remplacer les points d'interrogations par l'instruction
idoine.
Voilà !C'est bête je me dis !
Je pense m'être exprimé
"3stone" a écrit dans le message de news:Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant de savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est bizarre
cette fois mais j'ai l'impression d'être incompris.
Le tuyau que ma filé Jerome est très bon.
Seulement juste après il me faut enregistrer les modifications portées par
les différentes instructions de mise à jour d'une table nommée
"Opération".
Public Function ChoisirFormule(G01,G02,G03,... G12 as Single) as Boolean
'****** ChoisirFormule est une fonction dans un module global qui renvoie
la valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possible
Dim RéfOpération as long, StrSQL as String, Résultat as Boolean
Etape1:
'****** Mise à jours des variables
frm.[FSecondaire].Form![FOpérations]!OptionG01 = G01
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G02
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G03
...
...
...
frm.[FSecondaire].Form![FOpérations]!OptionG12 = G12
Etape2:
'****** Ici, il me faut enregistrer tout ce qui précède car le calcul
qui suit,
'****** prélèvera les informations directement de la table Opérations
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Etape3:
'****** Appel d'une fonction qui calcule de une valeur en fonction des
options
'****** le résultat est stocké dans la table Opérations
Résultat = CalculeValeurs (
frm.[FSecondaire].Form![FOpérations]!RéfOpération)
Etape4:
'***** Afichage du résultat
frm.[FSecondaire].Form![FOpérations].Form.Requery
Etape5:
ChoisirFormule = Résultat
End Function
Pourquoi je passe par une fonction ?
1° C'est parceque les options sont choisies à l'aide d'un menu contextuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'autres cas.
3° Cette fonction CalculeValeurs est appelée dans tous les modules de
calcul de l'application
Sans la nécessité de calculer les valeurs le problème serait clos depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne puis savoir
si les combinaison son possible entre les différentes options G01, G02,
G03, ... G12.
Quel est mon problème ?
A l'étape 2, comment enregistrer les modifications opérées lors du choix
des options ?
C'est-à dire remplacer les points d'interrogations par l'instruction
idoine.
Voilà !C'est bête je me dis !
Je pense m'être exprimé
"3stone" <home@sweet_home.be> a écrit dans le message de news:
uV33kWHhIHA.4164@TK2MSFTNGP05.phx.gbl...
Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant de savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est bizarre
cette fois mais j'ai l'impression d'être incompris.
Le tuyau que ma filé Jerome est très bon.
Seulement juste après il me faut enregistrer les modifications portées par
les différentes instructions de mise à jour d'une table nommée
"Opération".
Public Function ChoisirFormule(G01,G02,G03,... G12 as Single) as Boolean
'****** ChoisirFormule est une fonction dans un module global qui renvoie
la valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possible
Dim RéfOpération as long, StrSQL as String, Résultat as Boolean
Etape1:
'****** Mise à jours des variables
frm.[FSecondaire].Form![FOpérations]!OptionG01 = G01
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G02
frm.[FSecondaire].Form![FOpérations]!OptionG03 = G03
...
...
...
frm.[FSecondaire].Form![FOpérations]!OptionG12 = G12
Etape2:
'****** Ici, il me faut enregistrer tout ce qui précède car le calcul
qui suit,
'****** prélèvera les informations directement de la table Opérations
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Etape3:
'****** Appel d'une fonction qui calcule de une valeur en fonction des
options
'****** le résultat est stocké dans la table Opérations
Résultat = CalculeValeurs (
frm.[FSecondaire].Form![FOpérations]!RéfOpération)
Etape4:
'***** Afichage du résultat
frm.[FSecondaire].Form![FOpérations].Form.Requery
Etape5:
ChoisirFormule = Résultat
End Function
Pourquoi je passe par une fonction ?
1° C'est parceque les options sont choisies à l'aide d'un menu contextuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'autres cas.
3° Cette fonction CalculeValeurs est appelée dans tous les modules de
calcul de l'application
Sans la nécessité de calculer les valeurs le problème serait clos depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne puis savoir
si les combinaison son possible entre les différentes options G01, G02,
G03, ... G12.
Quel est mon problème ?
A l'étape 2, comment enregistrer les modifications opérées lors du choix
des options ?
C'est-à dire remplacer les points d'interrogations par l'instruction
idoine.
Voilà !C'est bête je me dis !
Je pense m'être exprimé
"3stone" a écrit dans le message de news:Salut,
"William Kameron"
| Vous avez dit :
|
| docmd.select objet ..... pour enregistrer ???
|
Pour enregistrer le formulaire en cours, un simple
Me.Dirty = False
--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)