FORUM Tom's Hardware » Programmation » VB / VBA / VBS » problème requête SQL VBA [resolu]
 

problème requête SQL VBA [resolu]

79 utilisateurs inconnus
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : problème requête SQL VBA [resolu]
 
Plus d'informations

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
 

Code :
  1. For J = 35000 To 36000
  2.     'On Error Resume Next
  3.     'Requête SQL2
  4.     val = Sheets("IMMATs Modèle VP" ).Range("C" & J).Text
  5.     val2 = Sheets("IMMATs Modèle VP" ).Range("D" & J).Text
  6.     val3 = Sheets("IMMATs Modèle VP" ).Range("E" & J).Text
  7.     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 & "'" & " ));"
  8.     'Ouverture du jeu d'enregistrements.
  9.     Set rst = New ADODB.Recordset
  10.     'Paramètres de Résultat de la Requête
  11.     With rst
  12.         .Open Source:=strSql, _
  13.         ActiveConnection:=cn, _
  14.         CursorType:=adOpenForwardOnly, _
  15.         LockType:=adLockReadOnly
  16.     End With


 
Merci d'avance pout votre aide


Message édité par teamrenaul t le 25-05-2007 à 13:38:17

zeb
Profil : Modérateur libre
Plus d'informations

Double-là.

Code :
  1. (((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 :
  1. ...WHERE ...
  2.       MARQUE.Marque = 'KIA'
  3.   AND MODELE.Modele = 'CEED''D'
  4.   AND GENRE .Genre  = 'VP' ;

Message cité 1 fois
Message édité par zeb le 25-05-2007 à 11:48:45

---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

a écrit :

Double-là.

Code :
  1. (((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 :
  1. ...WHERE ...
  2.       MARQUE.Marque = 'KIA'
  3.   AND MODELE.Modele = 'CEED''D'
  4.   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  

Code :
  1. val2 = Sheets("IMMATs Modèle VP" ).Range("D" & J).Text           => qui retourne direcement    CEE'D


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

Plus d'informations

Passer par une fonction du style


Function DoubleQuote(ByVal txt As String) As String
    DoubleQuote = Replace(txt, "'", "''" )
End Function        

Plus d'informations

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é  ;)


Aller à :
Ajouter une réponse
  FORUM Tom's Hardware » Programmation » VB / VBA / VBS » problème requête SQL VBA [resolu]
 

Annonces Google
Publicité