MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

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

    avatar
    JIR
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JIR 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
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 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
    avatar
    JIR
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JIR 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
    wellingtoneo
    wellingtoneo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  wellingtoneo 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
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 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
    avatar
    JIR
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JIR 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

    [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios Captur10
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 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
    avatar
    JIR
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JIR 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
    [Resolvido]Actualização imediata na tabela e via Form antiguidade de 9807 funcionarios AttachmentZTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (804 Kb) Baixado 9 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 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
    avatar
    JIR
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  JIR 30/4/2018, 16:00

    Amigo Teixeira, Muito obrigado

    andei a complicar o que era simples, ficou excelente


    Abraço

    José Silva
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Alvaro Teixeira 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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 10:44