OVH Cloud OVH Cloud

Conflit d'écriture / Access 2003

16 réponses
Avatar
William Kameron
Bonjour A tous !

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 ! !

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.

Merci de me consacrer votre temps si précieux !

6 réponses

1 2
Avatar
William Kameron
Bonjour Jérome
Problème de syntaxe

"Entete" veut bien dire "[FSecondaire].Form![FOpérations]" ?

Car j'ai en début de code :

If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
And acObjStateOpen) <> 0 Then
Set frm = Forms("FPrincipal")

En bouquinant depuis hier sur cette syntaxe je ne sais pas si le
"DoCmd.SelectObject" porte sur les sous formulaire.
Si oui, alors je me perd dans la syntaxe.



"jerome crevecoeur"
a écrit dans le message de news:
Etape 4:

Sur l'événement aprés MAJ du champ

(en adaptant aux champs et formulaires)
Forms("Entete")("G01") = "G01"
DoCmd.SelectObject acForm, "Entete"
DoCmd.RunCommand acCmdSaveRecord




ça devrait se rapprocher de la vérité non?



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)







Avatar
jerome crevecoeur
Résumons votre probleme si j'ai bien compris

1) Vous avez un formulaire et un sous formulaire
2) quand vous modifiez une donnée dans votre sous formulaire , vous
voulez mettre à jour votre formulaire principal non et qu'il enregistre
les modifications ou votre sous formulaire?

si c'est votre sous formulaire il faut faire
a)
frm.[FSecondaire].Form![FOpérations]!OptionG01.Setfocus
DoCmd.RunCommand acCmdSaveRecord

si c'est votre sous formulaire principal ,il faut faire
b)
DoCmd.SelectObject acForm, "Fsecondaire"
DoCmd.RunCommand acCmdSaveRecord


Cordialement


Bonjour Jérome

Problème de syntaxe

"Entete" veut bien dire "[FSecondaire].Form![FOpérations]" ?



"jerome crevecoeur" o.fr>
a écrit dans le message de news: l...
Etape 4:

Sur l'événement aprés MAJ du champ

(en adaptant aux champs et formulaires)
Forms("Entete")("G01") = "G01"
DoCmd.SelectObject acForm, "Entete"
DoCmd.RunCommand acCmdSaveRecord




ça devrait se rapprocher de la vérité non?



Bonjour à tous. J'apprécie vos efforts. C'est toujours rassurant d e savoir
que les gens prennents nos problèmes très à coeur. Mais.c'est bi zarre
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 Boole an
'****** ChoisirFormule est une fonction dans un module global qui renv oie
la valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possibl e
Dim RéfOpération as long, StrSQL as String, Résultat as Boolea n

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 con textuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'au tres 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 clo s depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne pui s savoir
si les combinaison son possible entre les différentes options G01, G 02,
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)










Avatar
William Kameron
Pour ne pas mourrir Idiot !!!!!!!!
Il me semble que cela marche avec :

DoCmd.SelectObject acForm, "FPrincipal"

Jerome peux-tu m'expliquer cette magie ?
Si je comprends bien :
"DoCmd.RunCommand acCmdSaveRecord" agit bel et bien
1° sur le formulaire principal
2° sur tous les sous-fomulaires inclus
et enregistre toutes les modifications ????

Comment et en quelle langue te dire merci ?


"William Kameron" a écrit dans le message de news:
u%
Bonjour Jérome
Problème de syntaxe

"Entete" veut bien dire "[FSecondaire].Form![FOpérations]" ?

Car j'ai en début de code :

If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
And acObjStateOpen) <> 0 Then
Set frm = Forms("FPrincipal")

En bouquinant depuis hier sur cette syntaxe je ne sais pas si le
"DoCmd.SelectObject" porte sur les sous formulaire.
Si oui, alors je me perd dans la syntaxe.



"jerome crevecoeur"
a écrit dans le
message de news:
Etape 4:

Sur l'événement aprés MAJ du champ

(en adaptant aux champs et formulaires)
Forms("Entete")("G01") = "G01"
DoCmd.SelectObject acForm, "Entete"
DoCmd.RunCommand acCmdSaveRecord




ça devrait se rapprocher de la vérité non?



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)











Avatar
William Kameron
frm.[FSecondaire].Form![FOpérations]!OptionG01.Setfocus ???

Ah ! Le "Setfocus" !
Zut ! il fallait aussi y penser !
Merci encore Jerome.

Très amicalement.

"jerome crevecoeur"
a écrit dans le message de news:
Résumons votre probleme si j'ai bien compris

1) Vous avez un formulaire et un sous formulaire
2) quand vous modifiez une donnée dans votre sous formulaire , vous
voulez mettre à jour votre formulaire principal non et qu'il enregistre
les modifications ou votre sous formulaire?

si c'est votre sous formulaire il faut faire
a)
frm.[FSecondaire].Form![FOpérations]!OptionG01.Setfocus
DoCmd.RunCommand acCmdSaveRecord

si c'est votre sous formulaire principal ,il faut faire
b)
DoCmd.SelectObject acForm, "Fsecondaire"
DoCmd.RunCommand acCmdSaveRecord


Cordialement


Bonjour Jérome

Problème de syntaxe

"Entete" veut bien dire "[FSecondaire].Form![FOpérations]" ?



"jerome crevecoeur"
a écrit dans le
message de news:
Etape 4:

Sur l'événement aprés MAJ du champ

(en adaptant aux champs et formulaires)
Forms("Entete")("G01") = "G01"
DoCmd.SelectObject acForm, "Entete"
DoCmd.RunCommand acCmdSaveRecord




ça devrait se rapprocher de la vérité non?



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)










Avatar
jerome crevecoeur
Aucune magie la dedans mais parfois effectivement on se demande comment
ça marche !

Pour moi le DoCmd.RunCommand acCmdSaveRecord, sauvegarde
l'enregistrement en cours du "focus en cours".

1)Donc si tu déplaces ton focus sur le formulaire principal, Access va
enregistrer "tout seul comme un grand" les modifs du sous formulaires.

2) Ensuite le Docmd.runcommand AcCmdSaveRecord va faire son boulot pour
enfin virer le petit crayon qui peut nous perturber la vie.


Je vais en islande bientôt, donc si tu peux me dire merci en islandais
ce serait une grande joie :-)


Pour ne pas mourrir Idiot !!!!!!!!
Il me semble que cela marche avec :

DoCmd.SelectObject acForm, "FPrincipal"

Jerome peux-tu m'expliquer cette magie ?
Si je comprends bien :
"DoCmd.RunCommand acCmdSaveRecord" agit bel et bien
1° sur le formulaire principal
2° sur tous les sous-fomulaires inclus
et enregistre toutes les modifications ????

Comment et en quelle langue te dire merci ?


"William Kameron" a écrit dans le message de n ews:
u%
Bonjour Jérome
Problème de syntaxe

"Entete" veut bien dire "[FSecondaire].Form![FOpérations]" ?

Car j'ai en début de code :

If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
And acObjStateOpen) <> 0 Then
Set frm = Forms("FPrincipal")

En bouquinant depuis hier sur cette syntaxe je ne sais pas si le
"DoCmd.SelectObject" porte sur les sous formulaire.
Si oui, alors je me perd dans la syntaxe.



"jerome crevecoeur"
a écrit dan s le
message de news:
Etape 4:

Sur l'événement aprés MAJ du champ

(en adaptant aux champs et formulaires)
Forms("Entete")("G01") = "G01"
DoCmd.SelectObject acForm, "Entete"
DoCmd.RunCommand acCmdSaveRecord




ça devrait se rapprocher de la vérité non?



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 Bool ean
'****** ChoisirFormule est une fonction dans un module global qui ren voie
la valeur Vrai quand les combinaisons G01,G02,G03,... G12 sont possib le
Dim RéfOpération as long, StrSQL as String, Résultat as Boole an

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 l e 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 fonctio n
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 co ntextuel
qui présente les différentes combinaisons possibles.
2° La fonction qui calcule le résutat est valable même pour d'a utres cas.
3° Cette fonction CalculeValeurs est appelée dans tous les module s de
calcul de l'application

Sans la nécessité de calculer les valeurs le problème serait cl os depuis
logntemps car résolu.
En effet dès si j'inhibe Etape4, je n'ai pas Résultat et je ne pu is
savoir si les combinaison son possible entre les différentes option s 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'instructio n
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)













Avatar
William Kameron
TAKK

Hé ! Hé !
Je ne suis pas socier non plus.
Voici ma référence :
http://islande.jemenvol.net/langue-islandaise.php


"jerome crevecoeur"
a écrit dans le message de news:
Aucune magie la dedans mais parfois effectivement on se demande comment
ça marche !

Pour moi le DoCmd.RunCommand acCmdSaveRecord, sauvegarde
l'enregistrement en cours du "focus en cours".

1)Donc si tu déplaces ton focus sur le formulaire principal, Access va
enregistrer "tout seul comme un grand" les modifs du sous formulaires.

2) Ensuite le Docmd.runcommand AcCmdSaveRecord va faire son boulot pour
enfin virer le petit crayon qui peut nous perturber la vie.


Je vais en islande bientôt, donc si tu peux me dire merci en islandais
ce serait une grande joie :-)


Pour ne pas mourrir Idiot !!!!!!!!
Il me semble que cela marche avec :

DoCmd.SelectObject acForm, "FPrincipal"

Jerome peux-tu m'expliquer cette magie ?
Si je comprends bien :
"DoCmd.RunCommand acCmdSaveRecord" agit bel et bien
1° sur le formulaire principal
2° sur tous les sous-fomulaires inclus
et enregistre toutes les modifications ????

Comment et en quelle langue te dire merci ?


"William Kameron" a écrit dans le message de news:
u%
Bonjour Jérome
Problème de syntaxe

"Entete" veut bien dire "[FSecondaire].Form![FOpérations]" ?

Car j'ai en début de code :

If (SysCmd(acSysCmdGetObjectState, acForm, "FPrincipal") _
And acObjStateOpen) <> 0 Then
Set frm = Forms("FPrincipal")

En bouquinant depuis hier sur cette syntaxe je ne sais pas si le
"DoCmd.SelectObject" porte sur les sous formulaire.
Si oui, alors je me perd dans la syntaxe.



"jerome crevecoeur"
a écrit dans le
message de news:
Etape 4:

Sur l'événement aprés MAJ du champ

(en adaptant aux champs et formulaires)
Forms("Entete")("G01") = "G01"
DoCmd.SelectObject acForm, "Entete"
DoCmd.RunCommand acCmdSaveRecord




ça devrait se rapprocher de la vérité non?



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)













1 2