Buenas a todos :)
Mi duda es simple ;D eso creooo! :laugh:
Bueno tengo un SP que es para buscar a un alumno por sus apellidos
pero el problema es que cuando busco al alumno.. solo busca con 1 solo apellido
(Apellido Paterno o Apellido Materno) pero si quiero buscar con los 2 apellidos... nada :(
El Codigo que tengo hasta ahora es...
-- BUSQUEDA DE ESTUDIANTE POR APELLIDOS
CREATE PROCEDURE USP_S_BUSCARESTUDIANTEAPELLIDO
@EST_Apellido varchar(30)
AS
BEGIN TRANSACTION
SELECT
EST_Codigo AS Codigo ,
EST_Nombres AS Nombre ,
EST_ApellidoPaterno AS ApellidoPaterno ,
EST_ApellidoMaterno AS ApellidoMaterno ,
EST_CorreoElectronico AS CorreoElectronico
FROM Estudiante
WHERE EST_ApellidoPaterno = @EST_Apellido OR EST_ApellidoMaterno = @EST_Apellido
IF (@@error <> 0)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
GO
Creo que el problema es en el WHERE... no lo sé
Gracias de antemano!
:P
Hola cielo :D
Mira si te fijas bien en tu SP, solamente pasas 1 solo parametro:
CREATE PROCEDURE USP_S_BUSCARESTUDIANTEAPELLIDO
@EST_Apellido varchar(30)
Y le pasas ese unico parametro a las 2 condiciones del WHERE:
WHERE EST_ApellidoPaterno = @EST_Apellido OR EST_ApellidoMaterno = @EST_Apellido
Por ende el WHERE esta buscando en base a 1 solo parametro que posee el mismo valor :P para buscar por los 2 apellidos debes declarar 2 parametros y no 1 solo, y pasarle cada parametro a cada campo, por ejemplo:
CREATE PROCEDURE USP_S_BUSCARESTUDIANTEAPELLIDO
@EST_Apellido varchar(30), @DOS_Apellido varchar(30)
Por lo que:
WHERE EST_ApellidoPaterno = @EST_Apellido OR EST_ApellidoMaterno = @DOS_Apellido
Ahi deberia buscarte por uno u el otro ;)
PD: No se nada sobre T-SQL por ende puede que haya hecho mal la sintaxis al ejemplo de tu SP pero estoy segura que entenderas la propuesta que te hago.
Un besote :-*
Hellooooooooouuuu ^TiFa^ ! :D
TiFa la razón por la cual estoy trabajando con un solo parámetro es por que los Apellidos del estudiante se ingresan en un solo TextBox... no puedo usar 2 TextBox para buscar por apellido por que en ese mismo textBox donde ingreso los Apellidos, también ingreso codigo del alumno para buscarlo (si quiero buscar por Apellido o Código eso depende de un CheckBox)
Espero que me hayas entendido ^TiFa^ :)
Saludos! :D
Si ese punto lo entiendo, pero en tu tabla tu tienes 2 campos de Apellidos distintos, uno del padre, otro de la madre.
Citar
EST_ApellidoPaterno AS ApellidoPaterno ,
EST_ApellidoMaterno AS ApellidoMaterno
Lo cual esta bien, debe ser asi. Ahora como solo puedes utilizar en el formulario 1 textbox, tienes que buscar la manera en tu codigo (de cual sea el lenguaje que uses) de hacer un SPLIT de los 2 apellidos ingresados en ese textbox y guardarlos en un Array, dicho Array sera de 2 apellidos los cuales igual puedes pasarselos a tu SP declarandoles 2 parametros 1 por cada Apellido. Porque no puedes buscar por los 2 apellidos sino utilizas las condiciones de dicha busquedad, tienes que solicitar los 2 apellidos o realizar la busquedad en base a 1 solo apellido.
Eso de usar una array puede ser una solución... pero, encontré esta mejor! ;D
Ya arregle ese problema asi:
CREATE PROCEDURE USP_S_BUSCARESTUDIANTEAPELLIDO
@EST_Apellido varchar(30)
AS
BEGIN TRANSACTION
SELECT
EST_Codigo AS Codigo ,
EST_Nombres AS Nombre ,
EST_ApellidoPaterno AS ApellidoPaterno ,
EST_ApellidoMaterno AS ApellidoMaterno ,
EST_CorreoElectronico AS CorreoElectronico
FROM Estudiante
WHERE EST_ApellidoPaterno + ' ' + EST_ApellidoMaterno LIKE '%' + @EST_Apellido + '%'
IF (@@error <> 0)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
GO
Gracias por tu ayuda ^TiFa^ :), siempre tu presente! ;D ¡GRACIAS!
Saludos! ;)
No veo en que la clausula LIKE busque por los 2 apellidos :huh: :huh:
Que pasa si el apellido paterno es Lopez y el Materno es Ruiz y tu estas buscando en base a 1 solo Apellido en este caso Lopez asi:
%Lopez%
Eso es traeme todos los apellidos que tengan en su centro la palabra 'Lopez'...
So no te entiendo :P
jajajaja :P yo tampoco te entiendo a que te refieres :xD
pero TiFa cuando estoy buscando un apellido... digamos 'Calle Núñez'
Si busco con 'Calle' = CORRECTO (encuentra)
Si busco con 'Núñez' = CORRECTO
Si busco con 'Calle Núñez' = CORRECTO
Si busco con 'Calle Nunes' = INCORRECTO (no encuentra)
Si busco con 'Núñez Calle' = INCORRECTO
Si busco con 'Nu Ca' = INCORRECTO
Como podrás ver solo encuentra al alumno con esas 3 maneras de ingresarlos...
Eso quiere decir que funciona verdad? :rolleyes:
Ahh pos mira que bien, cuando te referias a 1 Textbox asumi que te referias a que solo se insertaba 1 solo apellido y no los dos juntos....
Aunque literalmente usando LIKE %Lopez Ruiz% funcione, yo habia asumido que era1 solo apellido %Lopez% pero si tu textbox accepta los 2 campos, yo me inclinaria mas por el array, los 2 parametros y el
WHERE Apellido_Paterno = parametro1 OR Apellido_materno = parametro2
La razon? optimizacion ;) (solo si los 2 campos anteriores son indices) ya que la clausula LIKE filtra en todos los registros existentes y inexistente (NULL) de la tabla y si yo tengo 5 millones de registros.... ya tomas la idea.
Pero si prefieres mantenerte con el LIKE ni modo :P
por ahora siiiii :)
Gracias!
Un Saludo ;D