IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

VB + Excel + SQL + Soucis requête avec des dates


Sujet :

Excel

  1. #1
    Invité
    Invité(e)
    Par défaut VB + Excel + SQL + Soucis requête avec des dates
    Bonjour,

    Je vous explique mon petit soucis. Je me connecte, via VB sous Excel, à une base de données SQL Server.

    J'ai une requête que je n'arrive pas à faire tourner (sachant qu'une requête plus simple type select * passe sans soucis).

    La requête fonctionne bien sous SQL Excel et sous le SQL Server, mais elle ne semble pas passer sous VBA.

    Excel semble ne pas envoyer mes requêtes correctement quand il y a des dates dedans.

    Si par exemple je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT aaa FROM matable WHERE aaa >= '2007-01-01' AND bbb = 'valeur'
    Ca fonctionne.

    Mais si je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT aaa FROM matable WHERE (aaa >= '2007-01-01' AND aaa <= '2007-03-30') AND bbb = 'valeur'
    Ou ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT aaa FROM matable WHERE (aaa BETWEEN '2007-01-01' AND '2007-03-30') AND bbb = 'valeur'
    Ca ne marche plus. Quand j'utilise plusieurs dates en fait.

    Sachant qu'en fait j'ai une variable du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Requete As String.
    Requete = "SELECT blablablabla ..."
    Une idée sur la mise en forme à adopter ?

    Pour information j'ai l'erreur suivante :

    Erreur d'exécution '-2147217913 (80040e07)':
    Erreur Automation



    Edit : Alors grande découverte dans Excel, si je change une date ça fonctionne, donc j'aurai éventuellement un problème de formatage quelque part ?

    Si je mets ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT aaa FROM matable WHERE (aaa BETWEEN '2006-01-01' AND '2006-12-10') AND bbb = 'valeur'
    Ca ne fonctionne pas, mais si je mets ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT aaa FROM matable WHERE (aaa BETWEEN '2006-01-01' AND '2007-01-01') AND bbb = 'valeur'
    Ca fonctionne ! Même si je n'ai aucune valeur au 31/12/2006 et au 01/01/2007 !!

    Là je suis COMPLETEMENT perdu :p !
    Dernière modification par Invité ; 11/03/2009 à 16h13.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Pour les dates, il faut inverser le jour et le mois:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Sub essaiDate()
        'cocher Microsoft DAO 3.6 dans Outils/Références
        Dim début As Date, fin As Date
        Dim bd As Database
        Dim rs As Recordset
        Set bd = OpenDatabase(ActiveWorkbook.Path & "\access2000.mdb")
        début = #5/21/1970#
        fin = #6/21/1970#
        Sql = "Select * From Client Where dateNaiss>=" & ConvDate(début) & " AND dateNaiss<=" & ConvDate(fin)
        Set rs = bd.OpenRecordset(Sql)
        i = 2
        Do While Not rs.EOF
            Cells(i, 1) = rs!Nom_Client
            Cells(i, 2) = rs!Ville
            Cells(i, 3) = rs!Salaire
            Cells(i, 4) = rs!datenaiss
            rs.MoveNext
            i = i + 1
        Loop
    End Sub
     
    Function ConvDate(MaDate As Date) As String
      ConvDate = "#" & Month(MaDate) & "/" & Day(MaDate) & "/" & Year(MaDate) & "#"
    End Function
    JB

  3. #3
    Invité
    Invité(e)
    Par défaut
    En fait c'était même la date entière qu'il fallait inverser !

    Quand je faisais une requête via SQL Excel ça mettait AAAA-MM-JJ mais en fait pour que ça fonctionne sous Excel AVEC DEUX DATES il fallait que je mette JJ/MM/AAAA (comme c'est écrit dans les champs en fait).

    Du coup là où c'est bizarre c'est qu'avec une seule date je n'avais pas de soucis de format ... des fois il ne faut pas trop chercher à comprendre

Discussions similaires

  1. SQL contruire une requête avec des dates d'applications
    Par fredodeveloppeur dans le forum Langage SQL
    Réponses: 1
    Dernier message: 15/04/2013, 02h24
  2. Requête avec des dates
    Par Daviloppeur dans le forum Requêtes
    Réponses: 3
    Dernier message: 28/05/2010, 12h28
  3. Requête avec des dates
    Par Danielle80 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 04/11/2007, 12h57
  4. requête avec des dates
    Par brigdid dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/06/2007, 09h22
  5. SQL Requête avec des dates
    Par dahu29 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/03/2006, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo