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

ASP.NET Discussion :

probleme de conversion dans requete


Sujet :

ASP.NET

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut probleme de conversion dans requete
    bonjour,
    je realise une application web sous visual studio en asp.net vb, dans cette application j'ai une requete et lorsque je test cette requete sous microsoft sql server, j'ai ce message d'erreur :

    Échec de la conversion de la valeur varchar '%' en type de données int.
    je sait que l'erreur est au niveau du premier convert, mais je sait pas qu'elle est la solution, voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT Document.idDocument, Document.Type, CONVERT (varchar, CGS.DateCreation, 103) AS Nom, DocumentLangue.Fichier, Langue.Langue, DocumentLangue.idLangue 
    FROM Document INNER JOIN DocumentLangue ON Document.idDocument = DocumentLangue.idDocument INNER JOIN Langue ON DocumentLangue.idLangue = Langue.idLangue INNER JOIN CGS ON Document.idDocument = CGS.idDocument WHERE (Document.Type LIKE '%' + @Type + '%') UNION SELECT Document_2.idDocument, Document_2.Type, Avenant.Nom AS nom, DocumentLangue_2.Fichier, Langue_2.Langue, DocumentLangue_2.idLangue FROM DocumentLangue AS DocumentLangue_2 INNER JOIN Document AS Document_2 INNER JOIN Avenant ON Document_2.idDocument = Avenant.idDocument ON DocumentLangue_2.idDocument = Document_2.idDocument INNER JOIN Langue AS Langue_2 ON DocumentLangue_2.idLangue = Langue_2.idLangue LEFT OUTER JOIN AvenantPDP LEFT OUTER JOIN Entreprise INNER JOIN PDP ON Entreprise.idEntreprise = PDP.idEntreprise INNER JOIN DonneurOrdreCommande INNER JOIN DonneurOrdre ON DonneurOrdreCommande.idDonneurOrdre = DonneurOrdre.idDonneurOrdre INNER JOIN Commande ON DonneurOrdreCommande.idCommande = Commande.idCommande ON PDP.idPDP = Commande.idPDP ON AvenantPDP.idPDP = PDP.idPDP ON Avenant.idAvenant = AvenantPDP.idAvenant WHERE (ISNULL(CAST(PDP.idEntreprise AS varchar), '') LIKE '%' + @idEntreprise + '%') AND (ISNULL(CAST(DocumentLangue_2.idLangue AS varchar), '') LIKE '%' + @idLangue + '%') AND (ISNULL(DonneurOrdre.Nom, '') LIKE '%' + @DonneurOrdre + '%') AND (Document_2.Type LIKE '%' + @Type + '%') UNION SELECT Document_1.idDocument, Document_1.Type, PDP_1.Intitule AS nom, DocumentLangue_1.Fichier, Langue_1.Langue, DocumentLangue_1.idLangue FROM Entreprise AS Entreprise_1 INNER JOIN Document AS Document_1 INNER JOIN DocumentLangue AS DocumentLangue_1 ON Document_1.idDocument = DocumentLangue_1.idDocument INNER JOIN Langue AS Langue_1 ON DocumentLangue_1.idLangue = Langue_1.idLangue INNER JOIN PDP AS PDP_1 ON Document_1.idDocument = PDP_1.idDocument ON Entreprise_1.idEntreprise = PDP_1.idEntreprise LEFT OUTER JOIN DonneurOrdre AS DonneurOrdre_1 INNER JOIN DonneurOrdreCommande AS DonneurOrdreCommande_1 ON DonneurOrdre_1.idDonneurOrdre = DonneurOrdreCommande_1.idDonneurOrdre INNER JOIN Commande AS Commande_1 ON DonneurOrdreCommande_1.idCommande = Commande_1.idCommande ON PDP_1.idPDP = Commande_1.idPDP WHERE (ISNULL(CAST(PDP_1.idEntreprise AS varchar), '') LIKE '%' + @idEntreprise + '%') AND (ISNULL(CAST(DocumentLangue_1.idLangue AS varchar), '') LIKE '%' + @idLangue + '%') AND (ISNULL(DonneurOrdre_1.Nom, '') LIKE '%' + @DonneurOrdre + '%') AND (Document_1.Type LIKE '%' + @Type + '%')
    y a t'il une personne pouvant m'aider s'il vous plait ?

    cordialement.

  2. #2
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Pourquoi poser une question concernant une requête SQL dans le forum ASP.NET ? J'aimerais comprendre...

    Ensuite, quel est le type de ta variable @Type ? Si c'est un int, peut être qu'en mettant une conversion int => varchar il aimera mieux la concaténation avec '%'.

    En espérant t'avoir aidé.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    D'abord il faut que tu te mette aux requêtes paramétrés :

    http://webman.developpez.com/article.../sqlparameter/

    La requête est juste incompréhensible et illisible en plus avec cet affichage là ... Et non je crois pas que ça soit ton premier convert, d'ailleurs tu devrait tester ta requête par bout ... Et je pense que tu peux également l'améliorer.

    ++
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut
    c'est vrai, un effort de présentation serai préférable,

    voici le code avec une presentation plus adapté :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Declare @Type char;
    declare @IdEntreprise int;
    Declare @IdLangue int;
    Declare @donneurOrdre int;
    SELECT Document.idDocument, Document.Type, CONVERT (varchar, CGS.DateCreation, 103) AS Nom, DocumentLangue.Fichier, Langue.Langue, DocumentLangue.idLangue 
    FROM Document 
    INNER JOIN DocumentLangue ON Document.idDocument = DocumentLangue.idDocument
    INNER JOIN Langue ON DocumentLangue.idLangue = Langue.idLangue 
    INNER JOIN CGS ON Document.idDocument = CGS.idDocument 
    WHERE (Document.Type LIKE '%' + @Type + '%') 
    UNION SELECT Document_2.idDocument, Document_2.Type, Avenant.Nom AS nom, DocumentLangue_2.Fichier, Langue_2.Langue, DocumentLangue_2.idLangue 
    FROM DocumentLangue AS DocumentLangue_2 
    INNER JOIN Document AS Document_2 
    INNER JOIN Avenant ON Document_2.idDocument = Avenant.idDocument ON DocumentLangue_2.idDocument = Document_2.idDocument 
    INNER JOIN Langue AS Langue_2 ON DocumentLangue_2.idLangue = Langue_2.idLangue 
    LEFT OUTER JOIN AvenantPDP 
    LEFT OUTER JOIN Entreprise 
    INNER JOIN PDP ON Entreprise.idEntreprise = PDP.idEntreprise 
    INNER JOIN DonneurOrdreCommande 
    INNER JOIN DonneurOrdre ON DonneurOrdreCommande.idDonneurOrdre = DonneurOrdre.idDonneurOrdre 
    INNER JOIN Commande ON DonneurOrdreCommande.idCommande = Commande.idCommande ON PDP.idPDP = Commande.idPDP ON AvenantPDP.idPDP = PDP.idPDP ON Avenant.idAvenant = AvenantPDP.idAvenant 
    WHERE (ISNULL(CAST(PDP.idEntreprise AS varchar), '') 
    LIKE '%' + @idEntreprise + '%') 
    AND (ISNULL(CAST(DocumentLangue_2.idLangue AS varchar), '') 
    LIKE '%' + @idLangue + '%') 
    AND (ISNULL(DonneurOrdre.Nom, '') 
    LIKE '%' + @DonneurOrdre + '%') 
    AND (Document_2.Type 
    LIKE '%' + @Type + '%') 
    UNION SELECT Document_1.idDocument, Document_1.Type, PDP_1.Intitule AS nom, DocumentLangue_1.Fichier, Langue_1.Langue, DocumentLangue_1.idLangue 
    FROM Entreprise 
    AS Entreprise_1 
    INNER JOIN Document AS Document_1 
    INNER JOIN DocumentLangue AS DocumentLangue_1 ON Document_1.idDocument = DocumentLangue_1.idDocument 
    INNER JOIN Langue AS Langue_1 ON DocumentLangue_1.idLangue = Langue_1.idLangue 
    INNER JOIN PDP AS PDP_1 ON Document_1.idDocument = PDP_1.idDocument ON Entreprise_1.idEntreprise = PDP_1.idEntreprise 
    LEFT OUTER JOIN DonneurOrdre AS DonneurOrdre_1 
    INNER JOIN DonneurOrdreCommande AS DonneurOrdreCommande_1 ON DonneurOrdre_1.idDonneurOrdre = DonneurOrdreCommande_1.idDonneurOrdre 
    INNER JOIN Commande AS Commande_1 ON DonneurOrdreCommande_1.idCommande = Commande_1.idCommande ON PDP_1.idPDP = Commande_1.idPDP 
    WHERE (ISNULL(CAST(PDP_1.idEntreprise AS varchar), '') 
    LIKE '%' + @idEntreprise + '%') 
    AND (ISNULL(CAST(DocumentLangue_1.idLangue AS varchar), '') 
    LIKE '%' + @idLangue + '%') 
    AND (ISNULL(DonneurOrdre_1.Nom, '') 
    LIKE '%' + @DonneurOrdre + '%') 
    AND (Document_1.Type LIKE '%' + @Type + '%')

    en realisant la requete bout par bout j'ai remarqué que l'erreur n'etait presente qu'a partir de ligne 22.

    merci pour votre aide.

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Like s'applique à une chaine de caractère ... Et @IdEntreprise est un int en plus tu cast juste avant l'attribut de la table en varchar ...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE (ISNULL(CAST(PDP.idEntreprise AS varchar), '') 
    LIKE '%' + @idEntreprise + '%')

    Et tu vas avoir le même problème avec les autres paramètres int ... Es tu bien sûre d'avoir besoin de faire un like ici ?
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  6. #6
    Membre averti
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut
    j'ai remplacer le like par le signe "=" mais j'ai toujours le meme message d'erreur

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    49
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 49
    Par défaut
    Probleme resolu, j'ai changé les type de ma collection de parametre.

    merci pour votre aide.

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

Discussions similaires

  1. Encore un probleme avec IIF dans requete
    Par USnico dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/11/2008, 14h00
  2. Probleme de date dans requete sql de supression
    Par scons dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/08/2008, 09h01
  3. Probleme de date dans requete SQL vers base de donnée MS Access
    Par Uren dans le forum Persistance des données
    Réponses: 1
    Dernier message: 04/08/2008, 13h06
  4. probleme de syntaxe dans requete vba
    Par Invité dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/07/2008, 18h31
  5. Probleme de format dans requete
    Par reuel dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/08/2007, 09h28

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