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 |
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.
MATA711.PRW
A710FIL - Edita Expressão do Filtro ( < PARAMIXB> ) --> cFiltro
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 |
-
cFiltro(caracter)
- (Vide 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"'
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)