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 :

Chiffre 8 dans SQL server 2000


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Par défaut Chiffre 8 dans SQL server 2000
    Bonjour,
    Alors voila j'ai un état ASP qui va chercher des données dans une table pour les insérer dans une autre........
    Jusqu'à aujourd'hui, pas de problème. Mais voila, j'ai un gros problème lorsqu'il s'agit du chiffre 8. Mon champ est en varchar(50) mais mon état ASP plante du moment qu'il y a "8," qqch. Par exemple si la valeur est "9,05" ca passe mais "8,05" ne passe pas.
    L'erreur renvoyée est :
    Type d'erreur :
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E57)
    [Microsoft][ODBC SQL Server Driver][SQL Server]Les données chaîne ou binaires seront tronquées.

    quelqu'un aurait-il une explication ?

  2. #2
    Membre éclairé Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2005
    Messages : 369
    Par défaut
    Ca me rapelle un peu une erreur que j'avais en coldfusion
    On avait une erreur encore moins compréhensible (à savoir "32 >= 32" sans aucune autre explication...)

    On a réussi à "résoudre" ce problème en mettant des parenthèses autour de la clause where (ou autour de chaque condition, je me souvient plus)

    Essaye comme ca, et si ca fonctionne, j'avoue que je ne sais pas pourquoi

  3. #3
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    Bizarre !!

    essais de voir ce que ça donne si tu de force en varchar(50)
    avec cast (valeur as varchar(50))

  4. #4
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Par défaut
    Merci de ta réponse.
    En fait l'application fonctionne comme ca :

    1) Etat intranet qui sélectionne les champs (pas de condition sur le champ qui me pose problème)
    2) Les valeurs sont stockées dans un tableau pour être éventuellement traitées
    3) L'utilisateur appuie sur un bouton pour valider
    4) les données validées sont insérées dans une table pour l'historique.

    Cette valeur "8,05" n'est pas traitée (pas de calcul ni rien du tout).
    L'application plante sur la requête INSERT que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO SUIVI_TPS_FABR VALUES('" & Date_Of(varPrep) & "','" & Code_Arti(varPrep) & "','" & Code_Mach(varPrep) & "','" & Atel(varPrep) & "','" & Code_Of(varPrep) & "','" & Code_Oper(varPrep) & "','" & Tps_Prep_Init(varPrep) & "','" & Tps_Prep(varPrep) & "','" & Tps_Prep_Justif(varPrep) & "','" & prep_com & "','" & Tps_Prev_Init(varPrep) & "','','','','" & Evol_Prep(varPrep) & "','','Oui','Non')
    Le champ qui pose problème est Tps_Prep(varPrep).

  5. #5
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    essai ceci
    INSERT INTO SUIVI_TPS_FABR VALUES('" & Date_Of(varPrep) & "','" & Code_Arti(varPrep) & "','" & Code_Mach(varPrep) & "','" & Atel(varPrep) & "','" & Code_Of(varPrep) & "','" & Code_Oper(varPrep) & "','" & Tps_Prep_Init(varPrep) & "',Cast('" & Tps_Prep(varPrep) & "' as varchar(50)),'" & Tps_Prep_Justif(varPrep) & "','" & prep_com & "','" & Tps_Prev_Init(varPrep) & "','','','','" & Evol_Prep(varPrep) & "','','Oui','Non')
    Cela dit, affiche la donnée réele et sa longueur pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%=Len(Tps_Prep(varPrep) & "") & "|" & (Tps_Prep(varPrep) & "") & "|"%>

  6. #6
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Par défaut
    J'ai ajouté ce que tu m'as écrit. Mais l'erreur est toujours la même. J'ai testé avec "9,05" et c'est bien passé. Par contre "8,0?" ca ne passe pas. Je viens de remarquer que le "0" après "8," ca ne passe pas. Mais que après le "8". N'importe quel autre chiffre passe : "9,05" ou "100,05" ou "8,15" passe correctement.

    merci de ta réponse

  7. #7
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    hum
    utilise une variable pour construire ta requête et affiche la requêtes généré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    dim query
    query ="Insert ..." 
    Call Response.Write("<pre style=""border : solid 1px red; overflow-y:scroll; width:100%; height: 300px"">" & query & "</pre>")
    Conn.execute query
    Communique nous la requête généré.
    De plus vérifie le type de la donnée de la colonne
    pour cela exécute la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select syscolumns.name nom_col, systypes.name nom_type, syscolumns.length taille
    From syscolumns inner join systypes on syscolumns.usertype = systypes.usertype
    Where syscolumns.id = object_id('SUIVI_TPS_FABR') and colorder = 8

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 25
    Par défaut
    Bonjour,
    Et que fait
    Tps_Prep(varPrep) ?
    L'as-tu testé avec 8,05 ?

Discussions similaires

  1. Pagination dans sql server 2000 ?
    Par MAJIK_ENIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2006, 16h52
  2. Importer données Unicode Oracle dans SQL-Server 2000.
    Par LaFraise dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/12/2005, 14h54
  3. Copie de donnees dans SQL server 2000
    Par papayou42 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/12/2003, 10h58
  4. Procedure stockée avec ntext dans SQL server 2000
    Par nagababa dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/11/2003, 20h46

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