problème requête SQL VBA [resolu]

  • Auteur de la discussion teamrenault
  • Date de début

teamrenault

Nouveau membre
Salut à tous, j'ai un petit concernant l'exécution de ma requête SQL qui interroge ma base ACCESS

Parmis les modèles de véhicule que je recherche j'ai la KIA CEE'D mais comme vous pouvez le constater dans CEE'D il y a un ' donc dans ma requête.... il n'arrive pas à trouver ce modèle

l'erreur qu'il m'indique est : Erreur de syntaxe (opérateur absent) dans l'expression '(((MARQUE.Marque)='KIA') AND ((MODELE.Modele)='CEED'D') AND ((GENRE.Genre)='VP'));'

le ' pose problème. Alors comment éviter qu'il ne prenne ce ' comme une balise.

Voici le code

[cpp]
For J = 35000 To 36000
'On Error Resume Next
'Requête SQL2
val = Sheets("IMMATs Modèle VP").Range("C" & J).Text
val2 = Sheets("IMMATs Modèle VP").Range("D" & J).Text
val3 = Sheets("IMMATs Modèle VP").Range("E" & J).Text
strSql = "SELECT DISTINCT Modele.Id_Modele FROM Genre INNER JOIN (MARQUE INNER JOIN Modele ON MARQUE.Id_Marque = Modele.Id_Marque) ON Genre.Id_Genre = Modele.Id_Genre WHERE (((MARQUE.Marque)=" & "'" & val & "'" & ") AND ((Modele.Modele)=" & "'" & val2 & "'" & ") AND ((Genre.Genre)=" & "'" & val3 & "'" & "));"

'Ouverture du jeu d'enregistrements.
Set rst = New ADODB.Recordset

'Paramètres de Résultat de la Requête
With rst
.Open Source:=strSql, _
ActiveConnection:=cn, _
CursorType:=adOpenForwardOnly, _
LockType:=adLockReadOnly
End With
[/cpp]

Merci d'avance pout votre aide
 

zeb

Modérateur
Double-là.
Code:
(((MARQUE.Marque)='KIA') AND ((MODELE.Modele)='CEED'D') AND ((GENRE.Genre)='VP'));
Beurk. C'est bien de l'ACCESS ça.

Là, c'est mieux
Code:
...WHERE ... 
      MARQUE.Marque = 'KIA' 
  AND MODELE.Modele = 'CEED''D'
  AND GENRE .Genre  = 'VP' ;
 

teamrenault

Nouveau membre
Double-là.
Code:
(((MARQUE.Marque)='KIA') AND ((MODELE.Modele)='CEED'D') AND ((GENRE.Genre)='VP'));
Beurk. C'est bien de l'ACCESS ça.

Là, c'est mieux
Code:
...WHERE ... 
      MARQUE.Marque = 'KIA' 
  AND MODELE.Modele = 'CEED''D'
  AND GENRE .Genre  = 'VP' ;

Oui je te confirme c'est bien de l'Access mais bon on fait avec les moyens du bord :lol:

Sinon pour ta solution c'est bien mais je ne peux pas l'utiliser car je récupérère automatiquement le modèle CEE'D à l'aide du code
[cpp]
val2 = Sheets("IMMATs Modèle VP").Range("D" & J).Text => qui retourne direcement CEE'D
[/cpp]

Donc je peux pas rajouter des ' dans ma requête puisqu'elle se génère toute seule
 

kiki29

Habitué
Passer par une fonction du style
[fixed]
Function DoubleQuote(ByVal txt As String) As String
DoubleQuote = Replace(txt, "'", "''")
End Function
[/fixed]
 

teamrenault

Nouveau membre
ah voilà c'est ça que je cherchais. Merci kiki29. Je viens de changer mon code et sa fonctionne à merveille.

Merci encore pour votre aide et votre réactivité ;)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 120
Membres
1 586 398
Dernier membre
mookie767
Partager cette page
Haut