Definir alfa xCursorPrin; Definir Numero nStatusProcesso; Definir alfa aMensagemProcesso; Definir Alfa aAspaDupla; Definir Alfa aCmdSql; Definir Alfa aCmdSql_Cond_NumFun; Definir Alfa aCmdSql_Cond_Parte; Definir Numero nParam_CodEmp; Definir Numero nParam_TipCol; Definir Alfa aParam_nomfun; Definir Numero nSql_R034Fun_Codemp; Definir Numero nSql_R034Fun_TipCol; Definir Numero nSql_R034Fun_NumCad; Definir Alfa aSql_R034Fun_NomFun; Definir Numero nSql_R034Fun_NroCra; Definir Funcao IniciaProcessamento(); Definir Funcao MontaResposta(); Definir Funcao BuscaDados(); Definir Funcao MontaCondicaoNumeFunc(); Definir Funcao AddProdutosToResposta(); aAspaDupla = "\""; IniciaProcessamento(); @------------------------------------------------------------------------------@ @----Função para iniciar a distribuição do processamento das informações-------@ @------------------------------------------------------------------------------@ Funcao IniciaProcessamento();{ nStatusProcesso = 1; aMensagemProcesso ="Processamento realizado com sucesso."; nParam_CodEmp=Listar.CodEmp; nParam_TipCol=Listar.TipCol; nParam_NroCra=Listar.NroCra; aParam_nomfun=Listar.nomfun; nParam_OffSet=Listar.OffSet; nParam_Limit =Listar.Limit; nParam_CodEmp=1; LimpaEspacos(aParam_nomfun); Se((aParam_nomfun="") e (nParam_NroCra=0) ){ nStatusProcesso = 0; aMensagemProcesso ="Necessário informar pelo menos um dos parâmetros(nomfun ou NroCra) para prosseguir."; } Se(nParam_Limit=0){ nParam_Limit = 10; }senao { Se(nParam_Limit > 100){ nStatusProcesso = 0; aMensagemProcesso ="Não é possível retornar mais de 100 registros nessa consulta."; } } Se(nStatusProcesso=1){ BuscaDados(); } MontaResposta(); } @--Função que devolve o resultado do processamento dos dados de entrada--------@ Funcao MontaResposta();{ Listar.StatusProcesso = nStatusProcesso; Listar.MensagemProcesso = aMensagemProcesso; } Funcao BuscaDados();{ SQL_Criar(xCursorPrin); SQL_UsarAbrangencia(xCursorPrin,0); SQL_UsarSQLSenior2(xCursorPrin,0); MontaCondicaoNumeFunc(); aCmdSql="SELECT \ numemp R034Fun_codemp, \ tipcol R034Fun_TipCol, \ numcad R034Fun_numcad, \ nomfun R034Fun_nomfun, \ numcad R034Fun_nrocra \ FROM vetorh.r034fun \ where sitafa <> 7 \ and (R034Fun.numemp in (1,2,3,4,5,8,11,16,999))\ and (R034Fun.TipCol = :nParam_TipCol or :nParam_TipCol=0) \ and (R034Fun.numcad = :nParam_NroCra or :nParam_NroCra=0)" + aCmdSql_Cond_NumFun + " order by R034Fun.numemp,R034Fun.nomfun,R034Fun.TipCol \ OFFSET :nParam_OffSet ROWS FETCH NEXT :nParam_Limit ROWS ONLY "; SQL_DefinirComando(xCursorPrin,aCmdSql); SQL_DefinirInteiro(xCursorPrin,"nParam_TipCol",nParam_TipCol); SQL_DefinirInteiro(xCursorPrin,"nParam_NroCra",nParam_NroCra); SQL_DefinirInteiro(xCursorPrin,"nParam_OffSet",nParam_OffSet); SQL_DefinirInteiro(xCursorPrin,"nParam_Limit",nParam_Limit); SQL_AbrirCursor (xCursorPrin); Enquanto(SQL_EOF(xCursorPrin)=0){ SQL_RetornarInteiro (xCursorPrin,"R034Fun_Codemp",nSql_R034Fun_Codemp); SQL_RetornarInteiro (xCursorPrin,"R034Fun_TipCol",nSql_R034Fun_TipCol); SQL_RetornarInteiro (xCursorPrin,"R034Fun_NumCad",nSql_R034Fun_NumCad); SQL_RetornarInteiro (xCursorPrin,"R034Fun_nrocra",nSql_R034Fun_NroCra); SQL_RetornarAlfa (xCursorPrin,"R034Fun_nomfun",aSql_R034Fun_NomFun); AddProdutosToResposta(); SQL_Proximo(xCursorPrin); } SQL_FecharCursor(xCursorPrin); SQL_Destruir(xCursorPrin); } Funcao MontaCondicaoNumeFunc();{ aCmdSql_Cond_NumFun=""; ListaQuantidade(aParam_nomfun, " ", xQtde); Para(iLoop=1;iLoop<=xQtde;iLoop++){ ListaItem(aParam_nomfun, " ", iLoop , aCmdSql_Cond_Parte); ConverteParaMaiusculo (aCmdSql_Cond_Parte); LimpaEspacos(aCmdSql_Cond_Parte); Se(aCmdSql_Cond_Parte<>""){ Se(aCmdSql_Cond_NumFun=""){ aCmdSql_Cond_NumFun = " upper(R034Fun.nomfun) like '%" + aCmdSql_Cond_Parte + "%' "; }senao { aCmdSql_Cond_NumFun = aCmdSql_Cond_NumFun + " and upper(R034Fun.nomfun) like '%" + aCmdSql_Cond_Parte + "%' "; } } } Se(aCmdSql_Cond_NumFun<>""){ aCmdSql_Cond_NumFun = " and (" + aCmdSql_Cond_NumFun + ") "; } } Funcao AddProdutosToResposta();{ Listar.Colaboradores.CriarLinha(); Listar.Colaboradores.CodEmp = nSql_R034Fun_Codemp; Listar.Colaboradores.TipCol = nSql_R034Fun_TipCol; Listar.Colaboradores.NumCad = nSql_R034Fun_NumCad; Listar.Colaboradores.NroCra = nSql_R034Fun_NroCra; Listar.Colaboradores.NomFun = aSql_R034Fun_NomFun; }