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

426requete.xlsm (21.14 Ko)

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

Rechercher des sujets similaires à "variable entree requete sql"