locked
Problema con búsqueda en base de datos.... RRS feed

  • Pregunta

  • Tengo un formulario de búsqueda que tiene un textbox para ingresar la palabra o el valor a buscar,  un combobox para seleccionar el campo por el cual realizar las búsqueda y un botón de buscar. El problema es que cuando intento hacer una búsqueda ingresando un numero, seleccionando el criterio de búsqueda y dando clic en el botón buscar me aparece el siguiente error:

    "No se puede realizar la operación 'Like' en System.Decimal y System.String."

    La búsqueda la hago en una tabla artículos  y los campos por los cuales pretendo que se realice la búsqueda son código, nombre y el id del proveedor.

    El único código que utilizo dentro del botón buscar es el siguiente:

     Select Case cbocategoria.SelectedIndex
                Case 0
                    dv.RowFilter = String.Format(("codigo Like '%{0}%'"), txtingresar.Text)
                Case 1
                    dv.RowFilter = String.Format("nombre Like '%{0}%'", txtingresar.Text)
                Case 2
                    dv.RowFilter = String.Format("id_proveedor Like '%{0}%'", txtingresar.Text)
            End Select

    Previamente declaro lo siguiente:

     Dim dv As New DataView

    y dentro del load del formulario:

    Dim da As New SqlDataAdapter("SELECT * FROM articulos", cadcon)
            Dim ds As New DataSet
            da.Fill(ds)
            dv.Table = ds.Tables(0)
            DataGridView1.DataSource = dv

    Espero y me puedan ayudar. Gracias....

    Nota: Estoy ocupando Visual Studio 2010 Y SQL Server 2008. Y por lógica Visual Basic.Net.....

    viernes, 12 de julio de 2013 18:54

Respuestas

  • hola francisco si lo que quieres es filtrar haslo de este modo

     dv.RowFilter = String.Format("Campo like '" & Textbox1.text & "'")

    ahora si estas usando campo numerico te servira este metodo

     dv.RowFilter = String.Format("Convert (Campo, 'System.String') like '" & Textbox1.Text & "' ")

    ya que de lo contrario te podria generar un error, a mi me ha funcionado sin problemas, has la prueba y comentas

    • Propuesto como respuesta dario_axariel sábado, 13 de julio de 2013 0:28
    • Marcado como respuesta FranNovato lunes, 15 de julio de 2013 18:09
    sábado, 13 de julio de 2013 0:28

Todas las respuestas

  • Hola, en todo caso si usas el RowFilter , podrias usarlo de la siguiente manera:

    Ds -> es mi dataset cargado.

    ds.Tables(0).DefaultView.Rowfilter="articulo='1'";  ' Búsqueda con RowFilter

    DataGridView.DataSource=ds.tables(0).DefaultView;

    Guia DefaultView

    Espero te pueda servir.

    Saludos


    F.M.N Informático


    viernes, 12 de julio de 2013 22:28
  • Pero en que caso te esta dando el error? En que Case del Select entra cuando te da la excepción?

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    viernes, 12 de julio de 2013 23:09
  • "No se puede realizar la operación 'Like' en System.Decimal y System.String."

    los campo codigo y id_proveedor de que tipo son en la tabla de tu db ? es quizas numerico o decimal

    porque recuerda que el LIKE no aplcia a estos tipos de campos solo a campos varchar

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 12 de julio de 2013 23:56
  • hola francisco si lo que quieres es filtrar haslo de este modo

     dv.RowFilter = String.Format("Campo like '" & Textbox1.text & "'")

    ahora si estas usando campo numerico te servira este metodo

     dv.RowFilter = String.Format("Convert (Campo, 'System.String') like '" & Textbox1.Text & "' ")

    ya que de lo contrario te podria generar un error, a mi me ha funcionado sin problemas, has la prueba y comentas

    • Propuesto como respuesta dario_axariel sábado, 13 de julio de 2013 0:28
    • Marcado como respuesta FranNovato lunes, 15 de julio de 2013 18:09
    sábado, 13 de julio de 2013 0:28
  • Pues me marca el error en Case 0 y el Case 2 Y es cuando hago búsquedas de datos numéricos....
    lunes, 15 de julio de 2013 15:47
  • Los dos campos son numeric....
    lunes, 15 de julio de 2013 15:48
  • Y aplicando lo que comenta Darío? Lo has probado? Si los campos son numeric como dijo Leandro no puedes aplicar un LIKE. Debes convertir a string el contenido del campo para ello..

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó vótala como útil. Saludos

    lunes, 15 de julio de 2013 15:55
  • Pues la respuesta de Dario me sirvió. Muchas gracias..
    lunes, 15 de julio de 2013 17:39