Ir para conteúdo

Arquivado

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

rafaeldupalio

myRst.fields dentro do loop

Recommended Posts

Galera como o outro topico ta meio longo vou postar nesse aqui uma dificuldade especifica, preciso fazer um myRst.fields dentro do loop so que ao colocar ele recebo a msg de erro:

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

nao pode recolher campo do mysql dentro do loop? o que estou fazendo de errado???

no codigo abaixo:

<%

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
'começa o loop
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

Veja se não esta fechando o objeto recordset antes

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafa,

 

Um exemplo básico do WHILE

 

http://interessespessoais.com/programacaoweb/ciclos-while-e-do-loop-em-asp/

 

 

Analise seu code e procure deixar somente o que precisa dentro do While, os demais code deixe fora do laço.

 

Tb sempre Feche seus Recordset.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rafa,

 

Um exemplo básico do WHILE

 

http://interessespessoais.com/programacaoweb/ciclos-while-e-do-loop-em-asp/

 

 

Analise seu code e procure deixar somente o que precisa dentro do While, os demais code deixe fora do laço.

 

Tb sempre Feche seus Recordset.

will me diz nao sei se entendeu meu raciocinio nesse code a cima se eu deixar os myRst.fields vou conseguir fazer o calculo de cada item do meu banco? ou realmente precisa estar dentro do while? qnd vc diz fechar meus recordset vc diz colocar um conn.close no final de cada update e select?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fechar seu Recordset

myRst.Close
Set myRst = Nothing

O "conn.close" em geral se usa para conexao, por isso o "conn"

 

Quanto ao Loop, no link que te passei explica de forma básica porém clara, quando usa-lo.

 

Ou seja, digamos que vc tenha o Registros "Nome" conforme no exemplo, nesse caso ele ficará dentro do while pois terá o loop onde irá verificar na base de dados enquanto tiver registro ele fica no clico até que atinja o ultimo nome e então encerra o loop.

 

É isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fechar seu Recordset

myRst.Close
Set myRst = Nothing

O "conn.close" em geral se usa para conexao, por isso o "conn"

 

Quanto ao Loop, no link que te passei explica de forma básica porém clara, quando usa-lo.

 

Ou seja, digamos que você tenha o Registros "Nome" conforme no exemplo, nesse caso ele ficará dentro do while pois terá o loop onde irá verificar na base de dados enquanto tiver registro ele fica no clico até que atinja o ultimo nome e então encerra o loop.

 

É isso.

entao will eu preciso que o loop rode pelo meu banco fazendo a diferença dos dias como fazer isso sem recolher as variaveis? vc acha melhor eu colocar um myRst.close depois do ultimo update?

Compartilhar este post


Link para o post
Compartilhar em outros sites

é uma boa prática usar o myRst.Close e o Set myRst = Nothing, pois senão for mais usar, feche-os para economizar desempenho

Compartilhar este post


Link para o post
Compartilhar em outros sites

é uma boa prática usar o myRst.Close e o Set myRst = Nothing, pois senão for mais usar, feche-os para economizar desempenho

mas xan para eu fazer o while nao preciso dele aberto? por isso fiz o select la em cima. ainda nao consegui resolver meu problema ta dificil essa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, mas deixar muitos abertos sem necessidade resulta em queda de desempenho no bd

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, mas deixar muitos abertos sem necessidade resulta em queda de desempenho no bd

entendi mas xanbur sobre o myrst.field dentro do loop pod eme ajudar?

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.