none
Problème bindingsource.filter avec LIKE sur champ de type INT RRS feed

  • Question

  • Bonjour à vous,

    après avoir passé beaucoup de temps avec mon ami google, je me tourne vers vous ! 

    On peut dire que je débutes sur visual studio 2010 ainsi quand vb.net et de plus n'étant pas habitué à venir soliciter les forums je ne postes peut être pas au bon endroit.

    En gros je veux afficher le résultat d'un bindingsource.filter dans un datagridview pour afficher le résultat de la recherche. Pour info, je suis sous visual studio 2010 avec un server sql 2008 R2 standard

    Actullement lorsque que je vaux faire un 'LIKE' sur un champ de type int. (Je sais qu'il y a la possibilité d'utiliser '=' mais cela ne correspond pas vraiment à ce que je veux faire). 

    Je me retrouve avec l'erreur suivante  

    "Impossible d'effectuer une opération 'Like' sur System.Int32 et System.String."

    J'ai eu beau essayer de convertir ma variable mais sans succès sniff.

    Voici un extrait du code de mon formulaire de recherche 

    Public Class FrmAccueil
    
     Public recherche As String
    
     Public Sub BDossierRecherche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BDossierRecherche.Click
    
     If TBDossierNum.TextLength <> 0 Then
    
     recherche = "Numéro_Affaires"
    
     FrmRechercheDossier.ShowDialog()
    
     ElseIf MsgBox("Voulez-vous lancer une recherche globale ?""Cela peut être assez long", MsgBoxStyle.YesNo Or MsgBoxStyle.Question) = MsgBoxResult.Yes Then
    
     FrmRechercheDossier.ShowDialog()
    
     End If
    
     End Sub
    
    End Class

    Et voici le formulaire d'affichage de mon résultat :

    Option Strict On
    Option Explicit On
    
    
    Public Class FrmRechercheDossier
    
     Private Sub FrmRechercheDossier_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
      Dim recherche = FrmAccueil.recherche
    
      If recherche <> "" Then
    
      Dim FilterArgs = recherche & " LIKE '" & FrmAccueil.TBDossierNum.Text & "%'"
    
      Table_AffairesBindingSource.Filter = FilterArgs
    
      Call RefreshDataSource()
    
     End If
    
     End Sub 
    
     Private Sub RefreshDataSource()
    
      Me.Table_AffairesTableAdapter.Fill(Me.**********DataSet.Table_Affaires)
    
     End Sub
    
    End Class
    

    J'espère avoir été assez clair. En espérant que vous puissiez m'éclairer à ce sujet, car pour le coup je suis vraiment perdu.

    Merci d'avance.

    Cordialement




    • Modifié Reno1830 jeudi 7 juillet 2011 13:38 Modif mise en page
    jeudi 7 juillet 2011 13:22

Réponses

  • Bonjour,

    il semble que vous cherchiez à utiliser l'opérateur Like sur une colonne de la DataTable qui est de type Int ( colonne Numéro_Affaires ) d'ou l'erreur obtenue.

    Dans le critère de filtre vous devriez convertir la colonne via la fonction Convert pour obtenir quelquechose comme :

     

    Dim FilterArgs = "convert([" & recherche & "],'System.String') LIKE '" & FrmAccueil.TBDossierNum.Text & "%'"
    

     

    Vous trouverez une documentation de référence sur les expression que vous pouvez utiliser ici : DataColumn.Expression Property

     

    Concernant les forums il existe effectivement un forum spécifiquement dédié à vb.net ici

    Cordialement

     


    • Marqué comme réponse Reno1830 jeudi 7 juillet 2011 14:17
    jeudi 7 juillet 2011 14:00
    Modérateur

Toutes les réponses

  • Bonjour,

    il semble que vous cherchiez à utiliser l'opérateur Like sur une colonne de la DataTable qui est de type Int ( colonne Numéro_Affaires ) d'ou l'erreur obtenue.

    Dans le critère de filtre vous devriez convertir la colonne via la fonction Convert pour obtenir quelquechose comme :

     

    Dim FilterArgs = "convert([" & recherche & "],'System.String') LIKE '" & FrmAccueil.TBDossierNum.Text & "%'"
    

     

    Vous trouverez une documentation de référence sur les expression que vous pouvez utiliser ici : DataColumn.Expression Property

     

    Concernant les forums il existe effectivement un forum spécifiquement dédié à vb.net ici

    Cordialement

     


    • Marqué comme réponse Reno1830 jeudi 7 juillet 2011 14:17
    jeudi 7 juillet 2011 14:00
    Modérateur
  • Merci beaucoup pour la réponse et sa rapidité ^^

    J'avais cherché à convertir la variable au moment de sa déclaration mais pas dans la requête vous me retirez une sacré épine du pied merci encore.

    Quand au forum je ne savais pas trop si cela était dût a visual studio ou tout bêtement a visual basic vu que quand j'exécutais ma requete sous sql server celle ci fonctionnait correctement. Comment puis-je déplacer mon post ?

    Cordialement

    jeudi 7 juillet 2011 14:22