OVH Cloud OVH Cloud

requête Maj

26 réponses
Avatar
Marie-Claire
Bonjour,
J’ai une requête Maj comme suit:
UPDATE R_Agenda INNER JOIN T_Agenda ON R_Agenda.Date_Calendrier =
T_Agenda.Date_Agenda SET T_Agenda.Date_Agenda = R_Agenda.Date_Calendrier,
T_Agenda.HoraireDebut = R_Agenda.HoraireDebut, T_Agenda.HoraireFin =
R_Agenda.HoraireFin, T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour =
R_Agenda.Jour
WHERE
(((T_Agenda.Date_Agenda)>=[Formulaire]![F_Agenda]![HFin]("\#mm/jj/aaaa#")<=[Formulaire]![F_Agenda]![DDebut]("\#mm/jj/aaaa#")));
Mais lorsque je la lance depuis le formulaire F_Agenda j’ai un problème :
Fonction [Formulaire]![F_Agenda]![HFin] non définie dans l'expression.
Je ne vois pas d’où ça vient, les champs HFin et DDebut du formulaire
F_Agenda sont au format Date, abrégé.
Pourriez-Vous m’aider, s’il vous plait ?
Merci, merci.
Marie-Claire
--
Marie-Claire

10 réponses

1 2 3
Avatar
Michel__D
Bonjour,

Marie-Claire a écrit :
Non,
Ni l'une ni l'autre des solutions ne fonctionne.
Comment faut-il faire alors?
Marie-Claire



Essaye avec ce code

sSQL="UPDATE R_Agenda AS R INNER JOIN T_Agenda AS T " & _
"ON R.Date_Calendrier=T.Date_Agenda " & _
"SET T.Date_Agenda = R.Date_Calendrier, " & _
"T.HoraireDebut = R.HoraireDebut, " & _
"T.HoraireFin = R.HoraireFin, " & _
"T.NEmp = R.NEmp, " & _
"T.Jour = R.Jour " & _
"WHERE T.Date_Agenda Between #" &
Format([Forms]![F_Agenda]![DDebut],"mm/jj/aaaa") & "# " & _
"And #" & Format([Forms]![F_Agenda]![HFin],"mm/jj/aaaa") & "#;"

DoCmd.SetWarnings False
DoCmd.RunSQL sSQL
DoCmd.SetWarnings True
Avatar
3stone
Salut,

Marie-Claire wrote:
Non,
Ni l'une ni l'autre des solutions ne fonctionne.
Comment faut-il faire alors?




Mais encore ?

Et il y avait une erreur de frappe dans les 2 versions,
il manquait un "slash"

Donc, pour une requête enregistrée, ceci devrait aller:
Format(Forms!F_Agenda!HFin;"#mm/jj/aaaa#")

En relisant ton message, je vois qu'il te manque également
le "and" pour lier les deux critères.


WHERE (((T_Agenda.Date_Agenda)> Format([Forms]![F_Agenda]![HFin];"#mm/jj/aaaa#")
AND (T_Agenda.Date_Agenda)
<=Format([Forms]![F_Agenda]![DDebut];"#mm/jj/aaaa#")));

ce qui me fait douter que ce soit réellement une requête
enregistrée (et construite avec le requêteur)

A la place du Where ... => ... AND ... <= ...
tu peux aussi utiliser l'opérateur Between.

Where Data_Agenta Between ... AND ...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Marie-Claire
Bonjour,
Tout d'abord lorsque j'essaie d'enregistrer la requête Access m'indique que
les ; sont faux alors je les aient remplacés par , ce qui donne:

UPDATE R_Agenda INNER JOIN T_Agenda ON R_Agenda.Date_Calendrier =
T_Agenda.Date_Agenda SET T_Agenda.Date_Agenda = R_Agenda.Date_Calendrier,
T_Agenda.HoraireDebut = R_Agenda.HoraireDebut, T_Agenda.HoraireFin =
R_Agenda.HoraireFin, T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour =
R_Agenda.Jour
WHERE (((T_Agenda.Date_Agenda)>=
Format([Forms]![F_Agenda]![HFin],"#mm/jj/aaaa#") AND (T_Agenda.Date_Agenda)
<=Format([Forms]![F_Agenda]![DDebut],"#mm/jj/aaaa#")));

Mais aucun changement ne se produit.
Alors j'ai agis directement depuis la requête sans passer par le formulaire,
alors je rentre les dates HFin et DDebut à l'ouverture des fenetres me
demandant les valeurs qui normalement sont dans le formulaire F_Agenda. Par
example 31.12.2010 et 01.06.2010

Mais la Access ouvre une fen^tre d'erreur:
Type de données incompatible dans l'expression du critère.
Marie-Claire
--
Marie-Claire


