MEU LOOP ESTA SEM FIM
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
▼
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
Porque vc não usa
Do while Rst.EOF
Rst.MoveNext
Loop
?????
Do while Rst.EOF
Rst.MoveNext
Loop
?????
ô 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!!
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
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
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
Experimente utilizar o operador NOT antes do método EOF.
Exemplo:
Exemplo:
Do While Not Rst.EOF
[txt-color=#007100] [ô]Sua rotina...[/txt-color]
Rst.MoveNext
Loop
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
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
Mude o comando para:
Do Until rstTMP3.EOF = true
Do Until rstTMP3.EOF = true
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!!
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!!
Se o problema foi resolvido, ENCERRE o tópico.
Tópico encerrado , respostas não são mais permitidas