[RESOLVIDO] comparação de datas

Discussão em 'EMS , HCM e Totvs 11' iniciado por Will, Fevereiro 5, 2010.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Will

    Will Membro Participativo

    Tenho um for each de uma tabela x, dentro do mesmo eu dou um find last do buffer da mesma tabela, a intenção com isso é se o registro atual da minha tabela tiver data 10/01/2010, neste find do buffer vo uter q catar o registro anterior com a data masi próxima da atual, ou seja dou um find last no meu buffer onde a data do buffer tem que ser menor que a data atual, porém o sistema está se perdendo, no caso, a forma correta seria, exemplo tenho mais dois registros com data retroativa, um com 09/11/2009 e outro com 20/12/2009. Pelo certo ele deveria trazer o registro cuja data é 20/12/2009, porém nesta hora ele se perde e busca o outro registro. Pareçe que ele considera somente o dia.
  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Will,

    Mostra a lógica do código que você esta utilizando nesta comparação para podermos ajudar.

    No aguardo,
  3. Will

    Will Membro Participativo

    Segue o código
    Código:
    for each funcionario no-lock
             where funcionario.cdn_estab >= i-cdn_estab-ini and 
                   funcionario.cdn_estab <= i-cdn_estab-fim and
                   funcionario.cdn_funcionario >= i-cdn_funcionario-ini and 
                   funcionario.cdn_funcionario <= i-cdn_funcionario-fim and
                   funcionario.dat_admis_func >= da-dat_admis_func-ini and 
                   funcionario.dat_admis_func <= da-dat_admis_func-fim,
        each func_ccusto no-lock
             where func_ccusto.cdn_empresa = funcionario.cdn_empresa and
                   func_ccusto.cdn_estab = funcionario.cdn_estab and
                   func_ccusto.cdn_funcionario = funcionario.cdn_funcionario and
                   func_ccusto.dat_ult_atualiz >= da-dat_ult_atualiz-ini and 
                   func_ccusto.dat_ult_atualiz <= da-dat_ult_atualiz-fim,
        each rh_ccusto no-lock
             where rh_ccusto.cdn_empresa = func_ccusto.cdn_empresa and
                   rh_ccusto.cod_rh_ccusto = func_ccusto.cod_rh_ccusto
        break by funcionario.cdn_funcionario
              by func_ccusto.dat_ult_atualiz:
    
    define buffer b_rh_ccusto for rh_ccusto.
    assign ccAnterior = "".
    if can-find(last b_func_ccusto where b_func_ccusto.dat_ult_atualiz < func_ccusto.dat_ult_atualiz
                                     and b_func_ccusto.cdn_funcionario = func_ccusto.cdn_funcionario) then do: 
       find last b_func_ccusto where b_func_ccusto.dat_ult_atualiz < func_ccusto.dat_ult_atualiz
                                 and b_func_ccusto.cdn_funcionario = func_ccusto.cdn_funcionario.
       if avail b_func_ccusto then do:
          find b_rh_ccusto no-lock where b_rh_ccusto.cod_rh_ccusto = b_func_ccusto.cod_rh_ccusto.
          assign ccAnterior = string(b_func_ccusto.cod_rh_ccusto) + " " + b_rh_ccusto.des_rh_ccusto.
       end.
    end.
    
    end.
  4. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    Will,

    Se você tem mais de uma empresa e estabelecimentos cadastrados acho que seu problema esta na comparação, tenta fazer assim:
    Código:
    if can-find(last b_func_ccusto where b_func_ccusto.cdn_empresa     = func_ccusto.cdn_empresa
                                     AND b_func_ccusto.cdn_estab       = func_ccusto.cdn_estab
                                     AND b_func_ccusto.cdn_funcionario = func_ccusto.cdn_funcionario
                                     AND b_func_ccusto.dat_ult_atualiz < func_ccusto.dat_ult_atualiz) then do: 
       find last b_func_ccusto where b_func_ccusto.cdn_empresa     = func_ccusto.cdn_empresa
                                 AND b_func_ccusto.cdn_estab       = func_ccusto.cdn_estab
                                 AND b_func_ccusto.cdn_funcionario = func_ccusto.cdn_funcionario
                                 AND b_func_ccusto.dat_ult_atualiz < func_ccusto.dat_ult_atualiz.
    
    T+
  5. Will

    Will Membro Participativo

    O cara, vlw pela força funcionou
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página