"3stone" a écrit :

Salut,

Marie-Claire wrote:
> Non,
> Ni l'une ni l'autre des solutions ne fonctionne.
> Comment faut-il faire alors?


Mais encore ?

Et il y avait une erreur de frappe dans les 2 versions,
il manquait un "slash"

Donc, pour une requête enregistrée, ceci devrait aller:
Format(Forms!F_Agenda!HFin;"#mm/jj/aaaa#")

En relisant ton message, je vois qu'il te manque également
le "and" pour lier les deux critères.


WHERE (((T_Agenda.Date_Agenda)> > Format([Forms]![F_Agenda]![HFin];"#mm/jj/aaaa#")
AND (T_Agenda.Date_Agenda)
<=Format([Forms]![F_Agenda]![DDebut];"#mm/jj/aaaa#")));

ce qui me fait douter que ce soit réellement une requête
enregistrée (et construite avec le requêteur)

A la place du Where ... => ... AND ... <= ...
tu peux aussi utiliser l'opérateur Between.

Where Data_Agenta Between ... AND ...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)


.

Avatar
3stone
Salut,

Marie-Claire wrote:
Bonjour,
Tout d'abord lorsque j'essaie d'enregistrer la requête Access
m'indique que les ; sont faux alors je les aient remplacés par , ce
qui donne:




Si tu crées la requête avec le "requêteur graphique" (l'assistant
de requêtes) tu devrait normalement saisir des ";" si ton PC
a le francais comme langue définie dans les patamètres
régionaux...




UPDATE R_Agenda INNER JOIN T_Agenda ON R_Agenda.Date_Calendrier > T_Agenda.Date_Agenda SET T_Agenda.Date_Agenda > R_Agenda.Date_Calendrier, T_Agenda.HoraireDebut > R_Agenda.HoraireDebut, T_Agenda.HoraireFin = R_Agenda.HoraireFin,
T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour = R_Agenda.Jour
WHERE (((T_Agenda.Date_Agenda)> > Format([Forms]![F_Agenda]![HFin],"#mm/jj/aaaa#") AND
(T_Agenda.Date_Agenda)
<=Format([Forms]![F_Agenda]![DDebut],"#mm/jj/aaaa#")));

Mais aucun changement ne se produit.
Alors j'ai agis directement depuis la requête sans passer par le
formulaire, alors je rentre les dates HFin et DDebut à l'ouverture
des fenetres me demandant les valeurs qui normalement sont dans le
formulaire F_Agenda. Par example 31.12.2010 et 01.06.2010

Mais la Access ouvre une fen^tre d'erreur:
Type de données incompatible dans l'expression du critère.
Marie-Claire



Crées ta requête sans rensigner des critères, elle doit alors
te fournir tous les enregistrments.
Ensuite, fais un clic droit dans la ligne des critères et choisis à
nouveau l'assistant par "Créer..."
Là, tu vas rejoindre ton formulaire (qui doit être "ouvert") et les
zones de texte qui vont bien.

Il suffit par la suite d'adapter éventuellement...

Dis-moi !

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Marie-Claire
Bonjour,
Je te remercie infiniment, mais si je n'utilise que le requêteur je n'arrive
que là:
UPDATE T_Agenda INNER JOIN R_Agenda ON
T_Agenda.Date_Agenda=R_Agenda.Date_Calendrier SET T_Agenda.Date_Agenda =
[Date_Agenda], T_Agenda.HoraireDebut = [HoraireDebut], T_Agenda.HoraireFin =
[HoraireFin], T_Agenda.NEmp = [NEmp], T_Agenda.Jour = [Jour]
WHERE (((T_Agenda.Date_Agenda)>=(Forms!F_Agenda!HFin) And
(T_Agenda.Date_Agenda)<=Format(Forms!F_Agenda!DDebut)));

Il manque donc le nom de la requête R_Agenda et le format que je n'arrive
pas à trouver avec le requêteur.
Dans Région et langue c'est Français (suisse) qui est sélectionné.
Marie-Claire
--
Marie-Claire


"3stone" a écrit :

Salut,

Marie-Claire wrote:
> Bonjour,
> Tout d'abord lorsque j'essaie d'enregistrer la requête Access
> m'indique que les ; sont faux alors je les aient remplacés par , ce
> qui donne:


Si tu crées la requête avec le "requêteur graphique" (l'assistant
de requêtes) tu devrait normalement saisir des ";" si ton PC
a le francais comme langue définie dans les patamètres
régionaux...



>
> UPDATE R_Agenda INNER JOIN T_Agenda ON R_Agenda.Date_Calendrier > > T_Agenda.Date_Agenda SET T_Agenda.Date_Agenda > > R_Agenda.Date_Calendrier, T_Agenda.HoraireDebut > > R_Agenda.HoraireDebut, T_Agenda.HoraireFin = R_Agenda.HoraireFin,
> T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour = R_Agenda.Jour
> WHERE (((T_Agenda.Date_Agenda)> > > Format([Forms]![F_Agenda]![HFin],"#mm/jj/aaaa#") AND
> (T_Agenda.Date_Agenda)
> <=Format([Forms]![F_Agenda]![DDebut],"#mm/jj/aaaa#")));
>
> Mais aucun changement ne se produit.
> Alors j'ai agis directement depuis la requête sans passer par le
> formulaire, alors je rentre les dates HFin et DDebut à l'ouverture
> des fenetres me demandant les valeurs qui normalement sont dans le
> formulaire F_Agenda. Par example 31.12.2010 et 01.06.2010
>
> Mais la Access ouvre une fen^tre d'erreur:
> Type de données incompatible dans l'expression du critère.
> Marie-Claire

Crées ta requête sans rensigner des critères, elle doit alors
te fournir tous les enregistrments.
Ensuite, fais un clic droit dans la ligne des critères et choisis à
nouveau l'assistant par "Créer..."
Là, tu vas rejoindre ton formulaire (qui doit être "ouvert") et les
zones de texte qui vont bien.

Il suffit par la suite d'adapter éventuellement...

Dis-moi !

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

Avatar
3stone
Salut,

Marie-Claire wrote:
Bonjour,
Je te remercie infiniment, mais si je n'utilise que le requêteur je
n'arrive que là:
UPDATE T_Agenda INNER JOIN R_Agenda ON
T_Agenda.Date_Agenda=R_Agenda.Date_Calendrier SET
T_Agenda.Date_Agenda = [Date_Agenda], T_Agenda.HoraireDebut > [HoraireDebut], T_Agenda.HoraireFin = [HoraireFin], T_Agenda.NEmp > [NEmp], T_Agenda.Jour = [Jour]
WHERE (((T_Agenda.Date_Agenda)>=(Forms!F_Agenda!HFin) And
(T_Agenda.Date_Agenda)<=Format(Forms!F_Agenda!DDebut)));

Il manque donc le nom de la requête R_Agenda et le format que je
n'arrive pas à trouver avec le requêteur.
Dans Région et langue c'est Français (suisse) qui est sélectionné.




Et pourquoi ne rejoutes tu pas ta requête dans le requêteur ?

Tu peux y ajouter des tables ou des requêtes, via l'onglet qui va bien !

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Marie-Claire
Bonjour,
Oui bien sur je l'ai fait et celà donne ceci:

UPDATE T_Agenda INNER JOIN R_Agenda ON T_Agenda.Date_Agenda =
R_Agenda.Date_Calendrier SET T_Agenda.Date_Agenda = R_Agenda.Date_Calendrier,
T_Agenda.HoraireDebut = R_Agenda.HoraireDebut, T_Agenda.HoraireFin =
R_Agenda.HoraireFin, T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour =
R_Agenda.Jour
WHERE (((T_Agenda.Date_Agenda)>=([Forms]![F_Agenda]![HFin]) And
(T_Agenda.Date_Agenda)<=Format([Forms]![F_Agenda]![DDebut])));

Mais comment régler le problème du format de date et de compatibilité de
type que je n'arrive pas à résoudre.
Je suis perdue.
Marie-Claire
--
Marie-Claire


"3stone" a écrit :

Salut,

Marie-Claire wrote:
> Bonjour,
> Tout d'abord lorsque j'essaie d'enregistrer la requête Access
> m'indique que les ; sont faux alors je les aient remplacés par , ce
> qui donne:


Si tu crées la requête avec le "requêteur graphique" (l'assistant
de requêtes) tu devrait normalement saisir des ";" si ton PC
a le francais comme langue définie dans les patamètres
régionaux...



>
> UPDATE R_Agenda INNER JOIN T_Agenda ON R_Agenda.Date_Calendrier > > T_Agenda.Date_Agenda SET T_Agenda.Date_Agenda > > R_Agenda.Date_Calendrier, T_Agenda.HoraireDebut > > R_Agenda.HoraireDebut, T_Agenda.HoraireFin = R_Agenda.HoraireFin,
> T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour = R_Agenda.Jour
> WHERE (((T_Agenda.Date_Agenda)> > > Format([Forms]![F_Agenda]![HFin],"#mm/jj/aaaa#") AND
> (T_Agenda.Date_Agenda)
> <=Format([Forms]![F_Agenda]![DDebut],"#mm/jj/aaaa#")));
>
> Mais aucun changement ne se produit.
> Alors j'ai agis directement depuis la requête sans passer par le
> formulaire, alors je rentre les dates HFin et DDebut à l'ouverture
> des fenetres me demandant les valeurs qui normalement sont dans le
> formulaire F_Agenda. Par example 31.12.2010 et 01.06.2010
>
> Mais la Access ouvre une fen^tre d'erreur:
> Type de données incompatible dans l'expression du critère.
> Marie-Claire

