Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 28/10/2011, 11h30   #1
Membre habitué
 
Inscription : janvier 2005
Messages : 527
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 527
Points : 134
Points : 134
Par défaut Requete en sql fonctionne mais pas en vba

Bonjour à tous,

Je suis toujours sur mon formulaire de recherche multi critères. Selon les cases cochées, la partie "where" s'agrandit. Mon problème vient d'un compte avec having. Tout fonctionne bien sans le having.

En sql, ma requête fonctionne.
Code :
1
2
3
4
5
6
 
SELECT IdInterne
FROM MyTable
WHERE year(Mydate)=2011  and ( month(Mydate)=1 Or month(Mydate)=4 )
GROUP BY IdInterne
HAVING sum(iif(E1="Oui",1,0)+ iif(E2="Oui",1,0)+ iif(E3="Oui",1,0)+ iif(E4="Oui",1,0)+ iif(E5="Oui",1,0)+iif(E6="Oui",1,0)) > 1;
En vba, ça ne marche plus.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Public Sub RefreshQuery()
 Dim SQL As String
 Dim SQLNb As String
 
 SQL = "SELECT IdInterne FROM MyTable Where year(Mydate)=2011 "
 
 /* ... */
 
 SQLNb = SQL _
& " group by IdInterne _
HAVING sum(iif(E1=""Oui"",1,0)+ iif(E2=""Oui"",1,0)+ iif(E3=""Oui"",1,0) _
+ iif(E4=""Oui"",1,0)+ iif(E5=""Oui"",1,0)+ iif(E6=""Oui"",1,0)) > 1;"

Le message d'erreur: erreur de syntaxe (mes 4 dernières lignes sont mises en rouge).

Sauriez-vous d'où provient l'erreur ?
Merci de votre aide.
debdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 11h35   #2
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Bonjour,

Tu utilises "_ &" au lieu de "& _" et tu construis mal ta chaine de caractères. Les _ doivent être hors de ta string. Essaie plutôt comme ça :

Code :
1
2
3
4
SQLNb = SQL & _
" group by IdInterne " & _
"HAVING sum(iif(E1=""Oui"",1,0)+ iif(E2=""Oui"",1,0)+ iif(E3=""Oui"",1,0) " & _
"+ iif(E4=""Oui"",1,0)+ iif(E5=""Oui"",1,0)+ iif(E6=""Oui"",1,0)) > 1;"
ça devrait fonctionner un peu mieux !

Cordialement,
Beub'.
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 11h54   #3
Rédacteur/Modérateur
 
Avatar de GAYOT
 
Homme Jean-Damien GAYOT
Inscription : novembre 2004
Messages : 2 075
Détails du profil
Informations personnelles :
Nom : Homme Jean-Damien GAYOT
Âge : 56
Localisation : France, Meuse (Lorraine)

Informations professionnelles :
Secteur : Distribution

Informations forums :
Inscription : novembre 2004
Messages : 2 075
Points : 4 391
Points : 4 391
Envoyer un message via Skype™ à GAYOT
Bonjour
Attention aux doubles quotes. Il vaut mieux les remplacer par des simples:
Code :
1
2
3
4
SQLNb = SQL & _
" group by IdInterne " & _
"HAVING sum(iif(E1='Oui',1,0) + iif(E2='Oui',1,0) + iif(E3='Oui',1,0) " & _
" + iif(E4='Oui',1,0) + iif(E5='Oui',1,0) + iif(E6='Oui',1,0)) > 1;"
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!.

Tutoriels sur:http://jdgayot.developpez.com

Pas de sujets techniques par Mp. Sinon
GAYOT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 13h49   #4
Membre habitué
 
Inscription : janvier 2005
Messages : 527
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 527
Points : 134
Points : 134

MERCI

Citation:
tu construis mal ta chaine de caractères. Les _ doivent être hors de ta string
> ah oui, effectivement, j'avais mal compris, je pensais que le _ permettait d'aller à la ligne pour continuer à écrire son code, donc pour moi, c'était comme si j'écrivais ma requête sur une ligne (d'où l'absence de guillemets à chaque ligne)

Citation:
Attention aux doubles quotes. Il vaut mieux les remplacer par des simples
> OK. Merci du conseil.Au départ, j'avais mis les simples quotes et j'ai cru que mon problème venait de là. Donc j'ai mis les doubles que j'ai elles memes doublées pour ne pas que ma string s'arrete en cours de route !

Merci pour votre aide !
Bonne fin de journée et bon week end !
debdev 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 09h07.


 
 
 
 
Partenaires

Hébergement Web