Variable en entrée pour une requête SQL
Bonjour à tous,
J'aurais un nouveau besoin aujourd'hui.
J'ai fait une requête SQL avec 3 variables.
Je souhaiterais pouvoir la transférer dans EXCEL pour avoir 3 cellules ou les gens de mon équipe qui ne connaissent pas SQL pourraient rentrer les 3 variables qui serviront à la requête.
Si j'ai bien compris, dans le code VB il me faut une connection à la base de donnée.
Mais après je ne sais pas ou je dois mettre la requête SQL et je ne sais pas comment faire les boites de dialogue pour y mettre les variables.
Est ce que l'un d'entre vous sait faire ce genre de chose ?
Merci beaucoup
Cordialement
Bylbo
Bonjour,
En effet, c'est faisable.
Pour commencer, pour le script de connexion il faudrait savoir sur quelle base la requête est lancée : Access, Mysql, Dbase, FoxPro, fichier Excel, ...?
Ensuite, ce serait facilitant si tu donnais ta requête et si tu précisais quelles sont les données qui doivent être variables.
Enfin, il serait bien de savoir où tu souhaites écrire le résultat de la requête.
@+
Pierre
Bonjour,
Pour ce qui est de la connection c'est à une Dbase.
Ma requête:
SELECT O.OPERATION_NAME, O.LAYERNAME, O.LAYERNUMBER, O.INDEXATION, S.SCENARIO_NAME, B.BRICK_NAME
FROM OPERATION O,BRICK_LEVEL_SPEC BLS, SCENARIO S, BRICK B
WHERE O.LAYERNAME = '1ere VARIABLE'
AND O.LAYERNUMBER = 2eme VARIABLE
AND BLS.OPERATION_ID = O.OPERATION_ID
AND BLS.SCENARIO_ID = S.SCENARIO_ID
AND BLS.BRICK_ID = B.BRICK_ID
AND S.SCENARIO_NAME = '3eme VARIABLE'
Le résultat je voudrais l'avoir dans la feuille EXCEL ou les personnes rentrent les variables.
Merci pour ton aide.
Cordialement
Bylbo
Ok,
Pour la démo jointe (codée au plus simple) j'ai supposé :
* que les champs O.LAYERNAME et S.SCENARIO_NAME sont de type 'texte'
* que le champs O.LAYERNUMBER est de type 'numérique'
* que le fichier excel était dans le même dossier que les fichiers .dbf (sinon, il faut adapter la contante 'Data_rep' au début du code)
La requête est 'traduite' dans la function Get_List
Les 3 données variables sont à saisir en B1, B2 et B3, et l'opérateur clique sur 'Go'.
Le résutat de la recherche s'affiche à partir de la ligne 6 de la feuille courante.
Les entêtes de la ligne 5 peuvent être modifiées.
Une nouvelle recherche efface le résultat de la recherche précédente.
Après éventuellement, on pourra ajouter une fenêtre pour choisir les items dans des listes déroulantes par exemple.
On peut aussi proposer de ne saisir que les premiers caractères des champs texte avec l'opérateur LIKE dans la requête, du genre :
" WHERE O.LAYERNAME LIKE'" & NAME & "%'"
On peut aussi 'optimiser' la recherche en forçant la casse en majuscule, du genre :
" WHERE UCASE(O.LAYERNAME) LIKE'" & UCASE(NAME) & "%'"
Bien sûr ici le code est non testé puisque je ne dispose pas des .dbf
(Si ce sont des fichiers FoxPro, il suffira de changer la 'ConnectionString')
Bons tests
Pierre
Bonjour,
Tu as parfaitement ciblé ma demande, c'est exactement ce qu'il me faut.
Le hic c'est que je pensais me connecter facilement à la base de donée est ce n'est pas le cas.
Est ce que vous pouvez m'aider ?
Il faut que je me connecte à une base SAFIR10G (je ne sais pas si ça vous parle)
Ah, ça ressemble à du Oracle
Il faut essayer de se connecter avec ce driver-ci :
Cnx.Open "Driver={Microsoft ODBC for Oracle};Server=OracleServer.world;Uid=Identifiant;Pwd=MotDePasse;"
En revanche, je n'ai pas d'expérience avec les bases Oracle, je ne peux pas en dire plus.
Pierre
bonjour à tous,
aujourd'hui mon fichier me permet de rentrer mes variables en colonne, et je voudrais pouvoire les rentrer en ligne.
A l'heure actuelle je rentre mes variables en B1,B2 et B3, ce qui donne le code suivant:
Sub GO()
Dim lig As Long
With ActiveSheet
lig = .Range("A" & Rows.Count).End(xlUp).Row
If lig > 5 Then .Range("A6:F" & lig).ClearContents
If Not .Range("B1") = "" And Not .Range("B2") = "" And Not .Range("B3") = "" Then
lig = Get_List(.Range("B1"), .Range("B2"), .Range("B3"))
End If
End With
End Sub
Ce que je voudrais c'est pouvoir entrer mes variables en ligne soit en A2,B2 et C2 afin de pouvoir faire de simple copier coller à partir d'un autre fichier.
Pouvez vous me dire ce qu'il faut changer dans le code car je n'y arrive pas.
Merci pour votre aide.
Cordialement
Bylbo