Crées ta requête sans rensigner des critères, elle doit alors
te fournir tous les enregistrments.
Ensuite, fais un clic droit dans la ligne des critères et choisis à
nouveau l'assistant par "Créer..."
Là, tu vas rejoindre ton formulaire (qui doit être "ouvert") et les
zones de texte qui vont bien.

Il suffit par la suite d'adapter éventuellement...

Dis-moi !

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

Avatar
3stone
re,

Marie-Claire wrote:
Bonjour,
Oui bien sur je l'ai fait et celà donne ceci:

UPDATE T_Agenda INNER JOIN R_Agenda ON T_Agenda.Date_Agenda > R_Agenda.Date_Calendrier SET T_Agenda.Date_Agenda > R_Agenda.Date_Calendrier, T_Agenda.HoraireDebut > R_Agenda.HoraireDebut, T_Agenda.HoraireFin = R_Agenda.HoraireFin,
T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour = R_Agenda.Jour
WHERE (((T_Agenda.Date_Agenda)>=([Forms]![F_Agenda]![HFin]) And
(T_Agenda.Date_Agenda)<=Format([Forms]![F_Agenda]![DDebut])));

Mais comment régler le problème du format de date et de compatibilité
de type que je n'arrive pas à résoudre.
Je suis perdue.
Marie-Claire




Si tu remplaces les critères par la méthode suivante, est-ce que cela fonctionne ?

- comme premier critère tu mets:
[Date de fin]

- et comme second critère, tu mets:
[Date Début]

Si c'est ok, il te reste a te concentrer sur cette partie.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Marie-Claire
Salut,
J'ai mis comme tu me l'as dit [Date de fin] et [Date Début] comme 1er et
2ème critère et j'ai la boîte de dialogue qui me demande de saisir ces dates
et et tout se passe comme si tout allait bien simplement la mise à jour ne se
fait pas.
Le message me dit:
Vous allez mettre à jour 0 ligne(s)
Alors qu'ily a plusieurs diferrences entre la R_Agenda et la T_Agenda.

Peut-être as-tu une idée.
Marie-Claire
--
Marie-Claire


"3stone" a écrit :

re,

Marie-Claire wrote:
> Bonjour,
> Oui bien sur je l'ai fait et celà donne ceci:
>
> UPDATE T_Agenda INNER JOIN R_Agenda ON T_Agenda.Date_Agenda > > R_Agenda.Date_Calendrier SET T_Agenda.Date_Agenda > > R_Agenda.Date_Calendrier, T_Agenda.HoraireDebut > > R_Agenda.HoraireDebut, T_Agenda.HoraireFin = R_Agenda.HoraireFin,
> T_Agenda.NEmp = R_Agenda.NEmp, T_Agenda.Jour = R_Agenda.Jour
> WHERE (((T_Agenda.Date_Agenda)>=([Forms]![F_Agenda]![HFin]) And
> (T_Agenda.Date_Agenda)<=Format([Forms]![F_Agenda]![DDebut])));
>
> Mais comment régler le problème du format de date et de compatibilité
> de type que je n'arrive pas à résoudre.
> Je suis perdue.
> Marie-Claire


Si tu remplaces les critères par la méthode suivante, est-ce que cela fonctionne ?

- comme premier critère tu mets:
[Date de fin]

- et comme second critère, tu mets:
[Date Début]

Si c'est ok, il te reste a te concentrer sur cette partie.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)

.

Avatar
3stone
Salut,

Marie-Claire wrote:
J'ai mis comme tu me l'as dit [Date de fin] et [Date Début] comme
1er et
2ème critère et j'ai la boîte de dialogue qui me demande de saisir
ces dates
et et tout se passe comme si tout allait bien simplement la mise à
jour ne se
fait pas.
Le message me dit:
Vous allez mettre à jour 0 ligne(s)
Alors qu'ily a plusieurs diferrences entre la R_Agenda et la T_Agenda.




Cela signifie que ta requête ne peut être mise à jour... ou bien quelle
ne renvoie pas d'enregistrments.

Il faudrait la transformer en requête Select pour voir si tu obtiens
les enregistrements souhaités et seulement après en faire une
requête Update.
Note, même si elle renvoie des enregistrements, c'est n'est pas
suffisant pour qu'elle soit "updatedable"

Le problème peut également venir de ta requête R_Agenda
qui renvoie plusieurs valeurs pour un même critère...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
1 2 3