MEU LOOP ESTA SEM FIM

NEYLIMA 12/07/2010 22:24:24
#347156
Desde ja agradeço a todos!!!O que acontece,tenho uma tabela com 3 registros e qdo vou atualizar esses dados buscando por esse loop ele só pega o primeiro e atualiza, através de outra rotina que eu fiz.Ele só consegue atualizar o primeiro registo sem fim,tenho que dar um Ctrl break pra ele parar se ñ fica infinito,Estou usando dessa forma ai embaixo,vejam:

Dim Rst as Adodb.Recordset
Set Rst=New Adodb.RecordSet
Rst.CursorLocation=AdUserClient

If Rst.RecordCount=0 Then
Msgbox!Sem dados[Ô]
Else
Rst.MoveFirst

Do Until Rst.EOF


Rst.MoveNext
Loop

End If
LIZANDER 12/07/2010 22:32:15
#347158
Porque vc não usa

Do while Rst.EOF


Rst.MoveNext
Loop

?????
NEYLIMA 12/07/2010 22:36:07
#347159
ô Parceiro valeu pela atenção!! Eu já testei dessa forma tb! Mas com o Rst.Movefirst. Como que meus scripts estão no serviço amanhã pela manhã usarei só co o MoveNext.Vou postar meu código aqui amanhã pra vcs darem uma olhada pois estou com esse projeto na empresa atrasado.Desde já agradeço a atenção de todos!!
JANDER 13/07/2010 09:06:41
#347173


Ve se vai funcionar do modo abaixo.

If Rst.RecordCount=0 Then
Msgbox!Sem dados[Ô]
Else
Do while Rst.EOF = false
Rst.MoveNext
Loop
end if
NEYLIMA 13/07/2010 09:21:12
#347175
Galera segue meu código que esta com problema no loop. Esses recordsets vem de uma planilha xls,que eu importo.
Os dados dessa tabela, eu preciso carrega-los e depois atualiza-los comparando com outra tabela que eu tenho uma definitiva ,mês anterior.
Como eu disse:dessa forma que esta ele carrega os dados e consegue atualizalos,porem ele fica dando um loop infinito.Galera ,quem pdoer me ajudar agradeço desde já!Abraços!!
----------------------------------------------------------
Dim lst2 As ListItem
Dim rstTMP3 As ADODB.Recordset
Set rstTMP3 = New ADODB.Recordset
rstTMP3.CursorLocation = adUseClient

rstTMP3.Open [Ô]Select * From tblSYSImportTMP3[Ô], clsSystemDataClass.Connection, adOpenKeyset, adLockOptimistic

If rstTMP3.RecordCount = 0 Then
MsgBox [Ô]sem dados[Ô]

Else

rstTMP3.MoveFirst

Do Until rstTMP3.EOF

bolValidated = True

lst2.SubItems(1) = Nz(Trim(rstTMP3([Ô]Nome Completo[Ô])))
If IsNull(rstTMP3([Ô]Nome Completo[Ô])) Then

bolValidated = False
GoTo SaveChanges

End If

lst2.SubItems(2) = rstTMP3([Ô]Cargo[Ô])
If IsNull(rstTMP3([Ô]Cargo[Ô])) Then

bolValidated = False
GoTo SaveChanges

End If

SaveChanges:

If Not IsNumeric(rstTMP3([Ô]cpf[Ô])) Then

MsgBox [Ô]CPF NÃO VALIDO[Ô]

End If

If clsValidatedCPFClass.validaCPFDig1(rstTMP3([Ô]cpf[Ô])) = True And clsValidatedCPFClass.validaCPFDig2(rstTMP3([Ô]cpf[Ô])) = True Then

MsgBox [Ô]CPF VALIDO[Ô], 0, [Ô]CPF VALIDADO[Ô]

Else

MsgBox [Ô]CPF NÃO VALIDO[Ô], 6, [Ô]ALERTA DO SISTEMA[Ô]

End If

Set clsValidatedCPFClass = Nothing

Set rstTMP = New ADODB.Recordset
rstTMP.CursorLocation = adUseClient

rstTMP.Open [Ô]Select CPF From tblSYSImportTMP Where CPF=[Ô] & rstTMP3([Ô]CPF[Ô]), clsSystemDataClass.Connection, adOpenKeyset, adLockOptimistic

If rstTMP.EOF = False Then

SaveChanges False, bolValidated
[ô][ô]UPDATE AQUI EU CHAMO A SUB SaveChangeS,ATUALIZA DADOS DO CLIENTE
Else
SaveChanges True, bolValidated
[ô][ô]INSERT AQUI EU CHAMO A SUB SaveChangeS,CASO O CLIENTE SEJA NOVO, DA 1 INSERT E MANDA PARA A TAB DEFINITIVA
End If

rstTMP3.MoveNext

Loop

End If
TECLA 13/07/2010 10:04:12
#347180
Experimente utilizar o operador NOT antes do método EOF.
Exemplo:
Do While Not Rst.EOF
[txt-color=#007100] [ô]Sua rotina...[/txt-color]
Rst.MoveNext
Loop
ALVAROVB2009 13/07/2010 10:49:45
#347183
NeyLima a primeira coisa que eu faria é justamente que o Tecla colocou
Mudar de
Do Until rstTMP3.EOF

Para
Do While not rstTEMP3.Eof
.
.
RstTemp3.movenext
Loop

E a segunda coisa colocar um debug na primeira linha da sua rotina para ir acompanhando o que o sistema esta fazendo, pois olhando assim sem ver ele executando, o seu código esta correto.

Tentai ai depois fala com a gente
EDERMIR 13/07/2010 11:14:35
#347188
Mude o comando para:

Do Until rstTMP3.EOF = true
NEYLIMA 14/07/2010 09:34:37
#347275
Olá galera!Bom dia ,a todos!Gostaria de agradecer atenção de todos!já resolvi meu problema.
Do until, ele estava dando um update interminavel só no primeiro registro,e o while tb só no primeiro porém ele parava.Depois descobri que o problema estava na minha conexão na chamada da function[Ô] insert e update[Ô].
Estou usando e funcionando:


Do While rst.EOF = False

Problema resolvido!!
Abraços a todos!!
TECLA 14/07/2010 10:50:14
#347278
Se o problema foi resolvido, ENCERRE o tópico.
Tópico encerrado , respostas não são mais permitidas