Requête sql et paramètre [Résolu]

Signaler
Messages postés
3
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
-
Messages postés
3
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008
-
Bonjour,

  Je suis débutant en VBA pour Access. J'ai un souci sur une syntaxe SQL, dans le code ci dessous :

Dim R2 As Integer
R2 = InputBox("Veuillez entrer le N° de fiche.")
  
Dim db As DAO.Database, SQL As String
Dim Enreg As Recordset

  Set db = CurrentDb  SQL "SELECT [Cause], [Type_Cause] FROM TABLE_CAUSES WHERE ID_Risque ''&R2&'' "
  Set Enreg = db.OpenRecordset(SQL)

-------------------------------------------------------------------------------------------

En fait le souci vient de la ligne SQL = ... car quand je remplace "&R2&" par un entier (1 ou 2 par exemple) ça marche.

QQ'un peut m'aider svp?

nebud

2 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut
Dans ta syntaxe, prends soin de mettre un espace devant et derrière les symboles de concaténation &
   "... WHERE ID_Risque = '' & R2 & '' "
... et en recopiant la ligne et en la mettant en forme, je m'aperçois que ce n'est pas un " mais deux ' que tu as utilisé. Pas glop :
-1- R2 est un Integer. Les règles de l'art veulent que tu précises la conversion Chiffre - Texte au lieu de laisser faire le VBA car, quelque fois, on a des surprises --> Utilisation de CStr
De plus, quand on concatène un chiffre à du texte, le format de ce texte conserve un espace devant (pour un éventuel signe moins) : cela peut perturber la compréhension du moteur SQL
-2- Tu veux insérer une variable, R2, dans une chaine de caractères.
Comme je suppose que ID_Risque est numérique, la donnée associée (en SQL) ne doit pas comporter d'encadrement, donc pas de ' devant ni derrière.
-3- Une chaine VB s'encadre avec des "
Il faut donc terminer la variable VB chaine, puis y ajouter derrière ta variable R2

Ce qui donne
   "... WHERE ID_Risque = " & CStr(R2)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
3
Date d'inscription
mardi 5 février 2008
Statut
Membre
Dernière intervention
16 décembre 2008

Salut!

  Merci pour la syntaxe et les explications, ça marche!

nebud