Ir para conteúdo

POWERED BY:

Arquivado

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

lurufino

Problemas com Asp e Stored Procedure

Recommended Posts

Oi pessoal,

 

É o seguinte: tenho a procedure abaixo no meu banco.

 

CREATE PROCEDURE SP_FLUXO	@DATA DATETIME,	@ADM FLOAT OUTPUT,	@COM FLOAT OUTPUT,	-- Retornando o valor do mês anterior	@REC_ANT FLOAT OUTPUT,	@DES_ANT FLOAT OUTPUTASSELECT @ADM = isnull((Select SUM(VALOR) FROM TBDESPESA WHERE TIPO = 'ADM' AND DATA = @DATA ), 0 );SELECT @COM = isnull((Select SUM(VALOR) FROM TBDESPESA WHERE TIPO = 'COM' AND DATA = @DATA ), 0 );-- Efetua os calculos dos meses anterioresSELECT @REC_ANT = ISNULL( (SELECT SUM(VALOR) FROM TBDESPESA WHERE TIPO = 'REC' AND DATA = DATEADD( MONTH, -1, @DATA )), 0 );SELECT @DES_ANT = ISNULL( (SELECT SUM(VALOR) FROM TBDESPESA WHERE TIPO <> 'REC' AND DATA = DATEADD( MONTH, -1, @DATA )), 0 );RETURNGO

Ela está funcionando tudo beleza, chamo ela no meu arquivo .ASP e mostro o seu resultado numa tabela, só que esse campo data que recebo aí na procedure funciona da seguinte maneira:

 

mes=request.Form("mes")	ano=request.Form("ano")	if mes = "" then  mes = "01"	end if	if ano = "" then   ano = "2004" 	end if    cmd.CommandText = "SP_FLUXO"    cmd.CommandType = 4    cmd.Parameters("@DATA") = "" & mes & "/01/"  & ano &""    cmd.Execute    m = "" & mes & ""    select case m        case "01"	mes_consulta = "Janeiro"        case "02"	mes_consulta = "Fevereiro"        case "03"	mes_consulta = "Março"        case "04" 	mes_consulta = "Abril"        case "05"	mes_consulta = "Maio"        case "06"	mes_consulta = "Junho"        case "07"	mes_consulta = "Julho"        case "08"	mes_consulta = "Agosto"        case "09"	mes_consulta = "Setembro"        case "10"	mes_consulta = "Outubro"        case "11"	mes_consulta = "Novembro"        case else	mes_consulta = "Dezembro"   end select       For Each param In cmd.Parameters        select case param.name           case "@ADM"	ADM1 = param.value           case "@COM"       end select   Next

Só que como você's podem ver em negrito, quando o passo o valor da data, tenho que dizer o dia que quero. Então faço isso para todos os dias, do dia 01 até o dia 31 do mês, funciona tudo legal nos meses que tem 31 dias, nos outros dá erro por que quando chega na procedure ela verifica que aquele dia do mês e ano escolhidos não existe.

 

Não sei se resolvo isso na procedure ou no asp, se alguém puder me ajudar agradeço muito, isso é URGENTE.

 

Luciene ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz uma validação antes de chamar a Procedure

 

ASP [/tr][tr]dtData = "31/2/2004"

if IsDate(dtData) = False then

response.write "falso"

else

response.write "verdadeiro"

end if

[/tr]

 

falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

rOcKLoCo essa função isdate apenas permite que a página seja exibida sem reportar nenhum erro, mas de fato ocorre que ele não executa a consulta e portanto não traz o resultado que preciso, o que não deixa de ser um erro.Luciene

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, de preferencia qdo você passar algum parametro tipo Data, passa no formato americano mm/dd/aaaafalows

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só que aqui, tanto o meu banco como o IIS e o windows está tudo configurado no formato brasileiro "dd/mm/yyyy" e não é isso que está me causando problema, o fato é que usei a função que você me falou mas aí quando o mês tem os outros dias "29, 30 e 31" ele não consulta, estive pesquisando sobre essa função ISDATE e ví que na verdade, essa função apenas verifica se o string "pode" ser convertido em um tipo data e não se a minha data é válida.Luciene

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma alternativa, separa a Data em Dia, Mês e Ano e passa na consulta separados tmb

 

ex:

 

ASP [/tr][tr]select * from tabela where Day(campo_data) = "&Day(Date)&" AND Month(campo_data) = "&Month(Date)&" AND Year(campo_data) = "&Year(Date)&""[/tr]

 

tente isso...

 

ok??

 

falows

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.