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

Requêtes et SQL. Discussion :

Type de données incompatible dans l'expression du critère [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 67
    Points : 46
    Points
    46
    Par défaut Type de données incompatible dans l'expression du critère
    Bonjour,

    J'ai un petit soucis avec une requête que j’exécute sans problème à partir d'une BD Access. La requête fait appel à des tables liés.

    J'importe la requête dans une nouvelle BD lié aux même source et j'ai le message de type de données incompatibles dans l'expression du critère.

    Je ne comprends pas pourquoi dans la première BD elle fonctionne et dans la seconde pas ?

    Voici la requête en question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT dbo_E_Freq.Annee, dbo_E_Freq.Prog, dbo_E_MatEle.MoisSanct, Sum(Round(Right([dbo_e_matele].[Mat],1)*15/900,4)) AS ETP
    FROM (dbo_E_Freq INNER JOIN dbo_E_MatEle ON (dbo_E_Freq.Freq = dbo_E_MatEle.Freq) AND (dbo_E_Freq.Annee = dbo_E_MatEle.Annee) AND (dbo_E_Freq.Fiche = dbo_E_MatEle.Fiche)) INNER JOIN dbo_T_P_MatOpt ON (dbo_E_Freq.Prog = dbo_T_P_MatOpt.Prog) AND (dbo_E_MatEle.Mat = dbo_T_P_MatOpt.Mat)
    WHERE (((dbo_E_MatEle.Service)="1") AND ((dbo_E_Freq.IndTransm)="1") AND ((dbo_E_MatEle.IndTransm)="1") AND (([AnneeSanct] & [MoisSanct] & [JourSanct])>"20120700" And ([AnneeSanct] & [MoisSanct] & [JourSanct])<="20130131") AND ((dbo_E_Freq.SrcFinan)="01"))
    GROUP BY dbo_E_Freq.Annee, dbo_E_Freq.Prog, dbo_E_MatEle.Res, dbo_E_MatEle.MoisSanct
    HAVING (((dbo_E_MatEle.Res)<>"eq" And (dbo_E_MatEle.Res)<>"" And (dbo_E_MatEle.Res)<>"ad" And (dbo_E_MatEle.Res)<>"ab" And (dbo_E_MatEle.Res)<>"ep" And (dbo_E_MatEle.Res)<>"ex" And (dbo_E_MatEle.Res)<>"a" And (dbo_E_MatEle.Res)<>"pn" And (dbo_E_MatEle.Res)<>"0" And (dbo_E_MatEle.Res)<>"pl" And (dbo_E_MatEle.Res)<>"re"));

    Merci pour votre aide

    Pierre

  2. #2
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut gagpie,

    Citation Envoyé par gagpie
    J'importe la requête dans une nouvelle BD lié aux même source et j'ai le message de type de données incompatibles dans l'expression du critère.
    Tu veux dire que c'est la même requête, les mêmes données et donc qu'Access se trompe en t'affirmant que ce n'est pas le cas ???

    "type de données incompatibles" => ta requête n'est pas en cause : un type parmi les champs ou une condition de la requête n'est pas appropriée.
    A moins d'avoir une db corrompue, si tu ne remets pas en question ta précédente conviction : je ne vois rien à te conseiller que d'aller brûler un cierge en priant qu'Access redevienne raisonnable.

  3. #3
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut Et voila pourquoi votre fille est muette !!!
    Bonjour a Tous,
    Reponse peut-etre hors sujet mais sait-on jamais ... y trouver un point commun ?
    J'ai deja remarque que, soit apres une mise a jour via WinUpdate, soit apres transposition sur un autre ordinateiur ayant un Access 2010 frais (juste installe), soit en passant d'une V2003 a une V2007-2010,
    des parties d'une application fonctionnant parfaitement bien avant, ne fonctionnent plus apres ... d'ou ma reponse :
    Il faut verifier attentivement tous les add-in, dll et autres activex qui doivent etre coches dans le menu Outils-References de Visual Basic, et en particulier j'ai trouve un module Microsoft Access Package Solution Wizard Type.... qui a ameliore grandement le fonctionnement de requetes et autres traitements de texte utilisant les fonctions Mid$, Right$,... Date, bref tout un tas de fonctions que l'on pourrait penser appartenir au ''noyau'' de base d'Access mais qui peuvent se trouver ailleurs.
    Ne me demandez pas pourquoi mais le fait est que je coche maintenant systematiquement tous ces modules externes et que cela fonctionne beaucoup, beaucoup mieux quand je deporte une application d'une machine vers une autre ou d'une version vers une autre.
    le seul souci, c'est que c'est tres empirique ...
    alors bon vent
    Cordialement
    Caramel13

  4. #4
    Membre régulier
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2014
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 64
    Points : 94
    Points
    94
    Par défaut Suite
    Re
    Y'en a un autre module aussi que j'aime bien mettre :

    Access Developper Extensions Type Library

    Ca aide aussi !!

    A pluche
    Caramel13

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 67
    Points : 46
    Points
    46
    Par défaut Ah Bon !
    Bonjour Caramel13

    Merci pour votre réponse.

    J'y avais un peu penser que c'était mon environnement qui pourrait faire la différence.

    Où peut-on trouver ces add-in ?

    Je vais essayer ça demain.



    GAGPIE

  6. #6
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Salut Caramel13,

    permettez moi d'être septique vu qu'il n'y as pas de fonctions utilisées.
    toutefois il y a forcement une différence quelque part si ce n'est pas dans la requête ni la table effectivement il faut chercher ailleurs.

    bon courage

  7. #7
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 873
    Points : 3 459
    Points
    3 459
    Par défaut
    Bonjour gagpie,

    Une autre piste, dans les options d'Access, concepteurs d'objets, création de requête, Syntaxe compatible SQL Server (ANSI 92) peut faire une différence.

    Nom : Capture.PNG
