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

6 réponses

1 2 3
Avatar
Marie-Claire
Bonjour,
J'ai créé une requête select et elle renvoi les enregistrements.
En ce qui concerne la requête R_Agenda, voici un petit bout:

Date_Calendrier HoraireDebut HoraireFin NEmp JourSem Jour
01.02.2010 09:00:00 11:30:00 2 Lundi 1
01.02.2010 13:00:00 17:30:00 3 Lundi 1
01.02.2010 09:00:00 12:30:00 3 Lundi 1
02.02.2010 09:00:00 11:45:00 2 Mardi 2
02.02.2010 09:00:00 12:30:00 3 Mardi 2
02.02.2010 14:30:00 17:00:00 2 Mardi 2
03.02.2010 14:30:00 17:30:00 2 Mercredi 3
03.02.2010 09:00:00 12:00:00 2 Mercredi 3
04.02.2010 12:00:00 15:00:00 3 Jeudi 4
04.02.2010 13:30:00 16:45:00 2 Jeudi 4
05.02.2010 09:00:00 12:00:00 2 Vendredi 5
08.02.2010 09:00:00 12:30:00 3 Lundi 1
08.02.2010 09:00:00 11:30:00 2 Lundi 1
08.02.2010 13:00:00 17:30:00 3 Lundi 1

et la table T_Agenda que je veux mettre à jour, voici aussi un petit bout:

Date_Agenda HoraireDebut HoraireFin NEmp Jour
01.02.2010 09:00:00 11:30:00 2 1
01.02.2010 13:00:00 17:30:00 3 1
01.02.2010 09:00:00 12:30:00 3 1
02.02.2010 09:00:00 11:45:00 2 2
02.02.2010 14:30:00 17:00:00 2 2
02.02.2010 09:00:00 12:30:00 3 2
03.02.2010 14:30:00 17:30:00 2 3
03.02.2010 09:00:00 12:00:00 2 3
04.02.2010 12:00:00 15:00:00 3 4
04.02.2010 13:30:00 16:45:00 2 4
04.02.2010 09:00:00 11:45:00 2 4
05.02.2010 09:00:00 10:30:00 3 5
05.02.2010 14:30:00 17:15:00 3 5
08.02.2010 09:00:00 11:30:00 2 1
08.02.2010 13:00:00 17:30:00 3 1
08.02.2010 09:00:00 12:30:00 3 1

Faut-il utiliser une autre methode?
Marie-Claire
--
Marie-Claire


"3stone" a écrit :

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)





.

Avatar
Michel__D
Bonjour,

Marie-Claire a écrit :
Bonjour,
J'ai créé une requête select et elle renvoi les enregistrements.
En ce qui concerne la requête R_Agenda, voici un petit bout:

Date_Calendrier HoraireDebut HoraireFin NEmp JourSem Jour
01.02.2010 09:00:00 11:30:00 2 Lundi 1
01.02.2010 13:00:00 17:30:00 3 Lundi 1
01.02.2010 09:00:00 12:30:00 3 Lundi 1
02.02.2010 09:00:00 11:45:00 2 Mardi 2
02.02.2010 09:00:00 12:30:00 3 Mardi 2
02.02.2010 14:30:00 17:00:00 2 Mardi 2
03.02.2010 14:30:00 17:30:00 2 Mercredi 3
03.02.2010 09:00:00 12:00:00 2 Mercredi 3
04.02.2010 12:00:00 15:00:00 3 Jeudi 4
04.02.2010 13:30:00 16:45:00 2 Jeudi 4
05.02.2010 09:00:00 12:00:00 2 Vendredi 5
08.02.2010 09:00:00 12:30:00 3 Lundi 1
08.02.2010 09:00:00 11:30:00 2 Lundi 1
08.02.2010 13:00:00 17:30:00 3 Lundi 1

et la table T_Agenda que je veux mettre à jour, voici aussi un petit bout:

