Página 1 de 1

[resolvido] Gerar ID para grupo pelo form

Enviado: 03 Jul 2018, 16:55
por Carvalho
Senhores boa tarde,

tenho um form que gera automaticamente os itens de uma tabela, e nessa tabela se faz um relatório agrupado por "Bloco" exemplo,

E12C...E13C...E14C... ai vem o problema, gostaria de que ao apertar de um botão ele gerasse uma ID para cada grupo desses blocos na tabela IDSaida, tipo assim

E12C - 1110
E12C - 1110
E12C - 1110
E12C - 1110
E13C - 1123
E13C - 1123
E13C - 1123
E13C - 1123
E14C - 1345
E14C - 1345
E14C - 1345
E14C - 1345

Re: Gerar ID para grupo pelo form

Enviado: 08 Jul 2018, 12:52
por Avelino Sampaio
Carvalho

creio que vc possa executar esta tarefa, usando programação direto no relatório. Vc que é meu assinante, assista a vídeo-aula deste meu artigo:

http://www.usandoaccess.com.br/tutoriais/video-programacao-de-relatorios.asp?id=1#inicio

Aguardamos

Re: Gerar ID para grupo pelo form

Enviado: 08 Jul 2018, 13:35
por Carvalho
obrigado Avelino, porem não é no relatório e sim na tabela para ficar gravado no campo IDsaida cada grupo ter sua id única.

Re: Gerar ID para grupo pelo form

Enviado: 08 Jul 2018, 14:23
por Avelino Sampaio
Carvalho,

veja se o exemplo que fiz atende. utilizei o seguinte código no botão:

Código:
Private Sub Comando0_Click()
Dim rs As DAO.Recordset
Dim strSql$
Dim uid&
Dim cod$
'retorna com o recordset, somente dos registros sem o ID
strSql = "SELECT Codigo,ID FROM tblTeste WHERE id =0 ORDER BY Codigo;"
'Abre o recordset
Set rs = CurrentDb.OpenRecordset(strSql)
'captura o último ID lançado
uid = DMax("id", "tblTeste")
'percorrer os registros para numerar o ID
Do While Not rs.EOF
'verifica se mudou o código para acrecentar 1 ao ID
If cod <> rs!codigo Then
uid = uid + 1
cod = rs!codigo
End If
'atualiza a tabela com o novo ID
rs.Edit
rs!id = uid
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
MsgBox "Tabela Atualizada...", vbInformation, "Aviso"
DoCmd.OpenTable "tblTeste"
End Sub


Aguardamos

[Resolvido] Gerar ID para grupo pelo form

Enviado: 08 Jul 2018, 20:45
por Carvalho
Sensacional senhor Avelino, funcionou perfeitamente, fiz algumas alterações para que o numero randomizasse e ficou perfeito, obrigado.



Obs: Obrigado por ter reativado o fórum, nos ajuda muito, Deus continue te abençoando e te dando força e entendimento.


alteração feitas!

Código: Selecionar todos

Private Sub Comando0_Click()
Dim rs As DAO.Recordset
Dim strSql$
Dim uid&
Dim cod$
Dim Rn As Double 'alterado aqui
   Randomize  'alterado aqui
    Rn = Int(Rnd() * 99999) 'alterado aqui

    CurrentDb.Execute "Update tblteste SET Id = 0" 'alterado aqui
   
'retorna com o recordset, somente dos registros sem o ID
strSql = "SELECT Codigo,ID FROM tblTeste WHERE id =0 ORDER BY Codigo;"
'Abre o recordset
Set rs = CurrentDb.OpenRecordset(strSql)
'captura o último ID lançado
uid = DMax("id", "tblTeste")
'percorrer os registros para numerar o ID
Do While Not rs.EOF
    'verifica se mudou o código para acrecentar 1 ao ID
    If cod <> rs!codigo Then
    uid = uid + Rn 'alterado aqui
        cod = rs!codigo
    End If
    'atualiza a tabela com o novo ID
    rs.Edit
        rs!id = uid
    rs.Update
    rs.MoveNext
Loop
rs.Close
Set rs = Nothing
MsgBox "Tabela Atualizada...", vbInformation, "Aviso"
DoCmd.OpenTable "tblTeste"
End Sub


Resolvido!