Requete sql avec variable dans cellule excel

DIM72

XLDnaute Nouveau
Bonjour,

Dans Excel je fais une requête sur oracle dont la table T2."VMDD" est une table de dates.

Je voudrais extraire des données en fonction d'une date de début en A1 de ma feuille excel et une date de fin en A2.

Je suis arrivé à la requête ci- jointe mais celle-ci ne marche pas et je n'arrive pas à comprendre pourquoi. Dans mes cellules A1 et A2 je mets la date sous le format 2011-09-01.

Code:
select T1."PATNUM" "c1", T1."PATNOMP" "c2", T1."PATCONF" "c3", T2."VMDD" "c4"   from "HVSEJ" T2, "HVIPAT" T1   where T1."PATNUM"=T2."PATNUM" and T2."VMDD">= BETWEEN TO_DATE('" & [A1] & "','YYYYMMDD')AND TO_DATE('" &[A2] & "','YYYYMMDD')

Merci de votre aide.
 

Theze

XLDnaute Occasionnel
Re : Requete sql avec variable dans cellule excel

Bonjour,

Dans un premier temps, j'éviterai le formatage des dates afin de simplifier la requête, une fois que celle-ci fonctionne tu pourras formater. Je n'ai pas testé mais regarde ce qui suit. Les dates devant être encadrées de dièses #08/09/2011# :
Code:
SQL = "SELECT T1.PATNUM, T1.PATNOMP, T1.PATCONF, T2.VMDD FROM T1, T2 WHERE T1.PATNUM=T2.PATNUM AND T2.VMDD>= BETWEEN #" & [A1] & "# AND #" & [A2] & "#;"

Hervé.
 

Theze

XLDnaute Occasionnel
Re : Requete sql avec variable dans cellule excel

Oups,

Avec BETWEEN les symboles de comparaison ne sont pas nécessaires (>=) puisque cette commande SQL permet d'inclure les bornes :
Code:
Dim SQL As String
SQL = "SELECT T1.PATNUM, T1.PATNOMP, T1.PATCONF, T2.VMDD FROM T1, T2 WHERE T1.PATNUM=T2.PATNUM AND T2.VMDD BETWEEN #" & [A1] & "# AND #" & [A2] & "#;"

Hervé.
 

DIM72

XLDnaute Nouveau
Re : Requete sql avec variable dans cellule excel

Bonjour et merci de ton aide, excuses moi de ne pas t'avoir répondu plus tôt mais ce matin c'était impossible avec le boulot.

Pour le > je l'avais vu mais trop tard; avec tes solutions j'ai encore deux problèmes: avant le Select je ne peux rien écrire car la réponse excel, est que je ne peux pas faire la requete; et si je prends ta solution après BETWEEN, j'ai toujours la même réponse que moi: il existe une erreur dans la requête. Nous devons pourtant pas être loin de la solution mais il reste un détail qui foire.

Que faire.

Encore merci pour ton aide.
 

Jam

XLDnaute Accro
Re : Requete sql avec variable dans cellule excel

Salut Theze, DIM72,


La grosse difficulté des requêtes SQL en VBA notamment quand on utilise des dates est de s'assurer qu'elles sont correctement écrites et utilisées...par exemple as-tu essayé avec juste une date histoire d'être certain que ce n'est pas le format de date qui pose problème. J'ai vu qu'en certaines occasions il fallait passer les dates au format YYYY/MM/DD pour que cela fonctionne. Peut-être que c'est sur ce point. Enfin l'utilisation de parenthèses ou de guillemets simples peut-être nécessaire dans certains cas aussi.
As-tu vérifié (via la fenêtre de débogage par exemple) que la variable donnait bien la bonne requête ? Puis en la testant sous Oracle directement si tu en as la possibilité (via des outils comme Toad ou autre requêteur SQL) ?

Voici quelques pistes de réflexion...ne perd pas courage, j'ai passé récemment 2 jours à essayer de comprendre pourquoi l'interrogation d'une procédure stockée avec des caractères spéciaux en Access fonctionnait correctement sous Access et pas via SQL/ADO...il fallait utiliser le % au lieu de *.... :p

Bon courage,
 

Theze

XLDnaute Occasionnel
Re : Requete sql avec variable dans cellule excel

Bonjour,

Comme le dit jam, c'est le format de date qui pose problème et après quelques bidouilles je suis arrivé à récupérer les valeurs sur une base Access de cette façon en utilisant la fonction Format() Attention, pour le test mes dates sont en F1 et F2 et les données sont récupérée à partir de A1 (Worksheets(NomFeuille).[A1].CopyFromRecordset Rs) plus simple pour mon test, à voir sur ta base Oracle avec seulement la chaine SQL qui est dans mon code :
Code:
Private Sub ConnecterClasseur(ConnectCL As Object, _
                              Classeur As String, _
                              Optional Rs)


    Set ConnectCL = CreateObject("ADODB.Connection")
    
    If Not IsMissing(Rs) Then
    
        Set Rs = CreateObject("ADODB.Recordset")
        
    End If
    
    ConnectCL.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                   "Data Source=" & Classeur & ";" & _
                   "Extended Properties=""Excel 8.0;HDR=NO;IMEX=2;"""

End Sub
Private Sub ConnecterBase(ConnectBD As Object, _
                          FichierBase As String, _
                          Optional Rs)

    Set ConnectBD = CreateObject("ADODB.Connection")
    
    If Not IsMissing(Rs) Then
        Set Rs = CreateObject("ADODB.Recordset")
    End If
    
    With ConnectBD
    
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        
        .ConnectionString = FichierBase
        .Open
        
    End With


End Sub


Private Sub Importer()

    Dim ConnectClasseur As Object
    Dim ConnectBase As Object
    Dim Rs As Object
    Dim Base As String
    Dim Classeur As String
    Dim NomFeuille As String
    Dim SQL As String
    
    SQL = "SELECT T1.PATNUM, T1.PATNOMP, T1.PATCONF, T2.VMDD FROM T1, T2 WHERE " & _
    "T1.PATNUM=T2.PATNUM AND T2.VMDD BETWEEN #" & Format([F1], "yyyy/mm/dd") & "# AND #" & Format([F2], "yyyy/mm/dd") & "#;"
    
    Base = "D:\Base de données1.mdb"
    Classeur = "D:\Classeur2.xls"
    
    NomFeuille = "Feuil1"
    
    ConnecterBase ConnectBase, Base, Rs
    ConnecterClasseur ConnectClasseur, Classeur
    
    With Rs
    
        .CursorType = 1
        .LockType = 3
        .Open SQL, ConnectBase
        Worksheets(NomFeuille).[A1].CopyFromRecordset Rs
        
    End With
    
    ConnectBase.Close
    ConnectClasseur.Close
    
    Set ConnectBase = Nothing
    Set ConnectClasseur = Nothing
    Set Rs = Nothing

End Sub

Hervé.
 

DIM72

XLDnaute Nouveau
Re : Requete sql avec variable dans cellule excel

Bonjour,

Merci à tous pour toutes ces suggestions; j'ai essayé ta dernière solution mais il reste toujours une erreur. Je continue de chercher et si je trouve, je donne tout de suite la solution qui pourrait servir à un autre.

Encore un grand merci pour votre aide
 

Discussions similaires

Statistiques des forums

Discussions
314 628
Messages
2 111 341
Membres
111 107
dernier inscrit
cdel