Date_Agenda HoraireDebut HoraireFin NEmp Jour
01.02.2010 09:00:00 11:30:00 2 1
01.02.2010 13:00:00 17:30:00 3 1
01.02.2010 09:00:00 12:30:00 3 1
02.02.2010 09:00:00 11:45:00 2 2
02.02.2010 14:30:00 17:00:00 2 2
02.02.2010 09:00:00 12:30:00 3 2
03.02.2010 14:30:00 17:30:00 2 3
03.02.2010 09:00:00 12:00:00 2 3
04.02.2010 12:00:00 15:00:00 3 4
04.02.2010 13:30:00 16:45:00 2 4
04.02.2010 09:00:00 11:45:00 2 4
05.02.2010 09:00:00 10:30:00 3 5
05.02.2010 14:30:00 17:15:00 3 5
08.02.2010 09:00:00 11:30:00 2 1
08.02.2010 13:00:00 17:30:00 3 1
08.02.2010 09:00:00 12:30:00 3 1

Faut-il utiliser une autre methode?
Marie-Claire



Je le crains !

Maintenant si la table [T_Agenda] est identique à [R_Agenda] en ce qui
concerne les champs [Date ...]
tu pourrais envisager de tout supprimer dans [T_Agenda] et ensuite
d'ajouter tout les enregistrements de [R_Agenda]
Avatar
Marie-Claire
Bonjour,

Elles sont identiques, mais je ne veux pas changer la totalité de la table,
sinon j'utiliserai directement la requête. Je ne veux modifier que sur des
périodes déterminées.
Si tu as le truc, je suis preneuse.
Marie-Claire

--
Marie-Claire


"Michel__D" a écrit :

Bonjour,

Marie-Claire a écrit :
> Bonjour,
> J'ai créé une requête select et elle renvoi les enregistrements.
> En ce qui concerne la requête R_Agenda, voici un petit bout:
>
> Date_Calendrier HoraireDebut HoraireFin NEmp JourSem Jour
> 01.02.2010 09:00:00 11:30:00 2 Lundi 1
> 01.02.2010 13:00:00 17:30:00 3 Lundi 1
> 01.02.2010 09:00:00 12:30:00 3 Lundi 1
> 02.02.2010 09:00:00 11:45:00 2 Mardi 2
> 02.02.2010 09:00:00 12:30:00 3 Mardi 2
> 02.02.2010 14:30:00 17:00:00 2 Mardi 2
> 03.02.2010 14:30:00 17:30:00 2 Mercredi 3
> 03.02.2010 09:00:00 12:00:00 2 Mercredi 3
> 04.02.2010 12:00:00 15:00:00 3 Jeudi 4
> 04.02.2010 13:30:00 16:45:00 2 Jeudi 4
> 05.02.2010 09:00:00 12:00:00 2 Vendredi 5
> 08.02.2010 09:00:00 12:30:00 3 Lundi 1
> 08.02.2010 09:00:00 11:30:00 2 Lundi 1
> 08.02.2010 13:00:00 17:30:00 3 Lundi 1
>
> et la table T_Agenda que je veux mettre à jour, voici aussi un petit bout:
>
> Date_Agenda HoraireDebut HoraireFin NEmp Jour
> 01.02.2010 09:00:00 11:30:00 2 1
> 01.02.2010 13:00:00 17:30:00 3 1
> 01.02.2010 09:00:00 12:30:00 3 1
> 02.02.2010 09:00:00 11:45:00 2 2
> 02.02.2010 14:30:00 17:00:00 2 2
> 02.02.2010 09:00:00 12:30:00 3 2
> 03.02.2010 14:30:00 17:30:00 2 3
> 03.02.2010 09:00:00 12:00:00 2 3
> 04.02.2010 12:00:00 15:00:00 3 4
> 04.02.2010 13:30:00 16:45:00 2 4
> 04.02.2010 09:00:00 11:45:00 2 4
> 05.02.2010 09:00:00 10:30:00 3 5
> 05.02.2010 14:30:00 17:15:00 3 5
> 08.02.2010 09:00:00 11:30:00 2 1
> 08.02.2010 13:00:00 17:30:00 3 1
> 08.02.2010 09:00:00 12:30:00 3 1
>
> Faut-il utiliser une autre methode?
> Marie-Claire

