OVH Cloud OVH Cloud

Donnée introuvable d'un Form à l'autre

2 réponses
Avatar
Jean-Marc
Salut à tous,

Dans les exemples j'ai trouvé un formulaire appelé Période de l'Etat, qu'on
ouvre à l'ouverture d'un état, dans lequel on place une date de début et une
date de fin. Sur ce form se trouve un bouton aperçu qui fait qq tests puis
rend le form invisible.
Dans l'état, la source SQL fait appel aux données du form pour définir une
période dans laquelle les données sont affichées.

Mon SQL est : SELECT DISTINCTROW [Produits].[RéfProduit],
[Produits].[Unité], [Produits].[NomProduit],
[Fournisseurs].[RéfFournisseur], [Fournisseurs].[NomFournisseur],
Sum([Transactions inventaire].[QtéCommandées]) AS [Total unités] FROM
(Fournisseurs INNER JOIN [Bons de commande] ON
[Fournisseurs].[RéfFournisseur]=[Bons de commande].[RéfFournisseur]) INNER
JOIN (Produits INNER JOIN [Transactions inventaire] ON
[Produits].[RéfProduit]=[Transactions inventaire].[RéfProduit]) ON [Bons de
commande].[RéfBonCommande]=[Transactions inventaire].[RéfBonCommande] WHERE
((([Transactions inventaire].[DateTransaction])>=Formulaires![Période de
l'état]!DateDébut And ([Transactions
inventaire].[DateTransaction])<=Formulaires![Période de l'état]!DateFin))
GROUP BY [Produits].[RéfProduit], [Produits].[Unité],
[Produits].[NomProduit], [Fournisseurs].[RéfFournisseur],
[Fournisseurs].[NomFournisseur];

Mon problème est le suivant :
L'état s'ouvre correctement et ouvre correctement le form Période de l'état
(que je me suis contenté d'importer). Lorsque j'ai introduit mes données
dans l'état et que je clique sur le bouton aperçu, l'état m'envoie la boîte
de message me demandant d'introduire les données que j'ai introduites dans
le formulaire Période de l'état.
Le message est : Formulaires!Période de l'état!Datedébut, 1 [Unknown] =
Je dois ensuite introduire la date de début
Le message suivant est : Formulaires!Période de l'état!Datedébut, 3
[Unknown] =
Ici je dois introduire la date de fin, et non de début, comme stipulé dans
le titre.

J'ai essayé
WHERE ((([Transactions inventaire].[DateTransaction])>=#Formulaires![Période
de l'état]!DateDébut# And ([Transactions
inventaire].[DateTransaction])<=#Formulaires![Période de l'état]!DateFin#))
WHERE ((([Transactions inventaire].[DateTransaction])>=#" &
Format(Formulaires![Période de l'état]!DateDébut, "mm/dd/yyyy") & "# And
([Transactions inventaire].[DateTransaction])<=#" &
Format(Formulaires![Période de l'état]!DateFin, "mm/dd/yyyy") & "#))

mais je reçois toujours un message d'erreur de syntaxe.

Comment dois-je faire ?
Que fais-je mal ?

Merci de vos z'avis z'avisés,

Jean-Marc

2 réponses

Avatar
Pierre CFI [mvp]
bonjour
j'ai un doute sur la chronologie des faits
1 on ouvre le formulaire
2 on remplit les données
3 on ouvre l'état
4 on masque le form (pourquoi ?)
si l'état est ouvert sans form, çà marche pas

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Jean-Marc" a écrit dans le message de news:
Salut à tous,

Dans les exemples j'ai trouvé un formulaire appelé Période de l'Etat, qu'on
ouvre à l'ouverture d'un état, dans lequel on place une date de début et une
date de fin. Sur ce form se trouve un bouton aperçu qui fait qq tests puis
rend le form invisible.
Dans l'état, la source SQL fait appel aux données du form pour définir une
période dans laquelle les données sont affichées.

Mon SQL est : SELECT DISTINCTROW [Produits].[RéfProduit],
[Produits].[Unité], [Produits].[NomProduit],
[Fournisseurs].[RéfFournisseur], [Fournisseurs].[NomFournisseur],
Sum([Transactions inventaire].[QtéCommandées]) AS [Total unités] FROM
(Fournisseurs INNER JOIN [Bons de commande] ON
[Fournisseurs].[RéfFournisseur]=[Bons de commande].[RéfFournisseur]) INNER
JOIN (Produits INNER JOIN [Transactions inventaire] ON
[Produits].[RéfProduit]=[Transactions inventaire].[RéfProduit]) ON [Bons de
commande].[RéfBonCommande]=[Transactions inventaire].[RéfBonCommande] WHERE
((([Transactions inventaire].[DateTransaction])>=Formulaires![Période de
l'état]!DateDébut And ([Transactions
inventaire].[DateTransaction])<=Formulaires![Période de l'état]!DateFin))
GROUP BY [Produits].[RéfProduit], [Produits].[Unité],
[Produits].[NomProduit], [Fournisseurs].[RéfFournisseur],
[Fournisseurs].[NomFournisseur];

Mon problème est le suivant :
L'état s'ouvre correctement et ouvre correctement le form Période de l'état
(que je me suis contenté d'importer). Lorsque j'ai introduit mes données
dans l'état et que je clique sur le bouton aperçu, l'état m'envoie la boîte
de message me demandant d'introduire les données que j'ai introduites dans
le formulaire Période de l'état.
Le message est : Formulaires!Période de l'état!Datedébut, 1 [Unknown] > Je dois ensuite introduire la date de début
Le message suivant est : Formulaires!Période de l'état!Datedébut, 3
[Unknown] > Ici je dois introduire la date de fin, et non de début, comme stipulé dans
le titre.

J'ai essayé
WHERE ((([Transactions inventaire].[DateTransaction])>=#Formulaires![Période
de l'état]!DateDébut# And ([Transactions
inventaire].[DateTransaction])<=#Formulaires![Période de l'état]!DateFin#))
WHERE ((([Transactions inventaire].[DateTransaction])>=#" &
Format(Formulaires![Période de l'état]!DateDébut, "mm/dd/yyyy") & "# And
([Transactions inventaire].[DateTransaction])<=#" &
Format(Formulaires![Période de l'état]!DateFin, "mm/dd/yyyy") & "#))

mais je reçois toujours un message d'erreur de syntaxe.

Comment dois-je faire ?
Que fais-je mal ?

Merci de vos z'avis z'avisés,

Jean-Marc




Avatar
Jean-Marc
Salut Pierre,

A l'ouverture de l'état, on teste si Période de l'état est ouvert. S'il ne
l'est pas on l'ouvre.
Comme il est ouvert, on introduit les données (form modal) et on appuie sur
aperçu.

code de Période de l'état :
Private Sub Form_Open(Cancel As Integer)
Me.Caption = Me.OpenArgs
End Sub
Private Sub Aperçu_Click()
If IsNull([DateDébut]) Or IsNull([DateFin]) Then
MsgBox "Vous devez taper une date de début et une date de fin."
DoCmd.GoToControl "DateDébut"
Else
If [DateDébut] > [DateFin] Then
MsgBox "La date de fin doit être postérieure à la date de
début."
DoCmd.GoToControl "DateDébut"
Else
Me.Visible = False
End If
End If
End Sub

Source de l'état :
SELECT DISTINCTROW [Produits].[RéfProduit], [Produits].[Unité],
[Produits].[NomProduit], [Fournisseurs].[RéfFournisseur],
[Fournisseurs].[NomFournisseur], Sum([Transactions
inventaire].[QtéCommandées]) AS [Total unités] FROM (Fournisseurs INNER
JOIN [Bons de commande] ON [Fournisseurs].[RéfFournisseur]=[Bons de
commande].[RéfFournisseur]) INNER JOIN (Produits INNER JOIN [Transactions
inventaire] ON [Produits].[RéfProduit]=[Transactions
inventaire].[RéfProduit]) ON [Bons de
commande].[RéfBonCommande]=[Transactions inventaire].[RéfBonCommande] WHERE
((([Transactions inventaire].[DateTransaction])>=Formulaires![Période de
l'état]!DateDébut And ([Transactions
inventaire].[DateTransaction])<=Formulaires![Période de l'état]!DateFin))
GROUP BY [Produits].[RéfProduit], [Produits].[Unité],
[Produits].[NomProduit], [Fournisseurs].[RéfFournisseur],
[Fournisseurs].[NomFournisseur];

Sur fermeture de l'état : fermeture de Période de l'état





"Pierre CFI [mvp]" a écrit dans le message de
news:
bonjour
j'ai un doute sur la chronologie des faits
1 on ouvre le formulaire
2 on remplit les données
3 on ouvre l'état
4 on masque le form (pourquoi ?)
si l'état est ouvert sans form, çà marche pas

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
Access http://users.skynet.be/mpfa/
Excel http://www.excelabo.net
Site perso
http://access.cfi.free.fr
"Jean-Marc" a écrit dans le message de
news:

Salut à tous,

Dans les exemples j'ai trouvé un formulaire appelé Période de l'Etat,
qu'on


ouvre à l'ouverture d'un état, dans lequel on place une date de début et
une


date de fin. Sur ce form se trouve un bouton aperçu qui fait qq tests
puis


rend le form invisible.
Dans l'état, la source SQL fait appel aux données du form pour définir
une


période dans laquelle les données sont affichées.

Mon SQL est : SELECT DISTINCTROW [Produits].[RéfProduit],
[Produits].[Unité], [Produits].[NomProduit],
[Fournisseurs].[RéfFournisseur], [Fournisseurs].[NomFournisseur],
Sum([Transactions inventaire].[QtéCommandées]) AS [Total unités] FROM
(Fournisseurs INNER JOIN [Bons de commande] ON
[Fournisseurs].[RéfFournisseur]=[Bons de commande].[RéfFournisseur])
INNER


JOIN (Produits INNER JOIN [Transactions inventaire] ON
[Produits].[RéfProduit]=[Transactions inventaire].[RéfProduit]) ON [Bons
de


commande].[RéfBonCommande]=[Transactions inventaire].[RéfBonCommande]
WHERE


((([Transactions inventaire].[DateTransaction])>=Formulaires![Période de
l'état]!DateDébut And ([Transactions
inventaire].[DateTransaction])<=Formulaires![Période de
l'état]!DateFin))


GROUP BY [Produits].[RéfProduit], [Produits].[Unité],
[Produits].[NomProduit], [Fournisseurs].[RéfFournisseur],
[Fournisseurs].[NomFournisseur];

Mon problème est le suivant :
L'état s'ouvre correctement et ouvre correctement le form Période de
l'état


(que je me suis contenté d'importer). Lorsque j'ai introduit mes données
dans l'état et que je clique sur le bouton aperçu, l'état m'envoie la
boîte


de message me demandant d'introduire les données que j'ai introduites
dans


le formulaire Période de l'état.
Le message est : Formulaires!Période de l'état!Datedébut, 1 [Unknown] > > Je dois ensuite introduire la date de début
Le message suivant est : Formulaires!Période de l'état!Datedébut, 3
[Unknown] > > Ici je dois introduire la date de fin, et non de début, comme stipulé
dans


le titre.

J'ai essayé
WHERE ((([Transactions
inventaire].[DateTransaction])>=#Formulaires![Période


de l'état]!DateDébut# And ([Transactions
inventaire].[DateTransaction])<=#Formulaires![Période de
l'état]!DateFin#))


WHERE ((([Transactions inventaire].[DateTransaction])>=#" &
Format(Formulaires![Période de l'état]!DateDébut, "mm/dd/yyyy") & "# And
([Transactions inventaire].[DateTransaction])<=#" &
Format(Formulaires![Période de l'état]!DateFin, "mm/dd/yyyy") & "#))

mais je reçois toujours un message d'erreur de syntaxe.

Comment dois-je faire ?
Que fais-je mal ?

Merci de vos z'avis z'avisés,

Jean-Marc