Árvore de páginas

Ponto-de-Entrada: QNCFILPD - Alteração de Filtro
Abrangências: Microsiga Protheus 8.11 , Microsiga Protheus 10 , Microsiga Protheus 11
Versões: Microsiga Protheus 8.11 , Microsiga Protheus 10 , Microsiga Protheus 11
Compatível Países: Todos
Sistemas Operacionais: Todos
Compatível às Bases de Dados: Todos
Idiomas: Português (Brasil) , Espanhol , Inglês
Descrição:
Ponto de Entrada criado para mudar o Filtro da Browse.
Ponto de chamada: na montagem dos array com as pendências de Não conformidades / Plano de ação / ações corretivas do usuário logado.
Programa Fonte
QNCA050.PRW
Sintaxe

QNCFILPD - Alteração de Filtro ( < PARAMIXB> ) --> cExp

Parâmetros:
Nome Tipo Descrição Default Obrigatório Referência
PARAMIXB Array of Record 1- Alias (QI2 - Não conformidades, QI3 - Plano de ação, QI5 - Ações corretivas x Ações)
2 - Query padrão (somente informado no Ambiente TOP Connect)
X
Retorno
    cExp(caracter)
  • Retorno do filtro:
    no ambiente TOP CONNECT será a expressao QUERY do Usuario,
    no ambiente CODEBASE será a expressao XBASE para o filtro.
Exemplos
USER FUNCTION QNCFILPD()              //  Este ponto de entrada atua sobre a seleção das tabelas    LOCAL cALias := ''                                  //  QI3, QI5 ou QI2 independes entre si e dependente      LOCAL cQuery := ''                                 //  do banco de dados usado. Para TOP será sobreposta a query padrão,    LOCAL cRet                                            //  para os demais (Não TOP) será aplicado filtro.	    cALias := PARAMIXB[1]                   if len(PARAMIXB) > 1          cQuery := PARAMIXB[2]         	// Valida PARAMIXB se existir PARAMIXB [2] recebe a query original e devolve a do usuario.    endIf								// se não existir devolve o filtro definido.    If cQuery <> ''						// É Top reescreve query's        if cAlias == 'QI3'      // Plano de ação              cRet  := "SELECT QI3.QI3_FILMAT,QI3.QI3_MAT,QI3.QI3_CODIGO,QI3.QI3_REV,QI3.QI3_STATUS,QI3.QI3_ABERTU, "             cRet  +=" QI3.QI3_ENCPRE,QI3.QI3_TIPO,QI3.R_E_C_N_O_,QI3.QI3_FILIAL,QI3.QI3_PROBLE "		             cRet  +=" FROM " + RetSqlName("QI3") + " QI3 "             cRet  +=" WHERE  QI3.QI3_FILMAT='"+cMatFil+"' AND QI3.QI3_MAT='"+cMatCod+"' AND "             cRet  +=" QI3.QI3_STATUS = '3' AND "	//<<<<<<<<  mudança da query padrão (Somente "Procede")             cRet  +=" QI3.QI3_ENCREA='"+SPACE(8)+"' ORDER BY " + SqlOrder("QI3_FILMAT+QI3_MAT")               Alert (cRet)         Endif	         if cAlias == 'QI5'     // Ações corretivas x Ações              cRet  :=" SELECT QI5.QI5_FILMAT,QI5.QI5_MAT,QI5.QI5_PEND,QI5.QI5_CODIGO,QI5.QI5_REV, "              cRet  +=" QI5.QI5_STATUS,QI5.QI5_TPACAO,QI5.QI5_PRAZO,QI5.QI5_REALIZ,QI5.R_E_C_N_O_, "		              cRet  +=" QI5.QI5_DESCRE,QI5.QI5_DESCCO,QI5.QI5_DESCOB,QI5.QI5_FILIAL "              cRet  +=" FROM " + RetSqlName("QI5")+" QI5 "              cRet  +=" WHERE  QI5.QI5_FILMAT='"+cMatFil+"' AND QI5.QI5_MAT='"+cMatCod+"' AND "              cRet  +=" QI5.QI5_STATUS = '4' AND "    //<<<<<<<< mudança da query padrão  (Somente 100%)              cRet  +=" QI5.QI5_PEND='S' ORDER BY " + SqlOrder("QI5_FILMAT+QI5_MAT+QI5_PEND")              Alert (cRet)          Endif           if cAlias == 'QI2'    // Não conformidades              cRet  :=" SELECT QI2.QI2_FILRES,QI2.QI2_MATRES,QI2.QI2_STATUS,QI2.QI2_FILIAL,QI2.QI2_ANO,QI2.QI2_FNC,QI2.QI2_REV,QI2.QI2_ANEXO, "              cRet  +=" QI2.QI2_DESCR,QI2.R_E_C_N_O_,QI2.QI2_PRIORI,QI2.QI2_OCORRE,"              cRet  +=" QI2.QI2_CONPRE,QI2.QI2_CONREA,QI2.QI2_DDETA "              cRet  +=" FROM " + RetSqlName("QI2") + " QI2 "              cRet  +=" WHERE QI2.QI2_FILRES='"+cMatFil+"' AND QI2.QI2_MATRES ='"+cMatCod+"' AND "              cRet  +=" QI2.QI2_STATUS = '3' AND "    //<<<<<<<< mudança da query padrão  (Somente "Procede")              cRet  +=" QI2.QI2_CONREA='"+SPACE(8)+"' ORDER BY " + SqlOrder("QI2_FILRES+QI2_MATRES+QI2_STATUS")              Alert (cRet)          Endif			      Else                               // Não é TOP Define Filtros          if cAlias == 'QI3' .And. cQuery == ''              cRet  := " QI3_STATUS = '3'"              Alert (cRet)          end                        if cAlias == 'QI5' .And. cQuery == ''              cRet  := " QI5_STATUS = '4'"              Alert (cRet)          end                   if cAlias == 'QI2' .And. cQuery == ''              cRet  := " QI2_STATUS = '3'"              Alert (cRet)          end	    EndIf    RETURN (cRet) // devolve nova query ou filtro.