Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
Estou com uma dúvida e gostaria da ajuda de todos:
1 - Criei uma procedure no SQL Server
CREATE PROCEDURE dbo.SP_ITA_CONSULTA_CPF
@CPF VARCHAR(15)
AS
SET NOCOUNT ON
DECLARE @CONSULTA VARCHAR(15)
SET @CONSULTA = ISNULL((SELECT P1_IdCPF FROM CNTPROF WHERE P1_IdCPF=@CPF ),'0')
select @CONSULTA as [@OUT]
GO
2 - Eu preciso fazer uma verificação de CPF chamando essa procedure, ou seja quando o usuário digitar o cpf e não constar no BD, ele vai pra uma página de cadastro, ou se existir vai para alteração;
3 - Aqui é o código que faz a verificação do valor digitado pelo usuário.
<%
CPF = Request.Form("tmp_cpf")
SQL = "SP_ITA_CONSULTA_CPF '" & CPF & "'"
Set rs = DbConn.execute(SQL)
if not(rs.RecordCount = 0) then response.Redirect("login.asp?referer=formulario.asp&title=Altera%E7%E3o+de+Cadastro&")
%>
<script language="javascript">
window.location.href = 'formulario.asp?action=1';
</script>
4 - O que acontece é o seguinte:
Independente do valor que o usuário digita ele está sendo redirecionado para a página de alteração.
Gostaria muito da ajuda de vocês.
Muito obrigado pela força.
Bom feriado a todos!
Opa Jonathandj,
Então coloquei seu código só que ele continua redirecionando para a mesma página, ou seja se eu digitar um valor "0" no textbox e pedir para consultar ele vai para a página de alteração.asp, sendo que se não existe no BD deveria para a página de inclusão...
Estou jogando o link ai para você ver como que funciona, caso tenha dúvidas:
http://www.tangram.inf.br/ita_hotsite/solicite2.asp
Coloque qualquer numero e veja o que acontece.
Obrigado
Abrcs
então coloque
if rs.eof then response.Redirect("login.asp?referer=formulario.asp&title=Altera%E7%E3o+de+Cadastro&")
retirando o NOT do If
Você já checou o que está retornando no RecordSet?
Opa...
o código está assim:
if rs.eof then response.Redirect("login.asp?referer=formulario.asp&title=Altera%E7%E3o+de+Cadastro&")
Qualquer CPF que digito, ele não faz a verificação no BD, ou seja, independente do CPF que foi digitado ele está sempre para a página "formulario.asp".
Sendo que a PROCEDURE que estou pedindo para executar é essa:
CREATE PROCEDURE dbo.SP_ITA_CONSULTA_CPF
@CPF VARCHAR(15)
AS
SET NOCOUNT ON
DECLARE @CONSULTA VARCHAR(15)
SET @CONSULTA = ISNULL((SELECT P1_IdCPF FROM CNTPROF WHERE P1_IdCPF=@CPF ),'0')
select @CONSULTA as [@OUT]
GO
Essa PROCEDURE faz a verificação, mas não está me retornando se vai pra página de alteração caso exista o cpf, ou página de formulário caso não exista...
Obrigado!
Desculpe por está enxendo o saco rs.
Sim vi o retorno do recordset e está sendo este:
SP_ITA_CONSULTA_CPF '12345678900'
Sim vi o retorno do recordset e está sendo este:SP_ITA_CONSULTA_CPF '12345678900'
1º - Este retorno se deu na página ASP ou diretamente no SQL Server?2º - Se foi no ASP, este valor retornou quando você digitou um CPF válido? Se sim, teste passando um valor inválido.
Opa.1 - Foi na página ASP2 - Qualquer numero que digito, ele está me retonando o valor, independente se é válido ou não:SP_ITA_CONSULTA_CPF 'numero digitado'
Então o problema está na sua Stored Procedure.
Mas na minha Stored Procedure, já está dizendo se caso não exista, ele retorne "0"
SET @CONSULTA = ISNULL((SELECT P1_IdCPF FROM CNTPROF WHERE P1_IdCPF=@CPF ),'0')
Se retornar 0 ele teria que ir para a página de formulario.asp, caso exista o CPF ele deveria ir para alteracao.asp...
Se eu executo minha Proc no Query Analyzer ele funciona de boa, colocando tanto um CPF válido como inválido.
Valeu!
Então é o seguinte, no seu if você não está checando se o retorno foi 0, mas sim se retornou ou não, considerando que no caso de nulo a stored procedure coloca 0, altere seu if desta forma e veja se funciona.
if rs.Fields(0).Value <> 0 then response.Redirect("login.asp?referer=formulario.asp&title=Altera%E7%E3o+de+Cadastro&")Assim ele checa se retornou 0, se retornar outro valor diferente de 0 ele redireciona para a alteração.
O Anderson... agora funfo.. muito obrigado pela força...Abrcs e até mais!
tente trocar
if not(rs.RecordCount = 0) then response.Redirect("login.asp?referer=formulario.asp&title=Altera%E7%E3o+de+Cadastro&")por:
if not rs.eof then response.Redirect("login.asp?referer=formulario.asp&title=Altera%E7%E3o+de+Cadastro&")