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

Windows Forms Discussion :

OleDB Excel, Pas de CASE WHEN ?


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut OleDB Excel, Pas de CASE WHEN ?
    Bonjour,

    J'ai beau fouiller sur le net, je ne trouve pas l'info que je cherche et qui me bloque pas mal..

    Je tente de lire un fichier Excel grace a une connexion OleDb, tout fonctionne parfaitement jusqu'a ce que je tente de mettre un CASE WHEN dans ma requete SELECT...

    J'ai tenté les syntaxes :
    'PRICE_CLOSE' = (CASE(PRICE_CLOSE) WHEN PRICE_CLOSE = 'N.A.' THEN NULL ELSE PRICE_CLOSE END)
    CASE(PRICE_CLOSE) WHEN PRICE_CLOSE = 'N.A.' THEN NULL ELSE PRICE_CLOSE END AS PRICE_CLOSE
    Pis meme d'autres que j'ai supprimé au fur et a mesure...


    Le but en fait, c'est de remplacer les N.A. qu'il y a dans le fichier Excel par NULL car ma base s'attend a avoir un integer...
    (Ce n'est pas moi qui génère le fichier Excel)

    Je tourne en rond !!!!!

    Si quelqu'un a une idée, meme pour me dire que c'est pas possible, histoire que je garde encore un peu de cheveux sur la tete, ce serait sympa !

    Merci,
    Arnaud

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par Nono3013 Voir le message
    Le but en fait, c'est de remplacer les N.A. qu'il y a dans le fichier Excel par NULL car ma base s'attend a avoir un integer...
    (Ce n'est pas moi qui génère le fichier Excel)
    Pourquoi faire un CASE ?

    Est-ce qu'un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE [Feuil1$] 
    SET PRICE_CLOSE = ''
    WHERE PRICE_CLOSE = 'N.A.'
    Ne suffirait pas ?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    Citation Envoyé par Skalp Voir le message
    Pourquoi faire un CASE ?
    Parce que je suis buté...

    Mais j'avoue que ta solution est bien plus simple, je vais essayer, et vous tiens au courant.

    Merci en tout cas

    Et sinon, pour ma culture perso, c'est pas possible le CASE ?

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par Nono3013 Voir le message
    Et sinon, pour ma culture perso, c'est pas possible le CASE ?
    Personnellement, je n'ai jamais utilisé CASE.

    SQLPro nous dit que son utilisation est déconseillée car elle dégrade les performances.
    Voir l'article LE SQL de A à Z : 2eme partie - le simple (?) SELECT et les fonctions SQL >> 7. Les branchements dans le SQL

  5. #5
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    Bon, j'ai essayé, et j'ai une erreur "Type Mismatch" dès que je mets une condition WHERE...

    J'ai fait le test dans la requete UPDATE et SELECT, et pour les 2 c'est la meme chose, si il y a un WHERE -> System.Data.OleDb.OleDbException: Data type mismatch in criteria expression.


    Je vais investiguer ca...

  6. #6
    Membre averti
    Inscrit en
    Octobre 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 14
    Par défaut
    Ben non, rien a faire, je n'arrive pas a passer un paramètre a une requete..

    J'ai tenté aussi de passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With OleDbCmd.Parameters
    .Add("@PRICE_CLOSE", OleDbType.VarChar).Value = "N.A"
    End With
    J'ai toujours ce message de Type Mismatch

    Si vous avez une idée, je suis preneur, sinon, ca va être du ligne à ligne, j'ai pas une semaine à perdre la dessus..

    Pour les utilisateurs qui vont etre victime de la lenteur, merci !

Discussions similaires

  1. Syntaxe SELECT CASE WHEN avec Microsoft.ACE.OLEDB.12.0
    Par kluh dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/12/2010, 09h59
  2. case/when avec plusieurs valeurs pour le then
    Par Neo41 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2005, 15h58
  3. Pb avec case when !
    Par Brice Yao dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/08/2005, 08h20
  4. Structure CASE WHEN en Interbase
    Par tchaman dans le forum InterBase
    Réponses: 8
    Dernier message: 13/12/2004, 16h18
  5. [SQL] performances Decode ou Case when ?
    Par Yorglaa dans le forum Oracle
    Réponses: 8
    Dernier message: 01/10/2004, 15h50

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