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

    Atualizar todos os campos de um subformulário após atualização

    Compartilhe

    angelomonteiro1981
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 16/04/2017

    Atualizar todos os campos de um subformulário após atualização

    Mensagem  angelomonteiro1981 em Qua 12 Jul 2017, 21:06

    Boa tarde.

    Tenho um FORMULÁRIO (FrmCadastro). Neste formulário tenho um SUBFORMULÁRIO acoplado (SubFrmCadEnvolvido).

    No SUBFORMULÁRIO (SubFrmCadEnvolvido), tenho uma COMBOX (txtNome) que após selecionar um nome nesta caixa, outros campos são preenchidos automaticamente, inclusive o campo PESO (Ex: 86).

    Sempre que vou fazer um novo cadastro, por exemplo, do senhor LOMBROSO DA SILVA, ao selecionar o nome dele na COMBOX (txtNome) do SUBFORMULÁRIO, automaticamente é aberto um FORMULÁRIO (FrmEnvolvidoAtualizar) que tem como base a CONSULTA (ConsEnvolvidoAtualizar) onde posso alterar o PESO desta pessoa.

    Ao alterar o PESO de LOMBROSO DA SILVA de 86 para 70, no FORMULÁRIO (FrmEnvolvidoAtualizar) por exemplo, preciso que o campo PESO do SUBFORMULÁRIO seja atualizado automaticamente com 70 e não com 86, conforme registros anteriores.

    ALÉM DISSO, preciso o PESO de LOMBROSO DA SILVA seja atualizado não somente neste novo registro, MAS TAMBÉM, em todos os outros registros anteriores.

    Até consegui fazer isso parcialmente. PORÉM, ao atualizar o PESO, quando fecho o FORMULÁRIO (FrmEnvolvidoAtualizar) gostaria que o campo PESO fosse atualizado instantaneamente, inclusive, que essa atualização fosse propagada para todos os outros registros anteriores onde o senhor LOMBROSO DA SILVA apareça.

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: Atualizar todos os campos de um subformulário após atualização

    Mensagem  Phillip_Junior em Qua 12 Jul 2017, 22:08

    Olá angelomonteiro1981

    Meu nobre, suas informações estão confusas, haja vista nós precisarmos saber detalhes importantes desse problema.

    Vc tem formulario (FrmCadastro).

    Neste formulário teem um subformulario (SubFrmCadEnvolvido).


    No subformulario (SubFrmCadEnvolvido),

    tenho uma combox (txtNome) que após selecionar um nome nesta caixa, outros campos são preenchidos automaticamente, inclusive o campo peso (Ex: 86).

    Ok! até aqui entendido.

    Mas esse subformulário esta relacionado com o que ? Essa combox txtnome tem como consulta qual tabela onde busca informações automáticas ?


    Ai vc tem outro formulario (FrmEnvolvidoAtualizar)
    que tem como base a consulta(ConsEnvolvidoAtualizar).

    Ao alterar opeso de LOMBROSO DA SILVA de 86 para 70, no formulario (FrmEnvolvidoAtualizar) por exemplo, preciso que o campo PESO do
    subformulario seja atualizado automaticamente com 70 e não com 86, conforme registros anteriores.
    Isso significa que nesse formulario (FrmEnvolvidoAtualizar) existe outro subformulario correto?

    Explique com mais calma e detalhes para que serve cada formulário, quais tabela estão relações, pois não é possível ajudar assim ok ?


    Abraços







    .................................................................................
    Phillip_Junior
    Analista de Sistemas

    angelomonteiro1981
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 16/04/2017

    Re: Atualizar todos os campos de um subformulário após atualização

    Mensagem  angelomonteiro1981 em Qua 12 Jul 2017, 22:34

    1. Mas esse subformulário esta relacionado com o que ?

    R:O SUBFORMULÁRIO (SubFrmCadEnvolvido) está relacionado com a TABELA (tblCadEnvolvido) e foi incluído no FORMULÁRIO (FrmCadastro) que é um formulário principal.



    2. Essa combox txtnome tem como consulta qual tabela onde busca informações automáticas ?

    R: A ComBox (txtNome) busca as informações da TABELA (tblEnvolvido). Nesta TABELA, por meio do FORMULÁRIO (FrmEnvolvido) eu faço o cadastro com os dados de todos os envolvidos (nome, idade, peso, etc.).

    No evento "após atualizar" da Combox (txtNome) estou usando o seguinte evento:

    Private Sub txtNome_AfterUpdate()

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "FrmEnvolvidoAtualizar"

    stLinkCriteria = "[txtNome]=" & "'" & Me![txtNome] & "'"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    Me.Recalc
    End Sub



    ASSIM, quando seleciono um nome qualquer, ele abre o formulário com os respectivos registros, para que eu possa atualizar o PESO, por exemplo.



    3.Ai vc tem outro formulario (FrmEnvolvidoAtualizar)

    R: Sim, tenho outro FORMULÁRIO (FrmEnvolvidoAtualizar) - talvez seja desnecessário - mas uso ele atrelado a CONSULTA (ConsEnvolvidoAtualizar). Essa consulta tem como origem a TABELA (tblEnvolvido) onde eu faço o cadastro com os dados de todos os envolvidos (nome, idade, peso, etc.).



    4. Isso significa que nesse formulario (FrmEnvolvidoAtualizar) existe outro subformulario correto?


    R: Não, não existe outro subformulário; é apenas um FORMULÁRIO com os mesmos campos do FORMULÁRIO (FrmEnvolvido), porém neste, os campos NOME, IDADE, etc. estão desativados, ficando ativo apenas o campo PESO, para que eu possa alterá-lo. O "FrmEnvolvidoAtulizar" é aberto quando eu seleciono um nome qualquer na Combox do SUBFORMULÁRIO. Ele já abre no respectivo registro do nome selecionado na COMBOX para que eu possa atualizar o PESSO desta pessoa.

    Ao atualizar o PESO, fecho o formulário "FrmEnvolvidoAtualizar". Daí gostaria que ao fechar este formulário, o peso já fosse atualizado automaticamente no SUBFORMULÁRIO. Porém, para que a atualização seja efetivada, eu preciso selecionar o nome mais uma vez na COMBOX. Daí sim o peso atualiza.

    Mas, o mesmo nome se repete outras vezes em outros registros. PORTANTO, preciso que o PESO do senhor LOMBROSO, por exemplo, seja atualizado em outros registros anteriores também.

    No modo que está, ele atualiza somente o PESO do último registro. Por exemplo, do jeito que está, o senhor LOMBROSO FICA ASSIM:

    Dia 01/072017 - 86 (PESO)
    Dia 12/07/2017 - 70 (PESO)

    Preciso que, ao atualizar, o peso do registro efetuado no dia 01/07/2017 seja alterado automaticamente também, e que seja atualizado assim:
    Dia 01/072017 - 70 (PESO)
    Dia 12/07/2017 - 70 (PESO)



    Explique com mais calma e detalhes para que serve cada formulário, quais tabela estão relações, pois não é possível ajudar assim ok ?


    Abraços

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: Atualizar todos os campos de um subformulário após atualização

    Mensagem  Phillip_Junior em Qui 13 Jul 2017, 01:08

    Ola

    Bom !
    Primeira situação

    (Atualizar campo do subformulário após inserir dados em outro formulário)
    Se assim for a necessidade (oq concordo ser desnecessário ter esse form de atualização), vc terá que antes de retornar ao subformulário com o valor inserido no campo peso, passar o foco para a linha e o campo que deseja do subform no qual estava inserindo dados.

    Para isso, o sistema não irá realizar essa execução se não souber de quem é esse peso que vc esta alterando.
    Para resolver seu problema, basta quando abrir seu form de atualização de peso, capturar também o código que se refere a linha que está nesse subformulário para quando alterar e retornar o código encontre o código x dentro do subformulário e selecione a linha e capture o valor do campo do seu formulário peso e insira no campo peso atualizado.

    Agora o que não compreendi antes de criar um exemplo de código é: Esse valor que vc quer atualizar nesse campo peso dentro desse subform, ele deve atualizar também os dados cadastrados desse envolvido na tabela mestre ou somente ali naquela inserção daquele subform ?

    Explico:

    Digamos que vc tenha o joão na sua tabela mestre cadastrado e o peso dele seja 70kg.

    Pelo que entendi vc faz uma consulta nessa tabela usando uma combox dentro de um subformulario ao qual retorna os dados desse envolvido já cadastrado anteriormente mostrando o peso anterior, correto ?

    O que desejo saber antes de criar um exemplo de código é, se vc deseja ao localizar os dados desse envolvido já cadastrado la na tabela mestre e alterar o peso dele por esse subformulário atualizando no geral a tabela mestre que contem o peso e dados dele.

    Ou somente inserir um novo peso no seu subformulário que ira ficar registrado como se um registro de prontuário daquele envolvido. Tipo: na época do cadastro tinha 70 hoje tem 80 então ira puxar o nome dele e atualizar o peso mais sem alterar a informação anterior.


    Desculpe a perguntas, mas acredito que fica mais direto a solução compreendendo seu projeto.

    Sendo assim: irei colocar abaixo um tipo de atualização que vc pode fazer direto no seu subformulário sem necessidade de outro form.

    'evento antes de atualizar do seu campo peso
    'atualiza o registro da tabela de origem.

    camponomepesonoseusubform <> DLookup("nomedocampopesonasuatabelaorigem", "tabelaorigemOndeEncontrasseOcampoPeso", "campoidentificadornoseusubform = " & campoidentificadornoseusubform & "")


    Se não for isso, retorne que sem solução não vamos deixar ok ?

    Abraços






    .................................................................................
    Phillip_Junior
    Analista de Sistemas

    angelomonteiro1981
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 16/04/2017

    Re: Atualizar todos os campos de um subformulário após atualização

    Mensagem  angelomonteiro1981 em Qui 13 Jul 2017, 04:17

    Olá amigo,

    Primeiramente muito obrigado por sua disposição em ajudar.

    Quanto aos seus questionamentos, o que realmente preciso é que, uma vez atualizado o PESO, este seja atualizado na tabela raiz, onde foi cadastrado cada envolvido e seus respectivos dados. Além disso, por uma questões peculiares do projeto, preciso que, uma vez atualizado o PESO, que este se propague; que seja atualizado em todos os outros registros anteriores daquele envolvido. Não quero que seja uma espécie de prontuário, visto que, o objetivo aqui não é acompanhar a alteração de peso do envolvido.

    Assim, se no dia 1, foi feito um registro em nome de LOMBROSO e ele estava com 30 quilos; se no dia 2 foi feito outro registro em nome de LOMBROSO e ele estava com 30 quilos ainda, e se no dia 3 ao fazer outro registro em nome de LOMBROSO e for atualizado seu peso, de 30 para 50, preciso que nos registros dos dias 1 e 2 o peso dele também seja atualizado para 50.

    Quanto ao fato de ter um outro formulário para atualizar o PESO, gostaria que fosse assim, visto que, o objetivo é alertar o usuário do banco de dados a atentar para a necessidade ou não de atualizar o campo PESO. Assim, quando ele insere o nome de um envolvido e o formulário de atualização aparece na tela, ele saberá que deverá atentar para esse detalhe: atualizar ou não o PESO.

    Percebi que, quando quando eu atualizo o PESO neste formulário de atualização e fecho ele, o peso do senhor LOMBROSO não é atualizado automaticamente no SUBFORMULÁRIO do FrmCadastro. Para que seja atualizado preciso ir na ComBox (txtNome) e selecionar o nome do senhor LOMBROSO novamente. Feito isso, o peso então é atualizado, MAS, somente neste registros. Lá na tabela raiz (tblEnvolvido) o PESO também é atualizado, PORÉM, nos outros registros anteriores onde aparece o nome do senhor LOMBROSO, o PESO não atualiza, mas mantém o mesmo do momento em que foi registrado. Enfim, preciso que a atualização do PESO se propague para todos os registros do formulário principal (FrmCadastro).

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: Atualizar todos os campos de um subformulário após atualização

    Mensagem  Phillip_Junior em Qui 13 Jul 2017, 05:19

    Olá


    Ok amigo entendido sua necessidade!

    Utilize esse código no evento após alterar do sei campo peso no seu subformulário

    camponomepesonoseusubform <> DLookup("nomedocampopesonasuatabelaorigem", "tabelaorigemOndeEncontrasseOcampoPeso", "campoidentificadornoseusubform = " & campoidentificadornoseusubform & "")

    Significa que o valor que for diferente ao que está na tabela raiz do nome daquela linha, sera atualizado com o valor que vc inserir novo ali.

    Quanto a atualizar dados tipo dia 1 dia 2, basta vc fazer os relacionamentos dinamicamente que quando vc fazer o procedimento acima o valor do peso será informado nesses registro atualizados.

    Teste e retorne.

    Se não conseguir ter sucesso, post um pequeno exemplo do seu bd que vamos verificar o que possa ser feito para lhe ajudar.

    Abraços e sucesso


    .................................................................................
    Phillip_Junior
    Analista de Sistemas

      Data/hora atual: Sab 18 Nov 2017, 08:12