Criando Pergunta com caixa de seleção
Vai aí uma dica de como criar uma pergunta para usar em suas rotinas onde aparece uma tela com caixa de seleção.
Primeiramente vamos montar o fonte para gerar a tela:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include "protheus.ch" User Function fTipoSit(l1Elem,lTipoRet) Local cTitulo:="" Local MvPar Local MvParDef:="" Private aSit:={} l1Elem := If (l1Elem = Nil , .F. , .T.) DEFAULT lTipoRet := .T. cAlias := Alias() // Salva Alias Anterior IF lTipoRet MvPar:=&(Alltrim(ReadVar())) // Carrega Nome da Variavel do Get em Questao mvRet:=Alltrim(ReadVar()) // Iguala Nome da Variavel ao Nome variavel de Retorno EndIF aSit := {"A - TODOS","B - LIBERADOS","C - BLOQUEADOS"} MvParDef:="ABC" cTitulo :="Tipos de Situação" IF lTipoRet IF f_Opcoes(@MvPar,cTitulo,aSit,MvParDef,12,49,l1Elem) // Chama funcao f_Opcoes &MvRet := mvpar // Devolve Resultado EndIF EndIF dbSelectArea(cAlias) // Retorna Alias Return( IF( lTipoRet , .T. , MvParDef ) ) |
Agora vamos configurar a pergunta:
Agora no fonte que irá receber o parâmetro o tratamento do resultado é bem simples:
Usando CONTÉM ($)
1 2 3 4 5 6 7 |
cTipoSit := MV_PAR06 cTipoSit:= MV_PAR06 If "A"$cTipoSit //seu código Endif |
ou usando numa consulta SQL
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
nReg := 0 cTipoSit:= MV_PAR06 //recebe o resultado da pegunta cSitQuery := "" For nReg:=1 to Len(cTipoSit) cSitQuery += "'"+Subs(cTipoSit,nReg,1)+"'" If ( nReg+1 ) <= Len(cTipoSit) cSitQuery += "," Endif Next nReg cSitQuery := "%" + cSitQuery + "%" BeginSql alias cAliasX SELECT SC1.* FROM %table:SC1% SC1 WHERE SC1.%notDel% SC1.C1_TPSIT IN (%exp:Upper(cSitQuery)%) ORDER BY %exp:cOrdem% EndSql |
E o resultado final, quando você entrar e sai do campo a janela será exibida.