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 04/08/2011, 10h02   #1
Membre actif
 
Homme David
Inscription : septembre 2007
Messages : 353
Détails du profil
Informations personnelles :
Nom : Homme David
Localisation : France

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : septembre 2007
Messages : 353
Points : 195
Points : 195
Par défaut le QBE n'en fait qu'à sa tête

Bonjour,

je fais suite à mon post d'hier
http://www.developpez.net/forums/d11...uete-mode-sql/

sur un sujet un peu différent mais qui concerne le QBE

Je viens de remarquer q'une de mes requêtes ne donnait plus le résultat attendu.
Mince alors, qu'ai-je modifié?
Et bien moi rien, mais Access qqc!!
En fait d'une requête qu'il ne sait pas afficher en mode création, il la modifie à sa convenance pour qqc qu'il sait faire!
donc de ça
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT valeur.ctl_id, 
       valeur.val_id, 
       valeur.val_heure, 
       valeur.val_mg, 
       valeur.val_mp, 
       valeur.val_cell, 
       valeur.val_fpd, 
       COUNT(rang.val_id) AS rang 
FROM   tbl_valeur_val AS valeur 
       LEFT JOIN tbl_valeur_val AS rang 
         ON ( valeur.ctl_id = rang.ctl_id 
              AND rang.val_heure <= valeur.val_heure ) 
GROUP  BY valeur.ctl_id, 
          valeur.val_id, 
          valeur.val_heure, 
          valeur.val_mg, 
          valeur.val_mp, 
          valeur.val_cell, 
          valeur.val_fpd 
ORDER  BY valeur.ctl_id, 
          valeur.val_heure;
Access me le transforme en ça
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT valeur.ctl_id, 
       valeur.val_id, 
       valeur.val_heure, 
       valeur.val_mg, 
       valeur.val_mp, 
       valeur.val_cell, 
       valeur.val_fpd, 
       COUNT(rang.val_id) AS rang 
FROM   tbl_valeur_val AS valeur 
       LEFT JOIN tbl_valeur_val AS rang 
         ON  valeur.ctl_id = rang.ctl_id 
GROUP  BY valeur.ctl_id, 
          valeur.val_id, 
          valeur.val_heure, 
          valeur.val_mg, 
          valeur.val_mp, 
          valeur.val_cell, 
          valeur.val_fpd 
ORDER  BY valeur.ctl_id, 
          valeur.val_heure;
ce qui ne donne pas du tout la même chose ==> plus de classement !!

donc surtout ne pas ouvrir la requête en mode création!! ce qui n'est pas possible directement à partir du volet de navigation!!
damalaan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 10h49   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
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 415
Points : 4 446
Points : 4 446
hé hé oui,

Code sql :
1
2
         ON ( valeur.ctl_id = rang.ctl_id 
              AND rang.val_heure <= valeur.val_heure )

jointure avec inégalité tout à fait valide en SQL mais non interprétable par le QBE d'Access qui explose tout .

Dans ton cas tu dois pouvoir faire une sous-requête supplémentaire et mettre l'inégalité dans une condition WHERE, ce qui rendrait la requête interprétable par le QBE.

Sinon, à réserver plutôt pour des requêtes programmées en VBA.

EDIT :
Sans garantie, essaye en remplaçant :
Code sql :
1
2
3
4
FROM   tbl_valeur_val AS valeur 
       LEFT JOIN tbl_valeur_val AS rang 
         ON ( valeur.ctl_id = rang.ctl_id 
              AND rang.val_heure <= valeur.val_heure )

Par :
Code sql :
1
2
3
4
5
6
7
FROM tbl_valeur_val AS valeur
LEFT JOIN 
(
  SELECT ctl_id FROM tbl_valeur_val AS rang
	WHERE rang.val_heure <= valeur.val_heure
) AS T
ON valeur.ctl_id = T.ctl_id
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h27.


 
 
 
 
Partenaires

Hébergement Web