Foros del Web » Programación para mayores de 30 ;) » .NET »

ayuda con like no responde

Estas en el tema de ayuda con like no responde en el foro de .NET en Foros del Web. hola que tal a todos un saludo, mi problema es el sig. tengo este codigo en vb 08 Código: Imports MySql.Data.MySqlClient Public Class Form1 Dim ...
  #1 (permalink)  
Antiguo 20/07/2010, 15:06
 
Fecha de Ingreso: noviembre-2007
Mensajes: 31
Antigüedad: 16 años, 5 meses
Puntos: 0
ayuda con like no responde

hola que tal a todos un saludo, mi problema es el sig. tengo este codigo en vb 08

Código:
Imports MySql.Data.MySqlClient
Public Class Form1
    Dim con As MySqlConnection
    Dim coman As MySqlCommand
    Dim lect As MySqlDataReader
    Dim ada As MySqlDataAdapter
    Dim datase As DataSet
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        con = New MySqlConnection()
        con.ConnectionString = "server=localhost;user id =root;password=123456;database=cvi_campesino"
        con.Open()
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'creamos el adaptador 
        If cadena.Text = "" Then
            ada = New MySqlDataAdapter("select codigo,descripcion,p_v,existencia from productos", con)
            'creamos el dataset
            datase = New DataSet
            ada.Fill(datase, "productos")
            'asignar el dataset al datagrid
            data.DataSource = datase
            data.DataMember = "productos"
        Else
            ada = New MySqlDataAdapter("select codigo,descripcion,p_v,existencia from productos where descripcion like '% " & cadena.Text & " %' ", con)
            'creamos el dataset
            datase = New DataSet
            ada.Fill(datase, "productos")
            'asignar el dataset al datagrid
            data.DataSource = datase
            data.DataMember = "productos"
        End If
    End Sub
End Class
en la base de datos tengo tres articulos 1.- tubo de cobre de 1/2 2.- codo de cobre de 1/2 x 90 3.- codo de pvc 2 x 90, el poner la palabra cobre me da la coinsidencia de los dos articulos, si no pongo nada me da los tres articulos, el problema enpiesa cuando pongo otro texto por ejemplo "codo" ese texto no me da resultados, incluso ponga lo que ponga nada me da un resultado solo si pongo la palabra "cobre" y debe de ser completa "cobre" porque si solo pongo parte de ella como "cob" tampoco me da resultado.
aver si me pueden echar la mano gracias
  #2 (permalink)  
Antiguo 20/07/2010, 23:09
Avatar de zick  
Fecha de Ingreso: mayo-2007
Ubicación: Los Angeles - Chile
Mensajes: 168
Antigüedad: 17 años
Puntos: 2
Respuesta: ayuda con like no responde

Hola:

Muchas veces el MySQL se pone bastante quisquilloso. Tal vez pueda ser que los espacios entre los %% te esten dando problemas:

Tu codigo:
Código:
select codigo,descripcion,p_v,existencia from productos where descripcion like '% " & cadena.Text & " %' "
Mi propuesta:
Código:
select codigo,descripcion,p_v,existencia from productos where descripcion like '%" & cadena.Text & "%' "
Además, trata de copiar el código generado y hacer la consulta directamente en la base de datos (no dices que motor utilizas).

Espero haber sido algo de ayuda y que puedas solucionar tu problema.

Saludos
__________________
SZC - Aplicaciones y Servicios.
http://www.szc.cl
Los Angeles - Chile
  #3 (permalink)  
Antiguo 21/07/2010, 05:21
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ayuda con like no responde

Es seguro que el problema está en lo que te dice zick.
Piensalo así: LIKE te devuelve resultados si el campo sobre el que realizas la comparación contiene cualquier caracter antes del primer "%" y después del segundo "%". El resto es un patrón constante, por lo que ese patrón incluye sí o sí los espacios porque los espacios son caracteres...
En tu caso, si uno de los registros comienza con "codo", ese no saldrá porque antes de "codo" no hay ningún caracter, y tu le estás exigiendo que haya al menos un espacio en blanco.
¿Se comprende el problema?
Por esa razón siempre se escriben esas búsquedas sin espacios inciales (lo podrás ver en cualquier manual o tutorial).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: responde
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:02.