Ir para conteúdo

POWERED BY:

Arquivado

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

notax

[Resolvido] movenext

Recommended Posts

Pessoal, beleza?

 

Olha só eu tenho um loop do tipo while com movenext...

 

assim:

<%
While Not objRS1.EOF 
'codigo...
objRS1.MoveNext
Wend
%>

 

Só que dentro desse loop eu coloquei uma condicional para casa alguns registros estivessem dentro dessa condicional não serem impressos em tela... ou seja, fiz algo assim:

 

<%
While Not objRS1.EOF 

if xxx = "blablabla" then
objRS1.MoveNext
end if
'codigo...
objRS1.MoveNext
Wend
%>

 

 

O problema é que AS VEZES, em algumas consultas específicas, principalmente nos casos onde vários registros, entram na condicional rola esse erro:

 

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

 

Já tentei de tudo... mas não sei o pq acontece...

 

algo curioso é o seguinte... se coloco um on error resume next ele repete o nome do registro anterior no próximo registro... não sei se ficou claro...

 

Alguém da um help?

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o numero do erro e linha do code ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na real assim, acabei de descobrir uma inf nova...

 

Quanto o último registro do objRS1 entra nessa condicional é que dá o erro... apenas qdo o último registro entra...

 

Pq daí o que acontece? Ele volta pro topo do loop tipo while mas não encontra mais nenhum registro no bd...

 

E agora? Como saio dessa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<% 

While Not objRS1.EOF  
xxx =xxx& objRS1[0]&";"
objRS1.MoveNext
Wend 

cont=0
xxx1=split(xxx,";")

While Not objRS1.EOF
if xxx1(cont) = "blablabla" then 
xxx1(cont)=""
end if 
objRS1.MoveNext
cont=cont+1
Wend 

%>

 

Não coloque 2 objRS1.MoveNext, simplesmente deixe o xxx1 em branco xxx1=""

Espero ajudar.

Até +

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi...

 

Pq dois loops iguais? Preciso de tudo no mesmo loop pq do contrário não ficará ordenado como desejo...

 

não saquei muito bem a lógica da coisa... pode explicar um pouco melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele gera algum número de erro...

 

tente assim

 

<%
While Not objRS1.EOF 
if xxx = "blablabla" then
end if
'codigo...
objRS1.MoveNext
Wend
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está a parte do codigo com o que imprime na tela os valores para eu adaptar para voce

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi...

 

Pq dois loops iguais? Preciso de tudo no mesmo loop pq do contrário não ficará ordenado como desejo...

 

não saquei muito bem a lógica da coisa... pode explicar um pouco melhor?

Pelo que entendi você quer o seguinte:

 

Fazer um laço while

colocar uma condição se

se xxx(que é o valor de objRS1) for igual a "blablabla" então ele pega o objRS1 e dá um movenext

fim da condição se

'algum código

objRS1 dá um novo movenext

fecha o while

 

o que eu propuz foi o seguinte:

dei um laço while,

peguei a variavel xxx e concatenie nela o valor de objRS1 concatenei também algum caracter delimitador no caso eu usei o ponto e virgua (;)

o objRS1 dei um movenext

fechei o while

 

depois de armazenar tudo usei a função split para separar o que eu armazenei no xxx pondo o valor dentro de uma array que chamei de xxx1

crei um contador que nomei de cont com o valor inicial zero

 

dei um outro while

coloquei a mesma condição se

se xxx1(da posição do contador que no caso da primeira volta do loop é zero, a segunda é um etc) for igual a "blablabla" então ao invéz dele dar um objRS1.movenext ele simplesmente fala que xxx1[da posição do contador que no caso da primeira volta do loop é zero, a segunda é um etc] é igual a ""(nada)

fim da condição se

 

contador cont é igual a ele mais um

no caso do objRS1.movenext foi um erro meu na ora da lógica acho que foi desnecessário.

fechei o while

 

acho que foi isso que fiz, se está funcionando eu não sei porque não tenho suas tabelas para testar.

até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valew Daniel1, resolvido! Usei a sua proposta de uma forma um pouco diferente...

 

Criei um contador da seguinte forma:

 

se cai na condição do antigo "primeiro movenext" numerava em 1 e simplesmente ocultava o registro com uma div style display none...

 

Isso não deixará a consulta mais pesada pq se trata da excessão da excessão... casos raríssimos mesmo...

 

antes do agora único movenext eu deixo o contador nulo denovo e recomeça o lance!

 

Se não cai na primeira condicional o contador fica = 2 e permite exibição da div!

 

Valew pela idéia!

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.