MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Numeração com final sequencial usando informações de duas tabelas

    Compartilhe

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 24/8/2018, 18:37

    Senhores do conselho. Muito boa tarde.

    Mais uma vez venho recorrer do conhecimento dos senhores e da vossa habitual ajuda.

    Estou precisando de um módulo que faça o seguinte. EX.:

    Tabelas Originais:

    fis

    Colunas

    Pat Idp Atv
    212121 M1 1140001820
    212121 i3 xxxxx
    212121 i3 xxxxx
    212121 i3 xxxxx


    Cont

    Pat Idp Atv DtAqui
    212121 M1 1140001820 20131205
    212121 i2 xxxxx 20141002
    212121 i2 xxxxx 20140905
    212121 i2 xxxxx 20140905


    Como deve ficar:

    fis

    Colunas

    Pat Idp Atv
    212121 M1 1140001820-00000
    212121 i3 1140001820-00005
    212121 i3 1140001820-00006
    212121 i3 1140001820-00007


    Cont

    Pat Idp Atv DtAqui
    212121 M1 1140001820-00000 20131205
    212121 i2 1140001820-00004 20141002
    212121 i2 1140001820-00002 20140905
    212121 i2 1140001820-00003 20140905
    212121 i2 1140001820-00001 20101215


    O campo de amarração é o Pat

    Para o Atv onde o Idp for "M1" deverá receber a sequencia -00000,
    Ai os primeiros deverão ser os da tabela Cont onde o Idp seja "I2" e a sequencia respeitando a data de aquisição mais antiga, como mostra o exemplo.
    Terminando a sequencia na tabela Cont Idp "I2", deverá continuar na tabela Fis onde o Idp seja "I3", conforme exemplo, lembrando que essa sequencia será feita por Pat como campo de amarração.

    Qualquer dúvida estou a disposição.

    Desde já agradeço a atenção


    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 28/8/2018, 19:13

    Boa tarde Srs do Conselho.

    Ninguém teria uma ideia para que eu consiga resolver essa questão?

    Desde já agradeço

    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 28/8/2018, 19:19

    Boa tarde Carlos,

    Pode disponibilizar o DB para verificar?

    Aguardo.

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 28/8/2018, 21:20

    Boa tarde Livio


    Segue conforme sua solicitação.

    Desde já agradeço
    Anexos
    MODELO DE EXEMPLO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (20 Kb) Baixado 4 vez(es)
    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 29/8/2018, 14:47

    Bom dia,

    Coloque esse código num módulo e execute:

    Código:
    Sub AlterarTabelas()
        Dim rst1 As DAO.Recordset
        Dim rst2 As DAO.Recordset
        Dim db As DAO.Database
        Dim nIndice As Long
        
        Set db = CurrentDb
        
        Set rst1 = db.OpenRecordset("SELECT * FROM CONT ORDER BY DTAQUI")
        Set rst2 = db.OpenRecordset("SELECT * FROM FIS ORDER BY PAT")
        
        nIndice = 0
        Do While Not rst1.EOF
            rst1.Edit
            Select Case rst1("IDP")
                Case "M1"
                    rst1("ATV") = rst1("ATV") & "-00000"
                Case "i2", "i3"
                    nIndice = nIndice + 1
                    rst1("ATV") = rst1("ATV") & "-" & Format(nIndice, "00000")
            End Select
            rst1.Update
            rst1.MoveNext
        Loop
        Do While Not rst2.EOF
            rst2.Edit
            Select Case rst2("IDP")
                Case "M1"
                    rst2("ATV") = rst2("ATV") & "-00000"
                Case "i2", "i3"
                    nIndice = nIndice + 1
                    rst2("ATV") = rst2("ATV") & "-" & Format(nIndice, "00000")
            End Select
            rst2.Update
            rst2.MoveNext
        Loop
    End Sub
    Anexos
    MODELO DE EXEMPLO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (22 Kb) Baixado 5 vez(es)

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 29/8/2018, 15:25

    Bom dia Livio

    Coloquei conforme sugerido o código em um módulo e rodei.

    Deu o seguinte erro

    Erro de compilação

    O tipo definido pelo usuário não foi definido


    Agradeço a atenção
    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 29/8/2018, 15:31

    Em qual linha ocorre o erro?

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 29/8/2018, 15:48

    Oi

    Ele pinta a linha Dim rst1 As DAO.Recordset

    Grato

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 29/8/2018, 15:50

    E pinta de amarelo a

    Sub AlterarTabelas()

    Grato
    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 29/8/2018, 16:47

    É preciso adicionar a referência "Microsoft Office Access Database Engine Object Library" para funcionar
    Abra a janela do VBA (Alt + F11)
    Vá em Ferramentas, depois em Referências
    Procure na listagem pelo nome "Microsoft Office Access Database Engine Object Library", marque-a depois clique em OK.

    Tente executar novamente o código

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 29/8/2018, 17:55

    oK

    Rodou, porém ele está preenchendo somente o IDP M1 colocando o -00000, os IDP I2 e I3 ele não está fazendo nada


    Att.
    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 29/8/2018, 17:59

    No arquivo que enviei rodou certinho. Baixa ele e tenta adaptar para o seu db completo. Se não der certo, mande a versão do seu db que está tetando executar.

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 29/8/2018, 19:09

    Livio.

    Desculpe o incômodo

    Está quase perfeito, porém ele não está fazendo a sequencia da forma correta.

    Veja no exemplo em anexo onde temos as tabelas após rodar o módulo, as tabelas como deveriam ter ficado e uma visão geral para melhor entendimento.


    Grato
    Anexos
    EXEMPLO DA CORRECAO E VISTA GERAL PARA MELHOR ENTENDIMENTO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (9 Kb) Baixado 4 vez(es)
    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 29/8/2018, 19:16

    Chegando em casa a noite olho isso para você. Tinha feito com base na sua primeira explicação de como queria que ficasse. Agora ficou diferente.

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 29/8/2018, 19:19

    Beleza.

    Aguardarei e

    Desde já agradeço seu empenho em me ajudar


    Abs

    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 30/8/2018, 16:19

    Fiz algumas alterações, veja se resolve:
    Anexos
    MODELO DE EXEMPLO.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (32 Kb) Baixado 4 vez(es)

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 30/8/2018, 18:20

    Livio. Boa tarde

    Ele ainda não está fazendo a sequencia correta

    Veja

    PAT ATV IDP
    1414141414 1869800000-00006 I3
    1414141414 1869800000-00007 I3
    1414141414 1869800000-00000 M1


    PAT ATV IDP DTAQUI
    1414141414 1869800000-00000 M1 20050408
    1414141414 1869800000-00002 I2 20080622
    1414141414 1869800000-00001 I2 20091107
    1414141414 1869800000-00002 I2 20101215

    Deveria ficar assim

    PAT ATV IDP
    1414141414 1869800000-00004 I3
    1414141414 1869800000-00005 I3
    1414141414 1869800000-00000 M1


    PAT ATV IDP DTAQUI
    1414141414 1869800000-00000 M1 20050408
    1414141414 1869800000-00001 I2 20080622
    1414141414 1869800000-00002 I2 20091107
    1414141414 1869800000-00003 I2 20101215

    Obrigado


    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 30/8/2018, 19:37

    Amigo, tem que ter uma base do que você está pedindo, se for alguma coisa sem ter uma base para gerar o código, não dá. Está ainda mais confuso que antes.

    No arquivo que você mandou do excel está assim:

    [Você precisa estar registrado e conectado para ver esta imagem.]

    [Você precisa estar registrado e conectado para ver esta imagem.]

    Logo deduzi que a base seria que:

    M1 sempre será: 0000

    I2 e I3 Começam com 00001 e no próximo item, iria somar a última contagem com 1, ou seja, 00002

    Após I2, se tiver um M1, a contagem iria zerar para I2, mas para I3, continuaria a sequência

    Porém, agora ficou diferente novamente...

    Muito confuso. scratch

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 30/8/2018, 20:32

    Entao Livio o raciocínio é esse, vamos imaginar a coisa com um só PAT

    O campo PAT é o campo de amarração entre as duas tabelas.

    Nas duas tabelas eu terei o mesmo PAT com o IDP "M1", e tanto um quanto o outro deverão ser sequencia "-00000"
    Agora na tabela CONT eu posso ter o mesmo PAT, com o mesmo ATV, porém com IDP "I2" e na tabela FIS o mesmo PAT com o mesmo ATV, porém com o IDP "I3", então é como se fosse uma só tabela, exemplo:

    PAT 101010 ATV 15000000 IDP M1
    PAT 101010 ATV 15000000 IDP M1
    PAT 101010 ATV 15000000 IDP I2
    PAT 101010 ATV 15000000 IDP I2
    PAT 101010 ATV 15000000 IDP I2
    PAT 101010 ATV 15000000 IDP I3
    PAT 101010 ATV 15000000 IDP I3
    PAT 101010 ATV 15000000 IDP I3
    PAT 101010 ATV 15000000 IDP I3
    PAT 101010 ATV 15000000 IDP I3

    Como ficaria:

    PAT 101010 ATV 15000000-00000 IDP M1
    PAT 101010 ATV 15000000-00000 IDP M1
    PAT 101010 ATV 15000000-00001 IDP I2
    PAT 101010 ATV 15000000-00002 IDP I2
    PAT 101010 ATV 15000000-00003 IDP I2
    PAT 101010 ATV 15000000-00004 IDP I3
    PAT 101010 ATV 15000000-00005 IDP I3
    PAT 101010 ATV 15000000-00006 IDP I3
    PAT 101010 ATV 15000000-00007 IDP I3
    PAT 101010 ATV 15000000-00008 IDP I3

    É isso

    Muito obrigado



    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 30/8/2018, 20:36

    Em tempo
    A sequencia deverá ser feita por PAT e ATV, ou seja, mudando o PAT e ATV a sequencia deverá ser começada de novo, a única coisa comum entre os PAT e ATV é que para todos eles no IDP M1 a sequencia é -00000
    avatar
    livio.sfranca
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 149
    Registrado : 09/01/2018

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  livio.sfranca em 30/8/2018, 20:50

    Agora sim você explicou melhor.

    Mas e quanto à ordem das linhas? Em uma das tabelas você informou que quer classificar por data para inserção do índice. E no caso da outra tabela em que não contém o campo data, qual seria a ordenação dos valores?

    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 30/8/2018, 21:08

    Na tabela Fis não tem ordem
    Disse que a ordem na tabela Cont é a DataAqui da menor para a maior para que a sequencia fique mais adequada, ou seja

    data 20080504, sequencia -00001, data 20081210, sequencia -00002, data 20120315, sequencia - 00003, etc, ou seja a sequencia começando da data mais antiga para a mais nova





    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 3/9/2018, 12:33

    Bom dia Livio. Tudo na paz?

    Não será possível fazer o que preciso?


    No aguardo

    Grato


    Carlao2
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 190
    Registrado : 19/10/2016

    Re: Numeração com final sequencial usando informações de duas tabelas

    Mensagem  Carlao2 em 10/9/2018, 14:50

    Bom dia à todos

    Alguém poderia concluir o módulo que o Sr. Livio iniciou.
    Acredito faltar pouco para que chegue ao resultado que preciso


    Desde já agradeço

      Data/hora atual: 16/12/2018, 16:04