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

VBA Access Discussion :

Requête SQL avec date => Incompatibilité de type [AC-2002]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    Décidément, ce n'est pas mon jour...
    Maintenant que j'arrive à ouvrir ma base de données en VBA, c'est ma requête qui ne veut plus s'exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM [Table] WHERE [DATE] <= #8/28/2009# AND [DATE2] <= #8/28/2009#;", dbOpenForwardOnly, dbReadOnly)
    Erreur n°13 "Incompatibilité de type"

    J'ai essayé d'autres formats : #28/08/2009# ou #08/28/2009# c'est pareil !

    Qui peut me dire pourquoi cela ne passe pas ?
    (J'ai une autre base de données qui exécute exactement le même code sans soucis)

    Ma "[Table]" est en fait une sous-requête croisant plusieurs tables dont les champs DATE et DATE2 sont bien au format Date...

    Autre précision, si j'ouvre ma requête en mode création et que j'inscrit les critères <=#28/08/2009# cela marche ! Et en mode SQL c'est le format US qui est enregistré #8/28/2009# mais par VBA cela ne fonctionne pas

    Est-ce que les dates dans un instruction SQL d'un OpenRecordset sont interprétées différement par hasard ?

    Je ne trouve rien à ce sujet.

    Pourtant j'ai plusieurs appli Excel qui font des OpenRecordset en ADO où j'utilise bien le format date US...

    Merci d'avance.

    waici

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    CurrentDb.OpenRecordset retourne un recordset DAO. Pas ADO.
    Donc si rst est déclaré explicitement ou implicitement en tant que recordset ADO, il y a incompatibilité.

    Essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rst As DAO.Recordset
    A+

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Je tiens à rajouter que nommer un champ [Date] est une erreur, il s'agit d'un mot réservé (une fonction vb) et cela pourrait te poser de gros problèmes.

    Philippe

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 47
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonjour,

    CurrentDb.OpenRecordset retourne un recordset DAO. Pas ADO.
    Donc si rst est déclaré explicitement ou implicitement en tant que recordset ADO, il y a incompatibilité.

    Essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim rst As DAO.Recordset
    A+
    Un grand merci, c'était bien la cause de mon erreur !

    En effet, je me suis rendu compte que le message d'erreur apparaissait même sans mettre la clause WHERE sur la date...

    Dans ma déclaration, j'ai ajouté "DAO." devant Recordset et cela marche impeccablement.
    Par contre, c'est la première fois que j'ai à faire ça, j'ai beaucoup d'autres macro VBA dans Access pour lesquelles j'ai des Recordset (ADO implicitement) qui ne me posent pas de problème, de plus celle-ci fonctionnait bien avant.

    Mais là c'est vrai que j'ai une piste : cette fois ma macro est exécutée depuis une base Access (comme avant) mais cette dernière est maintenant ouverte par un exécutable VB6... c'est peut-être une raison.


    Bonjour

    Je tiens à rajouter que nommer un champ [Date] est une erreur, il s'agit d'un mot réservé (une fonction vb) et cela pourrait te poser de gros problèmes.

    Philippe
    Oui j'ai tapé "Date" pour indiquer qu'il s'agit d'un champ de type Date mais ce n'est pas le vrai nom de mon champ.


    Encore merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requéte sql avec date
    Par jules_diedhiou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/04/2009, 13h25
  2. VBS / Requête SQL avec DATE
    Par Yndigos dans le forum Interfaces de programmation
    Réponses: 6
    Dernier message: 05/09/2008, 22h47
  3. Requête SQL avec date
    Par loreleï85 dans le forum VB 6 et antérieur
    Réponses: 17
    Dernier message: 12/03/2007, 14h11
  4. Requête sql avec date en paramètre
    Par Mihalis dans le forum Bases de données
    Réponses: 1
    Dernier message: 08/03/2007, 22h29
  5. Requête SQL avec date
    Par misscricri dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 20/02/2007, 17h13

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