Ir para conteúdo

Arquivado

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

rafaeldupalio

calcular diferença de dias. e calcular valor a cobrar no mes

Recommended Posts

Olá rafael, blza!

 

Esse END não é de seu loop.

 

Acredito que vc deve estar usando algum IF e não fechou ele.

 

De uma revisada em seu code.

 

vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá rafael, blza!

 

Esse END não é de seu loop.

 

Acredito que você deve estar usando algum IF e não fechou ele.

 

De uma revisada em seu code.

 

vlw

Realmente will dei mole na data do codigo, acertando apareceu o seguinte erro:

ADODB.Recordset erro '800a0e78'

Operação não permitida quando o objeto está fechado.

/cyder/fechamento_bf.asp, line 55

segue o codigo:

vSql = "SELECT * FROM TAB_QUADRO_BRASFELS "

Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
'realizo os updates nos campos vazios(is null) da data_inicial
vSql="UPDATE TAB_QUADRO_BRASFELS SET DATA_INICIAL='"&var_datai&"' WHERE DATA_INICIAL Is Null"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
'realizo os updates nos campos vazios(is null) da data_fim
vSql="UPDATE TAB_QUADRO_BRASFELS SET DATA_FIM='"&var_dataf&"' WHERE DATA_FIM Is Null"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
do while not myRst.EOF
var_data_inicial=myRst.fields("DATA_INICIAL")
var_data_fim=myRst.fields("DATA_FIM")
var_valor=myRst.fields("VALOR")
var_valor_dia= (var_valor/30)
'verifica se a data fim é maior que a data inicial
If DateValue(var_data_fim)=>DateValue(var_data_inicial) Then
DiasUso = DateDiff("d",var_data_fim,var_data_fim)
end if
'faz o calculo de cobrança
var_cobranca = DiasUso * var_valor_dia
var_cobranca = (Round (var_cobranca))
vSql="UPDATE TAB_QUADRO_BRASFELS SET VALOR_UNI='"&var_cobranca&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
Var_total=var_total+var_cobranca
%>
<%
myRst.MoveNext
loop
%>
<%
Response.Write "Cobranca: R$ "
Response.Write (Round (var_total))
Response.Write ",00"
response.end
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera separei o codigo em outra pagina para debugar ele:

 

<!-- #include file="conn.asp" -->
<%
'Consulta de um formulário (Login e Senha)
vds_login = SESSION("VLOGIN")
vds_senha = SESSION("VSENHA")
vSql = "SELECT * FROM TAB_ACESSO WHERE NOME='"&vds_login&"' AND SENHA='"&vds_senha&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
if myRst.BOF and myRSt.EOF then
Response.Write("<script language='JavaScript'>alert('Acesso Restrito, Favor efetuar o login!');location.href='index.html';</script>")
end if
%>
<%
VAR_STATUS="ATI"
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS WHERE STATUS'"&VAR_STATUS&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
response.write (vSql)
response.end
recebo o seguinte erro:

Microsoft OLE DB Provider for ODBC Drivers erro '80040e21'

O driver ODBC não oferece suporte para as propriedades solicitadas.

/cyder/fecha.asp, line 39

o que tem de errado nesse select? meu deus ta dificil no meu banco mysql o campo status esta com tipo:varchar(5) e collection: utf8_general_ci nulo:sim padrao:null

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera mais uma vez fiz o debugue na pagina que faria o calculo em loop:

<%
var_status =("ATI")
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS where status='"&VAR_STATUS&"' "
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
do while not myRst.EOF
'Colocando esse trecho dentro do loop da a msg de erro
var_data_inicial=myRst.fields("DATA_INICIAL")
var_data_fim=myRst.fields("DATA_FIM")
var_valor=myRst.fields("Valor")
var_valor_dia= (var_valor/30)
'verifica se a data fim é maior que a data inicial
If DateValue(var_data_fim)=>DateValue(var_data_inicial) Then
DiasUso = DateDiff("d",var_data_inicial,var_data_fim)
If DiasUso = "29" Then
DiasUso= DiasUso+1
End If
end if
'faz o calculo de cobrança
var_cobranca = DiasUso * var_valor_dia
var_cobranca = (Round (var_cobranca))
vSql="UPDATE TAB_QUADRO_BRASFELS SET VALOR_UNI='"&var_cobranca&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
Var_total=var_total+var_cobranca
myRst.MoveNext
loop
%>
<%
Response.Write "Cobranca: R$ "
Response.Write (Round (var_total))
Response.Write ",00"
response.end
%>

Galera fiz o debug do meu codigo de calculo colocando um response.write(variavel) e logo depois um response.end
identifiquei 2 cenarios
O primeiro se eu colocar as variaveis que recolhem do banco fora do loop ele faz so que nao executei de vez com medo de setar tds para o mesmo valor.
o segundo cenario é colocando as variaveis que recolhem do banco dentro do loop(o que eu acho ke é o certo) apresenta a msg de erro:
"Operação não permitida quando o objeto está fechado."
segue o codigo nesse segundo cenario
<%
var_status =("ATI")
'Faz o select no banco so nos itens que estão ativos"ATI"
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS where status='"&VAR_STATUS&"' "
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
do while not myRst.EOF
var_data_inicial=myRst.fields("DATA_INICIAL")
var_data_fim=myRst.fields("DATA_FIM")
var_valor=myRst.fields("Valor")
var_valor_dia= (var_valor/30)
'verifica se a data fim é maior que a data inicial
If DateValue(var_data_fim)=>DateValue(var_data_inicial) Then
DiasUso = DateDiff("d",var_data_inicial,var_data_fim)
'se a data de uso for igual a 29 soma-se +1 para fechar 30 dias de uso
If DiasUso = "29" Then
DiasUso= DiasUso+1
End If
End if
'faz o calculo de cobrança
var_cobranca = DiasUso * var_valor_dia
var_cobranca = (Round (var_cobranca))
'faz update no banco e seta o campo "valor_uni" com o valor que foi cobrado naquele mes
vSql="UPDATE TAB_QUADRO_BRASFELS SET VALOR_UNI='"&var_cobranca&"'"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
'faz a conta do valor total a cada vez que passar pelo loop ele somaria ele + o valor de cobrança do item
Var_total=var_total+var_cobranca
myRst.MoveNext
loop
%>
<%
'aqui exibi o valor total
Response.Write "Cobranca: R$ "
Response.Write (Round (var_total))
Response.Write ",00"
response.end
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste post #46, que vc debugou, ele resolveu ou ainda da erro?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste post #46, que você debugou, ele resolveu ou ainda da erro?

nao will qnd eu coloco para recolher os dados do banco de dados

dentro do loop :

 

var_data_inicial=myRst.fields("DATA_INICIAL")
var_data_fim=myRst.fields("DATA_FIM")
var_valor=myRst.fields("Valor")
var_valor_dia= (var_valor/30)

da o erro:

"Operação não permitida quando o objeto está fechado."

 

ccomo os valores recolhidos do banco sao diferentes acredito que eles precisem estar dentro do loop se eu colocar fora ele funciona mas para um item apenas preciso que faça em todos os itens

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.