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]Gravar campo calculado na tabela

    Compartilhe

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    [Resolvido]Gravar campo calculado na tabela

    Mensagem  RodriguesChqao em Qui 22 Fev 2018, 14:33

    Bom dia
    Tenho um formulário com um campo ano vinculado a uma tabela onde inseri a a seguinte expressão na origem do controle, considerando que que no mesmo formulário existe um campo data com o nome Dt_Exp

    = Direita([Dt_Exp);4)

    O objetivo é capturar no campo ano o ano da data digitada, por exemplo 21/02/2018 retornaria no campo ano 2018

    Meu problema é que no formulário está funcionando mas este dado não é gravado na tabela

    Gostaria de pedir ajuda nesse sentido

    Campos envolvidos da tabela Tbl_Credencial:

    Dt_Exp no formato data hora

    ano no formato texto

    Campos envolvidos do Formulário Frm_Credencial

    Dt_Exp no formato data hora
    campo ano no formato caixa de texto e com origem do controle = = Direita([Dt_Exp);4)

    Obrigado


    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5134
    Registrado : 15/03/2013

    Re: [Resolvido]Gravar campo calculado na tabela

    Mensagem  ahteixeira em Qui 22 Fev 2018, 15:49

    Olá Luis Lopes,

    Pode também usar assim:
    = Year(Dt_Exp)

    Sendo um capo data, obtem o ano.
    Quanto ao gravar, não vejo a necessidade, pois se já tem o campo data, sempre que necessite do ano será colocar na origem a instrução acima, mesmo em consultas.
    No entanto, também pode gravar na tabela, agora mão sebemos como está a fazer a gravação dos seus dados.

    O ideal será disponibilizar a sua base de dados com os objectos necessarios para se compreender de que forma está a efetuar as gravações.

    Outra questão, como ficou a situação no tópico abaixo:
    [Você precisa estar registrado e conectado para ver este link.]
    Não devemos abandonar os tópicos, sendo uma boa conduta dar o retorno a quem o ajuda.
    Ficamos aguardar a regularização.

    Abraço

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    Re: [Resolvido]Gravar campo calculado na tabela

    Mensagem  RodriguesChqao em Qui 22 Fev 2018, 16:17

    Olá Teixeira.

    Na verdade este banco de dados já está em uso e estou tentando gravar o ano da Dt_Exp na tabela para tentar adaptar um código de numeração automática por ano para o Campo Nr_Credencial.

    Seria assim, pegar o campo calculado Ano do formulário Frm_Credencial e gravar no campo Ano da tabela Tbl_Credencial.

    Preciso passar essa fase para tentar conseguir a numeração automática para o outro campo.

    Segue o Bd anexo.

    obrigado
    Anexos
    123.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (2.1 Mb) Baixado 5 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5134
    Registrado : 15/03/2013

    Re: [Resolvido]Gravar campo calculado na tabela

    Mensagem  ahteixeira em Qui 22 Fev 2018, 16:58

    Olá Luís Lopes

    Colocando o seguinte código no evento "depois de atualizar", coloca o ano no campo desejado:
    Código:
    Private Sub Dt_Exp_AfterUpdate()
        Me.xAno = year(Me.Dt_Exp)
    End Sub

    Também criei uma consulta (qyr_Atualizar Ano), caso já tenha muitos registos para atualizar de uma só vez, depois não será mais necessário:
    Código:
    UPDATE Tbl_Credencial SET Tbl_Credencial.Ano = Year([Dt_Exp]);

    Segue o meu teste:
    cld.pt/dl/download/092e6abf-4077-4cef-aed8-37e7767696e6/123_act.zip

    Abraço

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    Re: [Resolvido]Gravar campo calculado na tabela

    Mensagem  RodriguesChqao em Qui 22 Fev 2018, 17:29

    Boa Teixeira funcionou perfeitamente.

    Mais duas dúvidas



    Como poderia criar uma numeração automática por ano para o Campo Nr_Credencial.

    Estou tentando ajustar códigos disponibilizados aqui no fórum sem sucesso.

    obrigado pela atenção

    RodriguesChqao
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 104
    Registrado : 31/05/2016

    Re: [Resolvido]Gravar campo calculado na tabela

    Mensagem  RodriguesChqao em Sex 23 Fev 2018, 12:22

    Bom dia
    Com a ajuda do fórum resolvi a numeração automática da seguinte forma:

    Código:
    If DCount("Nr_Credencial ", "Tbl_Credencial") = 0 Then
      Nr_Credencial = Format("1", "0000") & "/" & Year(Date)
    Else
      If Eval(Right(DMax("[Nr_Credencial]", "Tbl_Credencial", "Right([Nr_Credencial],4)= " & Year(Date)), 4)) <> Year(Date) Then
         'aqui é a virada de ano, volta para 0001/novo ano.
         Nr_Credencial = Format("1", "0000") & "/" & Year(Date)
      Else
        Nr_Credencial = Format(Left(DMax("[Nr_Credencial]", "Tbl_Credencial", "Right([Nr_Credencial],4)= " & Year(Date)), 4) + 1, "0000") & "/" & Year(Date)
      End If
    End If

    Muito obrigado
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5134
    Registrado : 15/03/2013

    Re: [Resolvido]Gravar campo calculado na tabela

    Mensagem  ahteixeira em Sex 23 Fev 2018, 14:58

    Olá Luís Lopes,

    Quer bom que consuguiu!
    Obrigado pelo retorno, o fórum agradece.

    Abraço

      Data/hora atual: Dom 27 Maio 2018, 04:20