Home

Linha Microsiga Protheus

Páginas filhas
  • A710FIL - Edita Expressão do Filtro

Ponto-de-Entrada: A710FIL - Edita Expressão do Filtro
Versões: Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Microsiga Protheus 10
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Idiomas: Espanhol , Inglês
Descrição:

LOCALIZAÇÃO : Funções A710ProjOP() , A710ProjPed() , A710ProjSC() , A710ProjPC() , a710Proc()

EM QUE PONTO : PE será chamado antes da IndRegua para os alias SC2, SC6, SC1, SC7 e SHC permitindo que a expressão filtro do IndRegua possa ser editada antes de sua execução.

Eventos


 

Programa Fonte
MATA711.PRW
Sintaxe

A710FIL - Edita Expressão do Filtro ( < PARAMIXB> ) --> cFiltro

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
PARAMIXB Vetor Array com os dados do filtro. O formato do array é: PARAMIXB[1] -> Álias do filtro. ; PARAMIXB[2] -> Expressão de filtro. X
Retorno
    cFiltro(caracter)
  • (Vide Observações)
Observações

Retorno:
 

Será retornado a expressão que será utilizada na IndRegua.
Caso o retorno não seja do tipo caracter sera ignorado e assumido filtro  padrão.
Note que a expressão do filtro poderá estar vazia em alguns casos.
Neste caso, testar isso ao acrescentar expressão no filtro, não incluindo "  .and. " antes da inserção da expressão desejada. Exemplo:

cFiltro := If(!Empty(cFiltro), ".And.", "") + 'C2+OBS = "TESTE"'

Exemplos
USER FUNCTION A710FIL/*/PARAMIXB é um array composto pelo alias e expressao filtro.O Alias devera ser tratado para manipular apenas os alias desejados.Os alias que serão tratados pelo PE sao: SC2, SC6, SC1, SC7, SHC.Pelo SC2 o PE sera acionado na projeção e na geração de OP (A710PROJOP e A710PROC).Tratar isso usando ProcName(2) identificando onde fazer o tratamento desejado.Prestar atenção na adição de expressão no filtro, acrescentando '.and.' apenas se a expressao filtro não estiver vazia.Parâmetros MV_PAR01 a MV_PAR11 poderão ser 'lidos' nas variáveis 'nPar01' a 'nPar11'/*/Local cAlias := PARAMIXB[1]Local cFiltro := PARAMIXB[2]Local cOldAli := Alias()Local cProg := ProcName(2)If cProg = 'A710PROC'* Return(.T.) // Qualquer retorno nao caracter será// ignorado e usará o filtro padrãoEndifIf nPar01 == 2 // Projeção pelo início* Return(.T.)EndifIf cAlias == 'SC2'cFiltro += If(!Empty(cFiltro), '.And.', '') + ''TESTE' $ C2_OBS'ElseIf cAlias == 'SC7'cFiltro += If(!Empty(cFiltro), '.And.', '') + ''TESTE' $ C7_OBS'Endif//* Se quiser 'checar' a expressão do filtro, salve//* a expressão em um arquivo conforme abaixo//* MemoWrit('FILTRO.TXT', cFiltro)//* Se alterar o Alias corrente, retorne ao alias inicial conforme abaixo//* dbSelectArea(cOldAli)Return(cFiltro)