weverton dias Postado 11 de Junho de 2022 Tópicos Que Criei: 30 Tópicos/Dia: 0.01 Meu Conteúdo: 152 Conteúdo/Dia: 0.03 Reputação: 3 Pontos/Conquistas: 1.193 Conteúdo Resolvido: 0 Dias Ganho: 5 Status: Offline Idade: 36 Dispositivo: Windows Denunciar Compartilhar Postado 11 de Junho de 2022 Bom Dia Pessoal! Estou criando uma formula para pagamento de Cesta Básica, porém preciso verificar na Ficha Financeira se o funcionário teve faltas no mês anterior, não estou conseguindo... Alguém que já desenvolveu poderia ajudar? Se TABCOMPL('CESTABASICA','S') = '1' AND C('0008')=0 /*aqui preciso verificar se existiu esse evento no envelope no mês anteior*/ Entao '400,00' Senao '0,00' FimSe Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
luisgustavogomes Postado 13 de Junho de 2022 Tópicos Que Criei: 5 Tópicos/Dia: 0.00 Meu Conteúdo: 484 Conteúdo/Dia: 0.21 Reputação: 136 Pontos/Conquistas: 3.226 Conteúdo Resolvido: 0 Dias Ganho: 64 Status: Offline Idade: 35 Dispositivo: Android Denunciar Compartilhar Postado 13 de Junho de 2022 @weverton dias, bom dia! Existem algumas formas de revolver essa questão, logo segue uma delas. Criar uma consulta SQL, coloquei alguns campos que possam ser usado, caso precise, porém para sua verificação tratei a questão "Existe no mês anterior" na própria query, utilizando a coluna "IS_LASTMONTH" que retornará 0 para não existente e 1 para existente. Obs.: Deve ter as fórmulas criadas para os parâmetros da query. /*** SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET NOCOUNT ON; DECLARE @CODCOLIGADA INT ,@CHAPA VARCHAR(16) ,@ANO INT ,@MES INT ,@NROPERIODO INT ,@CODEVENTO VARCHAR(4) SET @CODCOLIGADA = :FRM_COLIGADA /*** FÓRMULA DA COLIGADA ***/ SET @CHAPA = :FRM_CHAPA /*** FÓRMULA DA CHAPA ***/ SET @ANO = :FRM_ANO /*** FÓRMULA DO ANO DA COMPETÊNCIA ***/ SET @MES = :FRM_MES /*** FÓRMULA DO MES DA COMPETÊNCIA ***/ SET @NROPERIODO = :FRM_PERIODO /*** FÓRMULA DO PERIODO ATUAL, OU FIXO ***/ SET @CODEVENTO = '1002' /*** DIGITAR EVENTO FIXO OU A FÓRMULA DE EVENTO CORRENTE ***/ DECLARE @ANOANTERIOR INT = YEAR(EOMONTH(DATEFROMPARTS(@ANO,@MES,1),-1)); DECLARE @MESANTERIOR INT = MONTH(EOMONTH(DATEFROMPARTS(@ANO,@MES,1),-1)); SELECT P.CODCOLIGADA ,P.CHAPA ,P.ANOCOMP ,P.MESCOMP ,P.NROPERIODO ,ISNULL(F.VALOR ,0) AS 'VALOR' ,ISNULL(F.REF ,0) AS 'REF' ,CASE WHEN F.CODCOLIGADA IS NOT NULL AND F.VALOR > 0 THEN 1 ELSE 0 END AS 'IS_LASTMONTH' FROM DBO.PFPERFF P LEFT JOIN DBO.PFFINANC F ON (P.CODCOLIGADA = F.CODCOLIGADA AND P.ANOCOMP = F.ANOCOMP AND P.MESCOMP = F.MESCOMP AND P.NROPERIODO = F.NROPERIODO AND P.CHAPA = F.CHAPA AND F.CODEVENTO = @CODEVENTO) WHERE P.CODCOLIGADA = @CODCOLIGADA AND P.CHAPA = @CHAPA AND P.ANOCOMP = @ANOANTERIOR AND P.MESCOMP = @MESANTERIOR AND P.NROPERIODO = @NROPERIODO ***/ Posteriormente, poderás criar a fórmula para executá-la, e conforme explicado anteriormente o campo para validar é o "IS_LASTMONTH", porém poderás recuperar qualquer outro campo da query. /*** EXECSQL('LUIS_MA'); RESULTSQL('LUIS_MA','IS_LASTMONTH'); ***/ Infelizmente, a passagem de parâmetro na fórmula para a execução da query não é permitida, por isso a utilização de outras, em relação ao evento FIXO é para melhorar a performance da consulta. Espero lhe ajudar, e se alguém tiver outra forma, por favor, teriam como postar? Abraços. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Jair - Fórmula Postado 13 de Junho de 2022 Tópicos Que Criei: 899 Tópicos/Dia: 0.14 Meu Conteúdo: 8.841 Conteúdo/Dia: 1.34 Reputação: 310 Pontos/Conquistas: 106.572 Conteúdo Resolvido: 0 Dias Ganho: 195 Status: Offline Idade: 52 Dispositivo: Android Denunciar Compartilhar Postado 13 de Junho de 2022 Vc pode usar por fórmula direto também... basta buscar com a função MV, que busca um valor na FF (Você passa o Mes e Ano pra o sistema buscar o valor)... segue um exemplo, que você ajustar ai dentro da sua fórmula. DECL MESANT, ANOANT; Se Mes=1 Entao SETVAR(MESANT,12) Senao SETVAR(MESANT, Mes-1) Fimse; Se MesAnt=12 Entao SETVAR(ANOANT, Ano-1) Senao SETVAR(ANOANT, Ano) Fimse; MV(MESANT, ANOANT, '0008') Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
Participe da conversa
Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.