Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1355 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Variable dans macro Excel et requête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable dans macro Excel et requête SQL

n°1542031
Evora
Posté le 12-04-2007 à 15:25:47  profilanswer
 

Bonjour,
 
J'ai un classeur Excel avec deux feuilles. Sur la feuil2-cel B4, je saisis un numéro d'article
(alpha-numérique)
 
Un bouton qui lance une macro quand on clique dessus.
 
Cette macro lance une requête sur une base sql et ramène les données sur toutes les commandes
concernant le code article saisi en Feuil2-cel B4 (ex : 09200)
 
La valeur saisie, je la passe en variable dans la macro, quand je clique sur le bouton pour lancer
la macro, aucune donnée n'est ramenée et aucun message d'erreur.
 
Si je mets le code article 'en dur' dans la requête, la j'ai les informations qui sont importées
correctement de la base sql.
 
OS : Win2K + SqlServer 2K
 
Qui peut m'aider ??
 
 
Ma macro :
-------------------------------------------
Sub Macro1()
 
Dim env As rdoEnvironment
Dim valcel As String
valcel = Excel.Range("Feuil2!B4" ).Value
 
Dim cnBat As ADODB.Connection
Set cnBat = New ADODB.Connection
 
Dim strConn As String
strConn = "PROVIDER=SQLOLEDB;"
strConn = strConn & "DATA SOURCE=curie;UID=sa;PWD=holdup;DATABASE=spca_prod"
cnBat.Open strConn
 
 
'------------------
Dim rsBat As ADODB.Recordset
Set rsBat = New ADODB.Recordset
 
With rsBat
     .ActiveConnection = cnBat
     .Open "select codeart,numcde,totht
               from cdes  
               where codeart=' & valcel'"
     Feuil1.Range("A2" ).CopyFromRecordset rsBat
     
    .Close
End With
 
cnBat.Close
Set rsBat = Nothing
Set cnBat = Nothing
 
End Sub
 
'-------------------------------
 
 
Merci à vous....
 

mood
Publicité
Posté le 12-04-2007 à 15:25:47  profilanswer
 

n°1542034
MagicBuzz
Posté le 12-04-2007 à 15:30:26  profilanswer
 

"09200" <- quand tu saisis ça, sous excel, il détecte un nombre. il vire donc le 0. le "=" dans la requête porte donc sur "9200", qui n'existe pas.
 
essaie de changer le format de la cellule en "texte" (ou saisi '09200) pour voir.
 
ps : pour le reste, mise à part que ton code n'est pas du tout protégé contre les SQL Injection, ça peut aller, effectivement ça devrait marcher

Message cité 1 fois
Message édité par MagicBuzz le 12-04-2007 à 15:31:06
n°1542042
Evora
Posté le 12-04-2007 à 15:36:02  profilanswer
 

MagicBuzz a écrit :

"09200" <- quand tu saisis ça, sous excel, il détecte un nombre. il vire donc le 0. le "=" dans la requête porte donc sur "9200", qui n'existe pas.
 
essaie de changer le format de la cellule en "texte" (ou saisi '09200) pour voir.
 
ps : pour le reste, mise à part que ton code n'est pas du tout protégé contre les SQL Injection, ça peut aller, effectivement ça devrait marcher


 
-----------------------
Merci de ta réponse,
 
La cellule est deja en texte et je récupère bien la valeur '09200' au niveau de la variable.
Si je mets dans la procédure la commande suivante :
Excel.Range("Feuil2!B10" ).Value = valcel
La valeur récuperée est bien : 09200
 
Cordialement
 
...

n°1542052
MagicBuzz
Posté le 12-04-2007 à 15:42:04  profilanswer
 

chelou :spamafote:
 
ah, quoique... t'as pas plutôt un bon gros fatal error ? vire tes on error resume next que t'as collé partout si c'est pas le cas.
 
j'avais pas fait gaffe à ça :
 

Code :
  1. .Open "select codeart,numcde,totht
  2.               from cdes  
  3.               where codeart=' & valcel'"


 
faut écrire
 

Code :
  1. .Open "select codeart,numcde,totht " &_
  2.               "from cdes  " &_
  3.               "where codeart='" & valcel & "'"

n°1542073
Evora
Posté le 12-04-2007 à 16:00:38  profilanswer
 

MagicBuzz a écrit :

chelou :spamafote:
 
ah, quoique... t'as pas plutôt un bon gros fatal error ? vire tes on error resume next que t'as collé partout si c'est pas le cas.
 
j'avais pas fait gaffe à ça :
 

Code :
  1. .Open "select codeart,numcde,totht
  2.               from cdes  
  3.               where codeart=' & valcel'"


 
faut écrire
 

Code :
  1. .Open "select codeart,numcde,totht " &_
  2.               "from cdes  " &_
  3.               "where codeart='" & valcel & "'"



 
---------------
MagicBuzz t'es un magicien...  :wahoo:  
 
ça marche bien... Merci beaucoup.
 
D'autre part, quand tu marques :
'mise à part que ton code n'est pas du tout protégé contre les SQL Injection'
 
cela veut dire quoi ?
 
Encore merci et
a+

n°1542078
MagicBuzz
Posté le 12-04-2007 à 16:04:22  profilanswer
 

essaie de taper ça comme code produit :
 
a' or 1=1;--
 
je te laisse imaginer ce qu'il se passe si tu écrits "drop table cdes" entre le ; et les -- ;) (évite de le faire :o)


Message édité par MagicBuzz le 12-04-2007 à 16:04:57

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Variable dans macro Excel et requête SQL

 

Sujets relatifs
macro excel ajout d'une ligne en couleur (résolu)Requête MAX sur MySQL
[JAVA] message.properties avec variableAide sur Excel pour formule compliquée!
[excel] copier contenu d'une cellule dans un integercreer un fichier excel a partir de 3 (résolu)
Macro recherche[Excel] Définir manuellement une plage de données
VBA - macro et événements - Résolu 
Plus de sujets relatifs à : Variable dans macro Excel et requête SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR