ifahidalgo 12/6/2015, 19:20
achei na internet, a solução para as minhas 2 questões
no site accessdoprogramador
On Error GoTo TratareiErro
'Variável para referenciar o banco de dados
Dim Db As DAO.Database
'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
'Variável que receberá a letra que será capturada usando a função Left(Rs(Index),1)
Dim L As String
'Instancio o objeto banco de dados
Set Db = OpenDatabase(CurrentProject.Path & "\SysFunc.mdb")
'Instancio o recordset, ou seja, o conjunto de registros da tabela
Set Rs = Db.OpenRecordset("tblexcel")
'Movimento no recordset até o ultimo registro para precisar o número de registros no recordset
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
'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
'Utilizo a função Left para capturar somente a letra no inicio da string e armazenar na variável L
L = Left(Rs(0), 10)
'Abro a edição na linha que estou passando
Rs.Edit
'Já com a letra capturada a insiro na coluna Letra
Rs(12) = L
'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
'E também o banco
Db.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