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

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    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 habitué Avatar de mioux
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2005
    Messages
    367
    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 : 367
    Points : 191
    Points
    191
    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 actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    Bizarre !!

    essais de voir ce que ça donne si tu de force en varchar(50)
    avec cast (valeur as varchar(50))
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    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 actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    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) & "") & "|"%>
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    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 actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    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
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  8. #8
    Nouveau membre du Club
    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
    Points : 30
    Points
    30
    Par défaut
    Bonjour,
    Et que fait
    Tps_Prep(varPrep) ?
    L'as-tu testé avec 8,05 ?

  9. #9
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    Et que fait
    Tps_Prep(varPrep) ?
    Tps_Prep est un tableau VBS
    la il récupére la valeur d'indice varPrep
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Le problème est toujours pareil.
    Voila la requête avec un chiffre qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO SUIVI_TPS_FABR VALUES('05/09/2007','DCA 10417','MY5       ','CUS       ','414292    ','10        ','8',Cast('812' as varchar(50)),'MON       ','','120','','','','+804','','Oui','Non')
    J'ai essayé avec "8,12", ca ne marche pas.

  11. #11
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    c'est peut être la virgule (mais j'en doute)
    essai en changeant la virgule par un point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    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('" & Replace(Replace(Tps_Prep(varPrep) & "", "," , "."), " ", "")  & "' as varchar(50)),'" & Tps_Prep_Justif(varPrep) & "','" & prep_com & "','" & Tps_Prev_Init(varPrep) & "','','','','" & Evol_Prep(varPrep) & "','','Oui','Non')
    Tu peux indiquer le type de la donnée please? (utilise la requête que je ai donné dans mon précédant poste)
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  12. #12
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    J'ai exécuté la requête pour avoir le type :
    nom_col = Tps_Prep
    nom_type = varchar
    taille = 50
    Avec un point l'erreur est identique

  13. #13
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    Voila la requête avec un chiffre qui marche :
    tu pourrais donner une requête qui plante please ?
    On pourra comparer
    A tout hasard, quelle sont les types et taille des donnée de l'ensemble des colonnes de la table (l'erreur n'est peut être pas la ou on le pense):
    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') Order By colorder
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  14. #14
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    voici les colonnes et leur type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    DATE_TPS	datetime	8
    CODE_ARTI	char	20
    CODE_MACH	char	10
    CODE_ATEL	char	10
    CODE_OF	char	10
    CODE_OPER	char	10
    TPS_PREP_INIT	varchar	5
    TPS_PREP	varchar	50
    TPS_PREP_JUSTIF	char	10
    COM_PREP	varchar	200
    TPS_PREV_INIT	varchar	5
    TPS_PREV	varchar	50
    TPS_PREV_JUSTIF	char	10
    COM_PREV	varchar	200
    EVOL_TPS_PREP	varchar	10
    EVOL_TPS_PREV	varchar	10
    VALID_PREP	char	10
    VALID_PREV	char	10
    Je pense que l'erreur vient de tps_prep car je ne modifie pas les autres lors de mes tests. Que la valeur tps_prep.
    Une requête qui ne marche pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO SUIVI_TPS_FABR VALUES('05/09/2007','DCA 10417','MY5       ','CUS       ','414292    ','10        ','8',Cast('8,1' AS varchar(50)),'MON       ','','120','','','','+0,1','','Oui','Non')

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Je crois que le CAST d'une chaîne de caractères vers un type chaîne de carctère n'est pas très approprié. Passe plutôt par une variable de type float. De cette manière ton test sera plus cohérent.
    Bon courage pour la suite.

  16. #16
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    bon j'ai comparé les champ par rapport au types des colonnes de la table, tous est OK pour moi.
    je suis sure que le problème n'est pas la.

    Parcque ce qui me viendrais à l'idée c'est que le famueux "Tps_Prep(varPrep)"
    crée une erreur ou un warning qui pourrait expliquer l'erreur

    Une question : la requête qui ne fonctionne pas, celle que tu nous a donné, c'est bien celle exactement celle qui été affiché et qui é été executé (j'avais suggéré d'utiliser une variable) ?

    Mise à part ça je vois vraiment pas ! :s
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  17. #17
    Membre à l'essai
    Inscrit en
    Juin 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 31
    Points : 12
    Points
    12
    Par défaut
    Oui c'est bien la requête affichée. C'est vraiment très bizarre d'autant que ce n'est qu'avec "8".

    Merci en tout cas d'avoir pris du temps pour ce sujet

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