Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2010, 17h47   #1
Membre régulier
 
Inscription : juillet 2010
Messages : 230
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 230
Points : 82
Points : 82
Par défaut Requete Update basé sur une requete select

Bonjour,

Je souhaite mettre à jour un champ d'une table en fonction de critères particuliers. Pour cela je developpe en premier une requête Select.

Mon idée est donc d'utiliser cette requête sélect qui contient les enregistrements à mettre à jour.

je souhaite mettre à jour les enregistrements dont la date est antérieur ou égal à la date de la veille et dont le champ Second Controle = OUI.

voici le code que j'ai :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Commande94_Click()
Dim SQ As String
 
SQ = SELECT T_dossiers.IDdossier, T_controle.DateSélectionDossier, 
T_dossiers.[Second Controle] FROM T_dossiers INNER JOIN T_controle ON 
T_dossiers.IDdossier = T_controle.IDdossier GROUP BY T_dossiers.IDdossier, 
T_controle.DateSélectionDossier, T_dossiers.[Second Controle] 
HAVING (((First(T_controle.DateSélectionDossier)) <= Date - 1) 
And ((T_dossiers.[Second Controle]) = 'OUI'))
 ORDER BY First(T_controle.DateSélectionDossier)
 
DoCmd.RunSQL "UPDATE SQ SET T_dossier.[Second controle]= null
End Sub
Ma requête select est bonne. Là ou je bloque c'est comment appeler cette requete select (SQ) dans la requête Update afin de mettre à jour le champ Second Controle (remplacé OUI par rien)

Si quelqu'un pouvait m'aider sur ce point, ca m'aiderait énormément dans l'avancement de mon appli !

merci
Chagui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 19h30   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 404
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 404
Points : 4 427
Points : 4 427
salut chagui,

on ne peut pas mettre à jour un champ d'une requête avec regroupement, il va falloir ruser...

tu enregistres ta premières requête "R1",

R1:
Code sql :
1
2
3
4
5
6
7
SELECT T_dossiers.IDdossier, T_controle.DateSélectionDossier, 
T_dossiers.[Second Controle] FROM T_dossiers INNER JOIN T_controle ON 
T_dossiers.IDdossier = T_controle.IDdossier GROUP BY T_dossiers.IDdossier, 
T_controle.DateSélectionDossier, T_dossiers.[Second Controle] 
HAVING (((First(T_controle.DateSélectionDossier)) <= Date - 1) 
AND ((T_dossiers.[Second Controle]) = 'OUI'))
 ORDER BY First(T_controle.DateSélectionDossier)

puis on met à jour avec la requête:
Code sql :
1
2
UPDATE T_Dossiers SET T_Dossiers.[Second controle]= NULL
WHERE T_Dossiers.IDdossier IN (SELECT DISTINCT R1.IDdossier FROM R1)

A tester, j'ai fait vite...
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 19h34   #3
Membre régulier
 
Inscription : juillet 2010
Messages : 230
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 230
Points : 82
Points : 82
Bonjour, f-leb !!

Merci d'avoir répondu ! Les requêtes et moi c'est pas trop ça même si j'avoue m'être bcp amélioré depuis mes premiers posts !

Lorsque tu dis :
Citation:
tu enregistres ta premières requête "R1",
Je l'enregistre dans un variable ? :

dim R1 as String

R1 = .....


(edit)

J'ai parlé trop vite...

J'enregistre ma requete via access... lol On va dire que c'est la fin de journée !!

Merci à toi !!

++
Chagui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h57.


 
 
 
 
Partenaires

Hébergement Web