Affichages : 7821
Taille : 93,7 Ko

    Bonne journée

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous,

    J'ai appliquée la solution de Caramel13 en ajoutant le add-in Access Runtime 2010 et l'option syntaxe compatible sql server (ansi 92) sans succès.

    Cependant, j'ai omis de préciser le fonctionnement des tables liées. J'ai un bouton qui connecte les tables de plusieurs fichier DSN. Elle sont aux nombre de 8.

    Les 8 fichiers DSN connecte sur 8 base de données qui possèdent les même tables et les même champs. C'est seulement sur un DSN que le message message apparait.

    Je peut donc déduire que ma requête fonctionne mais que pour le dsn en question, j'ai le message d'erreur.

    Peut-on penser que la bd est corrompue ?

    Doit-on réindexer la bd ou autres chose ?

    Merci

    GAGPIE

  9. #9
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    Citation Envoyé par vodiem
    un type parmi les champs ou une condition de la requête n'est pas appropriée
    ce serait bien que tu localises le champ concerné. si son type est correct (ce que je doute) et que c'est ton odbc qui fait des misères, tu peux encore forcer la conversion dans la requête vers le type attendu avec les fonctions basiques fournies :
    CByte(), CCur(), CDate(), CDbl(), CDec(), CInt(), CLng(), CSng(), CStr(), CVar()

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 67
    Points : 46
    Points
    46
    Par défaut
    Bonjour à tous,

    Merci pour vos suggestions de solution.

    J'ai remarquer que dans le champs que je calcule, il y a des données de type alphanumérique., ce qui je crois a causé l'erreur.

    J'ai donc, filtré le champ en question pour n'accepter que les nombres et ça fonctionné !!

    Y-a-t-il un paramètre dans les options d'Access qui permet d'outre passer les erreurs de ce type lors de calcule ?

    Merci

    GAGPIE

  11. #11
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    outre passer ? pas vraiment, bien que je ne trouve pas cela vraiment très propre, un Val() sur le champ en question résolverait cela.


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

Discussions similaires

  1. Requête: type de donnée incompatible dans l'expression du critère
    Par abambad dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/10/2007, 15h48
  2. Réponses: 5
    Dernier message: 31/08/2007, 13h01
  3. Réponses: 8
    Dernier message: 20/06/2007, 14h38
  4. Réponses: 7
    Dernier message: 22/08/2006, 17h10
  5. Réponses: 3
    Dernier message: 22/05/2006, 19h23

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