davidslima 21/1/2014, 15:31
Olá pessoal!
Harysohn, valeu pela dica. Ainda não tinha pensado em fazer loop pelos campos.
Na realidade não sou programador. Estou apenas quebrando um galho.
Consegui fazer o que queria da seguinte forma.
'Primeiro criei uma consulta classificando por Matricula em ordem crescente e anobase (ano de pagamento) em ordem decrescente.
sql = "SELECT * FROM Movimentos ORDER BY Matricula, anobase DESC;"
'coloquei o recordset pra verificar os campos
Set db = CurrentDb()
Set rs = db.OpenRecordset(sql)
rs.movelast 'pegar o ultimo valor'
lngContado = rs.RecordCount
rs.movefirst 'mover para início
'Depois iniciei o loop fazendo ele gravar a matricula e ano base atual e anterior comparando uma com a otra, caso fossem diferentes
'ele lança o registro em uma nova tabela SelAtrasados.
strMatANT = rs("Matricula")
strANOAnt = rs("ANOBASE")
DoCmd.RunSQL "INSERT INTO SelAtrasados SELECT * FROM Atrasados WHERE Matricula = '" & strMatANT & "' And ANOBASE = '" & strANOAnt & "'; "
rs.MoveNext
'Novo loop
Do While Not rs.EOF
strMatX = rs("Matricula")
strANOX = rs("ANOBASE")
If strMatX = strMatANT Then
'RetVal = SysCmd(acSysCmdUpdateMeter, lngContaProgresso)
strMatANT = rs("Matricula")
strANOAnt = rs("ANOBASE")
lngContaProgresso = lngContaProgresso + 1
SysCmd 2, lngContaProgresso
rs.MoveNext
Else
'RetVal = SysCmd(acSysCmdUpdateMeter, lngContaProgresso)
DoCmd.RunSQL "INSERT INTO SelAtrasados SELECT * FROM Atrasados WHERE Matricula = '" & strMatX & "' And ANOBASE = '" & strANOX & "'; "
strMatANT = rs("Matricula")
strANOAnt = rs("ANOBASE")
lngContaProgresso = lngContaProgresso + 1
SysCmd 2, lngContaProgresso
rs.MoveNext
End If
Loop
rs.Close
db.Close
'Depois disso abri essa tabela criada com os ultimos carnês criados para cada sócio e verifiquei o ultimo mês pago
procurando o mês que o vlr de pagamento fosse <> de 0 e fazendo com que ele fosse registrado nessa tabela tanto mês quanto ano em campos separados.
o código gerado foi esse
For lngConta = 1 To lngContadorTotal
strANO = rs("Anobase")
If rs("VLPAGO12") <> "0" Then
rs.Edit
rs("UltimoMes") = "12"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO11") <> "0" Then
rs.Edit
rs("UltimoMes") = "11"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO10") <> "0" Then
rs.Edit
rs("UltimoMes") = "10"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO9") <> "0" Then
rs.Edit
rs("UltimoMes") = "9"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO8") <> "0" Then
rs.Edit
rs("UltimoMes") = "8"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO7") <> "0" Then
rs.Edit
rs("UltimoMes") = "7"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO6") <> "0" Then
rs.Edit
rs("UltimoMes") = "6"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO5") <> "0" Then
rs.Edit
rs("UltimoMes") = "5"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO4") <> "0" Then
rs.Edit
rs("UltimoMes") = "4"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO3") <> "0" Then
rs.Edit
rs("UltimoMes") = "3"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO2") <> "0" Then
rs.Edit
rs("UltimoMes") = "2"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
If rs("VLPAGO1") <> "0" Then
rs.Edit
rs("UltimoMes") = "1"
rs("UltimoAno") = strANO
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
Else
rs.Edit
rs("UltimoMes") = "12"
rs("UltimoAno") = strANO - 1
rs.Update
rs.MoveNext
RetVal = SysCmd(acSysCmdUpdateMeter, lngConta)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Next lngConta
Então foi assim.
Quando a gente tem pouco conhecimento trabalha mais. Mas deixo aí como eu fiz, pq pode ajudar alguém de alguma forma.
Obrigado a todos do fórum. Consegui terminar esse pequeno projeto depois de muita pesquisa. O conteudo encontrado aqui foi essencial.