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

    [RESOLVIDO]Recuperar registro do último ID a partir de um botão em formulário diferente

    Compartilhe

    Valdomiro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 12/07/2012

    [RESOLVIDO]Recuperar registro do último ID a partir de um botão em formulário diferente

    Mensagem  Valdomiro em 28/1/2015, 17:42

    Caros amigos, como vão!?


    Peço, mais uma vez, ajuda a vocês.

    No meu projeto de biblioteca pessoal há um problema que não sei como contornar.

    Para o formulário de cadastro "livros" usei o comando "DoCmd.GoToRecord , , acNewRec" ao abrir. Assim, ele sempre abre pronto para se digitar um novo cadastro.

    Nesse formulário há botões para abrir formulários de inclusão de coisas específicas como "só Autor", "só Editora" e "só catalogação". Criei esses botões para o caso de ao começar a cadastrar um livro e perceber que não tem, por exemplo, determinado Autor na lista de autores, eu possa fazer o cadastro do Autor no formulário específico e voltar para completar o cadastro no formulário "livros".

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

    Ocorrências de dificuldades na sequência disso:

    1 - Quando eu fecho o formulário "Incluir só Autor", preciso dar um F5, ou seja, um refresh, para que o nome incluído apareça na lista de autores do formulário "livros". Mas, quando teclo o F5 o formulário é recarregado com o primeiro registro e não com o que eu estava trabalhando. Com isso eu tenho que pesquisar o cadastro que estava fazendo para conclui-lo

    2 - Para não precisar teclar F5 usei um artifício: Ao clicar no botão para abrir "Incluir só Autor" inseri uma macro para fechar o formulário "livros" e quando sair do formulário de cadastro do autor ele reabre o formulário "livros". Assim consegui dispensei o F5, mas como o formulário "livros" está "programado" com "DoCmd.GoToRecord , , acNewRec", ele abre pronto para um novo registro. O que me faz ter que pesquisar o cadastro que está incompleto e completá-lo.

    3 - Cheguei substituir "DoCmd.GoToRecord , , acNewRec" por "DoCmd.GoToRecord , , acLast" (que pesquisei aqui no fórum), mas ele me dá o último da ordem alfabética que configurei e não o último ID gerado, que para efeitos de completar dados é o que me interessará. Além do mais ao usar "DoCmd.GoToRecord , , acLast" no lugar de  "DoCmd.GoToRecord , , acNewRec" perco o benefício de abrir o formulário de inclusão sempre pronto para uma nova inclusão, e, por outro lado, não atinjo o meu propósito que é de ao voltar do formulário "Incluir só Autor" abrir o registro do último ID lançado.


    O meu propósito:

    1 - Manter o formulário "livros" abrindo sempre em um "Novo Registro", que é o que ocorre, atualmente, quando vou iniciar um cadastro de livros diretamente nele.

    2 - Excetuar esse procedimento, apenas quando se tratar de uma "volta" dos formulários "só Autor", "só Editora" e "só catalogação", para, em vez de abrir em um novo registro, ele recuperar o registro do último ID gerado, para que seja completado o cadastramento.


    A solução que estava pensado:

    1 - Criar um botão em cada um dos três formulários de inclusões isoladas: "só Autor", "só Editora" e "só catalogação", que contenha uma MACRO ou VBA que serviria para (quando eu fizer a inclusão específica neles) fechá-los individualmente e reabrir o formulário "livros" no registro referente ao último ID, que será, via de regra, o registro que eu estava cadastrando antes de ir para um dos outros três formulários citados.

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


    O código para o botão executar a funcionalidade pretendida é a parte que não estou sabendo fazer!


    ANEXEI o banco para melhor estudo do caso!


    Gratos,
    Valdomiro.


    Última edição por Valdomiro em 30/1/2015, 20:53, editado 1 vez(es)
    avatar
    hiperjohn
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 49
    Registrado : 06/06/2013

    Re: [RESOLVIDO]Recuperar registro do último ID a partir de um botão em formulário diferente

    Mensagem  hiperjohn em 30/1/2015, 16:47

    Seja sempre bem-vindo, Valdomiro.


    Segue o projeto com algumas modificações.

    No formulário só autores, existe um campo invisivel chamado txtUltimo que recebe o valor do último Id_livros. Quando vc clicar no botão "voltar para último Id", ele abrirá no cadastro que vc estava digitando. Se vc nao estava incluindo, voltará para o último cadastro registrado.
    (Obs: no modo design ou layout vc conseguirá ver os campos invisíveis)

    Siga a mesma lógica para os formulários Só editora e Só catalogação.

    O botão Gerenciar do formulário Frente abrirá o form Livros num novo cadastro.

    Qualquer dúvida, estamos à disposição.


    Valdomiro
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 12/07/2012

    Re: [RESOLVIDO]Recuperar registro do último ID a partir de um botão em formulário diferente

    Mensagem  Valdomiro em 30/1/2015, 20:52

    HiperJohn,

    Muito grato pela força, amigo!

    Vou implementar nos demais formulários de cadastros isolados.

    Enquanto aguardava a ajuda dos amigos aqui do fórum andei pesquisando, buscando  conhecimento, em como recuperar o último id  e solucionar a questão, e etc.

    Nessa busca, andava pensando em maneiras de atingir o propósito. Pensei em uma outra solução possível, mas não tenho, ainda, conhecimento para implementar.

    Seria no código "ao abrir" o formulário livros.

    Private Sub Form_Open(Cancel As Integer)

    PARA CAMPO título COM CONTEÚDO, VERIFICAR SE Autor OU editora OU livro OU catalogacao ESTÁ SEM CONTEÚDO.
    SE (Autor, editora, catalogacao) SEM CONTEÚDO, ENTÃO VÁ PARA O REGISTRO DO ÚLTIMO ID.
    SE COM CONTEÚDO ENTÃO DoCmd.GoToRecord , , acNewRec

    End Sub

    Com essa rotina eu teria também o desejado, pois geralmente eu digito o título do livro e, às vezes, ao buscar o autor ou a editora ou a catalogacao descubro que não está na lista. Nesse momento abriria um dos formulários de cadastro individual, por exemplo, "Só autor", e, depois de fechar o formulário "Só autor" o formulário "livro" abriria fazendo essa checagem e iria para o registro desejado: ou do último id gerado ou de um novo registro. Isso eliminaria o botão "Voltar para livro no último id".

    Mas, considero a questão resolvida!

    Fica ai o caso do Form_Open para estudo. E se alguém escrever o código eu, agradecidamente, o usarei.

    Grande abraço!
    Valdomiro.

      Data/hora atual: 16/8/2018, 04:53