Je le crains !

Maintenant si la table [T_Agenda] est identique à [R_Agenda] en ce qui
concerne les champs [Date ...]
tu pourrais envisager de tout supprimer dans [T_Agenda] et ensuite
d'ajouter tout les enregistrements de [R_Agenda]
.

Avatar
Michel__D
Bonjour,

Marie-Claire a écrit :
Bonjour,

Elles sont identiques, mais je ne veux pas changer la totalité de la table,
sinon j'utiliserai directement la requête. Je ne veux modifier que sur des
périodes déterminées.
Si tu as le truc, je suis preneuse.
Marie-Claire



Tu supprime donc ce qui doit être supprimé (la période déterminée) et tu
ajoute les enregistrements
correspondant à la période déterminée puisque tu indique que les jeux
d'enregistrements sont identiques
par rapport au champ [date_...]

PS: Par contre je ne sais pas à quoi te sers cette base, mais être
obligé d'en arriver la, indique une
mauvaise reflexion/conception sur la fonctionnalité de cette base.
Avatar
Marie-Claire
Bonjour,
Ce n'est pas la base qui est mal réflechie, c'est une contrainte.
D'un coté on édite des horaires hebdomadaires et d'un autre on les inclu
dans la tables A_Agenda selon possibilités du personnel.

J'ai déjà essayé cela mais avec une requête suppression rien ne se supprime,
si on demande de le faire entre une date et une autre date. Seulement la
suppression de toutes les données peuvent-être supprimées.
J'ai le même problème qu'avec la requête mise à jour.

Marie-Claire
--
Marie-Claire


"Michel__D" a écrit :

Bonjour,

Marie-Claire a écrit :
> Bonjour,
>
> Elles sont identiques, mais je ne veux pas changer la totalité de la table,
> sinon j'utiliserai directement la requête. Je ne veux modifier que sur des
> périodes déterminées.
> Si tu as le truc, je suis preneuse.
> Marie-Claire

Tu supprime donc ce qui doit être supprimé (la période déterminée) et tu
ajoute les enregistrements
correspondant à la période déterminée puisque tu indique que les jeux
d'enregistrements sont identiques
par rapport au champ [date_...]

PS: Par contre je ne sais pas à quoi te sers cette base, mais être
obligé d'en arriver la, indique une
mauvaise reflexion/conception sur la fonctionnalité de cette base.
.

Avatar
Michel__D
Bonjour,

Marie-Claire a écrit :
Bonjour,
Ce n'est pas la base qui est mal réflechie, c'est une contrainte.




Ajouter une valeur à la table afin de pouvoir différencier les
enregistrements entre eux est du
ressort du concepteur de la base et donc je persiste à dire que la
conception a été mal réalisée.

D'un coté on édite des horaires hebdomadaires et d'un autre on les inclu
dans la tables A_Agenda selon possibilités du personnel.

J'ai déjà essayé cela mais avec une requête suppression rien ne se supprime,
si on demande de le faire entre une date et une autre date. Seulement la
suppression de toutes les données peuvent-être supprimées.
J'ai le même problème qu'avec la requête mise à jour.

Marie-Claire




A essayer

DELETE T.*
FROM [T_Agenda] AS T
WHERE T.Date_Agenda Between
Format([Forms]![F_Agenda]![DateDebut],"mm/dd/yyyy")
And Format([Forms]![F_Agenda]![DateFin],"mm/dd/yyyy");

Puis

INSERT INTO [T_Agenda] ( Date_Agenda, HoraireDebut, HoraireFin, NEmp, Jour)
SELECT R.[Date_Calendrier], R.HoraireDebut, R.HoraireFin, R.NEmp, R.Jour
FROM [R_Agenda] AS R
WHERE R.[Date_Calendrier] Between
Format([Forms]![F_Agenda]![DateDebut],"mm/dd/yyyy")
And Format([Forms]![F_Agenda]![DateFin],"mm/dd/yyyy");
1 2 3