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

MS SQL Server Discussion :

True/False non reconnus [2008R2]


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Par défaut True/False non reconnus
    Bonjour,

    Je sens bien qu'il n'y aura pas d'autre solution que de refaire mon code mais si je pouvais gagner quelques heures de prog...

    Donc, j'ai importé une base access (.mdb) sous un serveur sql 2008 (express) et évidemment j'avais des champs oui/non sous access qui sont naturellement devenus des champ "bit". Jusque là, tout va bien, sauf que, lorsque je lance mon site je prend une erreur ('80040e14' Nom de colonne non valide : 'true'. ). La valeur True/False ne correspond pas à ce qu'attends SQL Server.

    J'ai essayé de changer ces valeurs dans la table, mais il ne veut pas, prétextant qu'un 0 ne correspond pas au type de valeur attendu... Pourtant, type de données "bit"... comprends pas bien.

    Dois-je donc réécrire tout mon code en remplaçant tous mes true par 1 et false à 0 ou connaissez-vous une ruse de sioux ?

    Merci,
    Stéphane

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    bit peut contenir 0 ou 1 ou NULL, c'est dans ton code SQL que ça pose problème, où tu veux sans doute lui passer comme valeur les mots-clé true ou false, qui ne sont pas reconnus en T-SQL. Tu peux éventuellement changer en "true" ou "false", que T-SQL sait convertir, mais l'idéal est de changer ton code pour penser en 0 ou 1. Donc pas trop le choix...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Par défaut
    Oui c'est ce que je crains effectivement, j'utilise bien des expressions du genre : "where champ = true". Mes craintes étaient donc bel et bien fondées...

    Merci pour ta réponse.
    Stéphane

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Citation Envoyé par StephM_asp Voir le message

    Dois-je donc réécrire tout mon code en remplaçant tous mes true par 1 et false à 0 ou connaissez-vous une ruse de sioux ?
    Une ruse de sioux... peu scrupuleux :

    Pour les tables ayant (au moins) une colonne de type BIT, ajoutez deux colonnes calculées, true et false

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER TABLE LaTable
     ADD true AS (CAST(1 AS BIT))
            ,false AS (CAST(0 AS BIT))
    mais attention :
    1/ je l'ai déjà sous entendu, mais ce n'est pas inutile de le redire : c'est vraiment du bricolage (mais ça peut dépanner, en remettant à plus tard la tache, le temps de voir tous les autres problèmes que vous allez rencontrer lors de la migration...)
    2/ surtout, ça ne fonctionnera pas pour les requêtes faisant des jointures entre deux tables (ou plus) ayant ces colonnes, car alors le nom sera ambigu.

    Donc je vous encourage quand même a réécrire vos requêtes.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 112
    Par défaut
    Oui je vois ce que tu fais là
    Mais bon je dois refaire mon code pour avoir quelque chose de propre.

    En tout cas merci pour vous réponses !
    Stéphane

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

Discussions similaires

  1. [Compilation]Fichiers d'inclusion non reconnus
    Par Pépé Lélé dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 04/03/2006, 13h00
  2. Réponses: 21
    Dernier message: 01/03/2006, 16h51
  3. [PHP & Oracle] caractères non reconnus
    Par Ryle dans le forum Oracle
    Réponses: 3
    Dernier message: 08/02/2006, 08h09
  4. Fichiers .asp non reconnus
    Par zorba49 dans le forum ASP
    Réponses: 5
    Dernier message: 13/09/2005, 09h49
  5. DBGrid Enabled true/false > pb de rafraichissement
    Par Harry dans le forum Bases de données
    Réponses: 8
    Dernier message: 14/10/2004, 16h50

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