Visual Basic.NET - No me hace bien la busqueda

 
Vista:

No me hace bien la busqueda

Publicado por Lalaer (9 intervenciones) el 02/04/2009 13:59:35
Buenas Tardes:

Tengo un procedimiento hecho en Mysql:

CREATE DEFINER=`root`@`localhost` PROCEDURE `BuscaDatos`(IN nombre1 Varchar(24),IN apellidos1 Varchar(80))
BEGIN
Select * from gestioncv where nombre=nombre1 and apellidos=apellidos1;
END;

Y lo que me pasa es que tan solo me funciona si en el form introduzco los datos de nombre y apellidos, por ejemplo si pongo el nombre solo me dice que no hay datos.

Nombre Juan Apellidos Perez

Es decir que si meto nombre Juan busco y me dice que no hay datos, cuando realmente existen

Un Saludo y muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de roger

RE:No me hace bien la busqueda

Publicado por roger (186 intervenciones) el 02/04/2009 15:14:20
si pones nombre solo hace esto

Select * from gestioncv where nombre='PEPE' and apellidos='';

y me imagino que no hay ningun apellido vacio. Estas diciendo que ambas condiciones se deben cumplir, de lo contrario no trae registros .
Si copias nombre y apellido hace esto

Select * from gestioncv where nombre='PEPE' and apellidos='Gonzalez';
Y de seguro pues encontrara alguna coincidencia.

Podrias ponerlo asi
Select * from gestioncv where nombre=nombre1 or apellidos=apellidos1;

Asi te traerá registros, si el nombre ingresado existe (solo el nombre), o si el apellido ingresado existe (solo el apellido), o si ambos existen tambie trae registros
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No me hace bien la busqueda

Publicado por Lalaer (9 intervenciones) el 02/04/2009 15:41:29
Ya he probado con el OR

Pero si tengo PEPE PEREZ Y PEPE GONZALEZ

con el OR pongo PEPE PEREZ y tambien PEPE GONZALEZ

En cuanta a las condiciones pueden o no cumplirse.

Antiguamente lo hacia con boolean pero lo tenia en papel y se me ha traspapelado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:No me hace bien la busqueda

Publicado por roger (186 intervenciones) el 02/04/2009 19:23:05
mira, en sql server hay una funcion isnull() con la que esto se resuelve

select * from tabla where nombre= isnull(parametro,nombre) and apellido = isnull(parametro2,apellido).
Si el valor del parametro es null, se reemplaza por otro valor, en este caso se pone, el mismo valor, entonces si viene null siempre se cumpliria.

Trata de buscar si tienes alguna funcion similar en el motor de base de datos que trabajas. Y si no pues llamas a un select distinto dependiendo de los parametro que lleguen, si solo llega el nombre, busca por nombre, si solo llega apellido busca por apellido, si llegan los dos busca por los dos. No se en realidad como tienes el codigo, ni como lo estas haciendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No me hace bien la busqueda

Publicado por Lalaer (9 intervenciones) el 02/04/2009 22:40:04
Ya he encontrado una forma te la pongo por si te sirve:

Dim sql As String
sql = "SELECT * from datos "
Dim lHayDatos As Boolean
If Me.txtNombre.Text = "" Then
lHayDatos = False
Else
lHayDatos = True
sql = sql + "where nombre like'" & "%" & Me.txtNombre.Text & "%" & "'"
End If
If Me.txtApellidos.Text = "" Then
lHayDatos = False
Else
If lHayDatos = "True" Then
sql = sql + " and "
Else
sql = sql + " where "
End If
lHayDatos = True
sql = sql + "apellidos like '" & "%" & Me.txtApellidos.Text & "%" & "'"
End If
sql = sql + " order by apellidos,nombre"

Me.oDataAdapter = New MySqlDataAdapter(sql, Me.oConexion)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de roger

RE:No me hace bien la busqueda

Publicado por roger (186 intervenciones) el 03/04/2009 01:13:13
OK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No me hace bien la busqueda

Publicado por OliBeer (391 intervenciones) el 02/04/2009 20:54:37
Hola

Intenta con esto:

Select * from gestioncv where (nombre=nombre1 or '' =nombre1) and (apellidos=apellidos1 or '' = apellidos1);

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar