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

VB.NET Discussion :

DataSet - Erreur de filtre sur des entiers


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 47
    Points : 37
    Points
    37
    Par défaut DataSet - Erreur de filtre sur des entiers
    Bonjour à tous et toutes,
    J'ai un petit problème de filtre sur les dataset.

    dans mon code je crée un dataset et dedans j'y met une table.
    Jusque là aucun problème.
    J'affiche cette table dans un DataGridview.
    Les données s'affiche sans problème également.

    mon problème vient quand j'essaye d'y placer un certain filtre.
    Quand je rajoute un filtre sur des caractères pour filtrer une colonne de type Varchar => aucun problème.
    Mais quand j'essaye de filtrer sur des entiers sur une valeur de type Int
    ca plante le programme et me donne comme erreur :=>
    Impossible d'effectuer une opération 'Like' sur System.Int32 et System.Int32.
    voici mon bout de code qui me renvoie l'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (Not IsNumeric(TextBoxFiltre.Text)) Or (TextBoxFiltre.Text = "") Then
     
                EffacerFiltre()
            Else
                Dim result As Integer = TextBoxFiltre.Text
                BtnEffacerFiltre.Enabled = True
                BSCaisseNonExt.Filter = "CODE_CAISSE LIKE " & result & ""
    J'ai essayé de changer result en Int32 au lieu de Integer et ça me dit pareil, en le changeant en string l'erreur change en
    Impossible d'effectuer une opération 'Like' sur System.Int32 et System.String.
    Je tourne en VB.net 2010 avec BDD Mysql 5.

    Merci d'avance.

  2. #2
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Bonjour,

    Il me semble que l'opérateur like ne fonctionne que pour les chaînes de caractères. Mais tu peux facilement laisser ta variable "result" comme chaine non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim result As String = TextBoxFiltre.Text
                BtnEffacerFiltre.Enabled = True
                BSCaisseNonExt.Filter = "CODE_CAISSE LIKE '" & result & "'"

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    J'ai essayé en mettant ma variable result comme chaine, mais cela plante également :
    Impossible d'effectuer une opération 'Like' sur System.Int32 et System.String.
    Peut on utiliser une autre méthode pour mettre un filtre sur un nombre?

  4. #4
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Tu as bien rajouté les apostrophes dans la requête autour de la variable Result?

    Edit : Oublie mon message ci, je dis n'importe quoi La conversion du Int en String se fait automatiquement, mais le problème vient du type de la colonne de ta datatable. Il faudrait faire un cast directement dans la requête SQL, mais je ne sais pas comment faire, si un spécialiste du SQL passe par ici...

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    J'ai trouvé.

    En fait je suis resté sur les 'like' car j'avais fait beaucoup de recherche sur des chaines.
    Mais là j'en ai mémé pas besoin

    en faisant un simple '=' ca passe (surtout que je n'ai pas besoin de rajouter % $ ...)

    BSCaisseNonExt.Filter = "CODE_CAISSE = " & result & ""
    Merci de m'avoir répondu aussi rapidement.
    Pour répondre à ta question, oui j'avais essayé avec apostrophe, sans, avec integer, int32, string... mais ca planté pareil.
    Peut être que le like planté du fait que je ne lui mettais pas de condition.

    encore merci à toi !!

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Neiflheim Voir le message

    Edit : Oublie mon message ci, je dis n'importe quoi La conversion du Int en String se fait automatiquement, mais le problème vient du type de la colonne de ta datatable. Il faudrait faire un cast directement dans la requête SQL, mais je ne sais pas comment faire, si un spécialiste du SQL passe par ici...
    Il y aurait la solution de créer une autre table dans le DataSet où cette table aurait le filtre dans sa requête. mais ca a l'air lourd et pas très adapté.
    Avec la méthode que j'ai écrite ça fonctionne donc ça me suffit ^^
    Bonne journée

  7. #7
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    L'opérateur LIKE (comme) ne fonctionne que pour comparer des strings (string comme string). Au besoin forcer la conversion des 2 cotés pour éviter les problèmes.

    L'opérateur = (égal) fonctionne avec n'importe quoi du moment que c'est du même type (ou qu'une conversion soit possible).

    Ne pas oublier non plus que le fonctionnement de like et de = n'est pas le même et j'invite toute personne ayant un doute sur leur différence d'aller se documenter au plus vite avant d'apprendre dans la douleur...

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 47
    Points : 37
    Points
    37
    Par défaut
    Tu fais bien de le signaler. J'étais justement dans cette erreur la.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/09/2008, 14h12
  2. [XPATH] Filtres sur type entier
    Par Katachana dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 18/03/2008, 09h14
  3. Filtre sur des invites
    Par yalla3 dans le forum Deski
    Réponses: 6
    Dernier message: 16/08/2007, 20h19
  4. Requête filtre sur des rendez vous
    Par jdotti dans le forum Outils
    Réponses: 5
    Dernier message: 17/03/2006, 15h41
  5. [DB2] LIKE sur des entiers
    Par heloise dans le forum DB2
    Réponses: 1
    Dernier message: 07/10/2004, 23h30

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