finhanobrega 26/4/2021, 13:18
Bom dia, ja agradeço pela ajuda
"
'Inicio o tratamento de erros
On Error GoTo TratareiErro
'Variável para referenciar o conjunto de registros
Dim Rs As DAO.Recordset
'Variável que armazenará o n° total de registros a serem percorridos no loop
Dim Contador As Long
'Variável que armazenará a contagem de registros a cada passada do loop
Dim ContaOProgresso As Long
'Instancio o recordset, ou seja, o conjunto de registros da tabela
Dim qData As Date
qData = Format(txtDataX, "mm/dd/yyyy")
Set Rs = CurrentDb.OpenRecordset("SELECT * FROM SuaTabela WHERE dataX=#" & qData & "#")
If Rs.RecordCount > 0 Then
'Movimento no recordset até o ultimo registro para precisar o número de registros na tabela
Rs.MoveLast
'Alimento a variável Contador com o total de registros no conjunto de dados, que é o recordset
Contador = Rs.RecordCount
'Movo para o primeiro registro do recordset
Rs.MoveFirst
End If
'Utilizo o SysCmd para executar uma barra de progresso para indicar a que pé encontrará o processamento.
SysCmd acSysCmdInitMeter, "Realizando as alterações, aguarde...", Contador
'Inicio o loop que irá do primeiro registro ao ultimo
'Veja que já sabemos a quantidade a ser percorrida na variável Contador
For ContaOProgresso = 1 To Contador
'Atualizo as informações da barra de progresso
'Mostrará a evolução de 1 a cada valor passado do Contador
SysCmd acSysCmdUpdateMeter, ContaOProgresso
'Abro a edição na linha que estou passando
Rs.Edit
'Insiro o dado da caixa de texto na coluna do campo2
Rs("ValorVendido") = txtVendido
'Atualizo o registro
Rs.Update
'E vou para o próximo
Rs.MoveNext
'Aqui acontece o loop, ou seja, retorno lá pra cima novamente
'apartir do For ContaOProgresso eu faço mesmo procedimento que fiz na linha de registro anterior.
Next ContaOProgresso
'Quando o For ContaOProgresso = 1 chegar ao total do Contador, o loop terá chegado ao seu final.
'Não resta mais nada a não ser fechar o recordset
Rs.Close
'Removo a barra de progresso
SysCmd acSysCmdRemoveMeter
'E informo uma mensagem dizendo o número de registros percorridos
MsgBox "OK, Total de: " & Contador & " registros", vbInformation, "Concluído"
Exit_TratareiErro:
Exit Sub
'Se algo impedir o funcionamento do código, emite uma mensagem informando ao usuário qual o erro
TratareiErro:
MsgBox "Ocorreu uma falha neste processamento." _
& vbCrLf & "Trata-se do erro n°: " & Err.Number _
& vbCrLf & "Descrição: " & Err.Description, vbCritical, "Erro inesperado"
Exit Sub
Fiz um exemplo, baixe, observe as datas na tabela, use uma delas e lance um valor e acompanhe o autopreenchimento:
Download: https://dl.dropboxusercontent.com/u/8080696/ajudas/fma/ExemploLoopPorData.accdb"
Adaptei o exemplo a cima e consegui fazer funcionar, porem eu preciso que por exemplo o primeiro registro comece de acordo com a caixa de texto e o segundo registro seria caixa de texto +1, terceiro registro seria caixa de texto + 2, como uma seguencia, colocando o numero 100 na caixa de texto, todos os registros encontrados por exemplo, ficasse na sequencia, 100,101,102,103,104.