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]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Compartilhe

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  JIR em 29/4/2018, 18:59

    Boa Tarde,

    será possível, via código VBA, quando abrir o form Ficheiro Pessoal, atualizar a tabela Ficheiro_Mestre o campo AntiguReal de todos os 9.807 funcionários

    de momento tenho o código que faz isso mas tenho de percorrer todos os funcionários para que atualize na tabela a antiguidade de todos os funcionários


    Código:
    Private Sub Form_Current()
       
    'Calcula Antiguidade em Anos, Meses e Dias
      If Not IsNull(Me.DATA_ADMISSAO) Then
           Me.txtAntig = Diff2Dates("DMY", Me.DATA_ADMISSAO, IIf(Not IsNull(Me.DATA_DEMISSAO), Me.DATA_DEMISSAO, Date))
       Else
           Me.txtAntig = vbNullString
       End If

    End Sub

    José Silva
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  ahteixeira em 29/4/2018, 19:53

    Olá José Silva,

    Como é um campo que varia todos os meses, o correto é ser um campo calculado na execução.
    No entanto respondendo à questão, obtém o pretendido com uma consulta atualizar.
    Pode fazer a chamada da consulta ao abrir o form.

    Abraço

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  JIR em 29/4/2018, 20:08

    Olá Teixeira,

    só que eu montei a BD armazenando esse calculo na tabela campo AntiguReal e o forme de lançar dados é o mesmo de consulta

    tenho vários relatórios baseados nos dados desta tabela e agora terei de alterar muito se não for ler à tabela

    mas se não tiver alternativa, partirei para a alteração de tudo


    José Silva
    avatar
    wellingtoneo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 292
    Registrado : 30/07/2012

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  wellingtoneo em 29/4/2018, 21:13

    Olá amigo!

    Olha de verdade não conseguir entender o que você quer fazer... se é atualizar o campo AntiguReal é só fazer a consulta de atualização da tabela ao abrir o formulário como o Teixeira falou.
    Uma ideia para montar a consulta... Adapte ao seu projeto.

    Código:
    Private sub Form_Open(Cancel As Integer)

    dim sql as string
    sql = "UPDATE  Ficheiro_Mestre SET AntiguReal = Diff2Dates(""DMY"", [DATA_ADMISSAO], IIf(Not IsNull([DATA_DEMISSAO]), [DATA_DEMISSAO], Date))"
    currentdb.execute sql

    End sub
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  ahteixeira em 29/4/2018, 23:06

    Olá a todos,

    José Silva, o ideal seria como já referi, mas pode deixar para outra altura que seja mais oportuna a alteração.
    Pode fazer conforme o colega Wellington exemplificou para o form e repare, você pode fazer alterações de dados este mês e ir retirar o reporte no próximo mês, então o ideal é chamar a consulta sempre antes para atualizar a antiguidade.

    Abraço a todos

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  JIR em 29/4/2018, 23:38

    Olá,

    deu erro, será que não é por falta do campo [Nº ORDEM]

    o erro

    Run-Time error 3061

    Poucos parâmetros 3 esperado

    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  ahteixeira em 30/4/2018, 10:29

    Olá José Silva,

    Anexe a base de dados apenas com a tabela em questão com alguns dados de teste e à função Diff2Dates
    A situação de anexar no fórum já foi resolvida.

    Abraço

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  JIR em 30/4/2018, 11:28

    Olá Teixeira,

    aqui vai parte da BD, agora por imposição do rgpd, regulamento de proteção de dados, tive de apagar e alterar parte dos dados
    Anexos
    ZTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (804 Kb) Baixado 5 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  ahteixeira em 30/4/2018, 14:25

    Olá José Silva,

    Obrigado por partilhar, assim ficou mais fácil para compreender e poder ajudar.
    Fez muito bem, alerto a todos os membros os dados dos exemplos deve ser de fictícios (amostragem).
    Amigos de Portugal, atenção ao novo Regulamento de Proteção de Dados


    Voltando à questão, crie uma consulta, altere para o modo de visualização em SQL e cole o código abaixo e teste:
    Código:
    SELECT Ficheiro_Mestre.AntiguReal, IIf(Not IsNull([DATA ADMISSAO]),Diff2Dates("DMY",[DATA ADMISSAO],IIf(Not IsNull([DATA DEMISSAO]),[DATA DEMISSAO],Date()))) AS AntiguReal_calculo FROM Ficheiro_Mestre;
    Podemos verificar o valor que está na base de dados e o valor calculado.
    Seguindo o raciocínio inicial seria apenas alterar a consulta para o tipo "Actualizar".
    Sempre que fosse necessário ter o campo AntiguReal actualizado era só chamar a consulta.

    Parece que a sua terefa não é dificil, dupliquei o form e reporte e exemplifiquei os campos calculados, veja se é isso:
    cld.pt/dl/download/7f2bed8b-06c7-4122-8e9f-a6c468965703/ZTeste_rev.zip

    Abraço

    JIR
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 73
    Registrado : 28/08/2016

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  JIR em 30/4/2018, 16:00

    Amigo Teixeira, Muito obrigado

    andei a complicar o que era simples, ficou excelente


    Abraço

    José Silva
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios

    Mensagem  ahteixeira em 30/4/2018, 16:41

    Olá José Silva,

    Obrigado pelo retorno, está no fórum certo para aprender a descomplicar.
    Qualquer coisa estamos cá.

    Abraço

      Data/hora atual: 15/8/2018, 19:29