Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Davis

SELECT com parâmetros (problema no WHERE)

Recommended Posts

Eu tenho que fazer a seleção de acordo com alguns critérios mas não tô conseguindo achar a lógica desse SELECT.

 

No sistema eu peço pro usuário colocar os parâmetros da busca mas os mesmos NÃO SÃO OBRIGATÓRIOS, ou seja, o usuário pode filtrar só por cidade se quiser. Eu já tinha feito algo semelhante em outra tela, com a mesma lógica mas não funcionou. :( Creio que por que não tinha datas ou campos dropdownlist (combobox).

 

Vejam:

 

ALTER PROCEDURE dbo.spFindCustomerAction	@gender		varchar(1) = NULL, --textbox	@birth_bgn		smalldatetime = NULL, --textbox	@birth_end		smalldatetime = NULL, --textbox	@city			varchar(50) = NULL, --textbox	@type_member	int = NULL --dropdownlist (combobox)AS	SET DATEFORMAT DMY		SELECT 		C.id,		(case			when C.middle_name  = '' then C.name_cust + ' ' + C.surname_cust			when not C.middle_name = '' then C.name_cust + ' ' + C.middle_name + ' ' + C.surname_cust		end) AS name_surname, C.type_street, 		(D.title_dict + ' ' + C.name_street + ', ' + C.build_number + '/' + C.flat_number) AS address,		C.post_code, C.city, (C.landline + ' / ' + C.mob_phone+ ' / ' + C.fax) AS land_mob_fax, 		C.email, C.type_member, D1.title_dict AS title_member, C.acc_number, C.other_info	FROM		tbCustomers AS C	INNER JOIN tbDict AS D ON C.type_street = D.id --Title for type_street	INNER JOIN tbDict AS D1 ON C.type_member = D1.id --Title for type_member	WHERE		C.del = 0		AND C.city LIKE '%' + @city + '%'		AND C.gender = @gender		AND C.type_member = @type_member		AND (C.birth_date BETWEEN @birth_bgn AND @birth_end)			RETURN

Alguém tem alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente algo assim: AND (@city IS NULL OR C.city LIKE '%' + @city + '%' AND (@gender IS NULL OR C.gender = @gender) AND (@type_member IS NULL OR C.type_member = @type_member)Para todos os parâmetros.Jothaz

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.