BlackTDN :: Consulta Padrão Específica utilizando f_Opcoes
1: #include "totvs.ch"
2: Static __aF3Ret3: /*
4: Programa : f3f_Opcoes
5: Funcao : f3fOpcSX5
6: Data : 16/06/2014
7: Autor : Marinaldo de Jesus ( http://www.blacktdn.com.br )
8: Descricao : Programa para retornar Consulta Padrao "Específica" baseada em f_Opcoes
9: Uso : Consulta F3 (%F3SIT) para as situacoes da Folha de Pagamento
10: Sintaxe : StaticCall(F3F_OPCOES,f3fOpcSX5,cTabela,nSize,cF3,cF3Name)
11: */
12: Static Function f3fOpcSX5(cTabela,nSize,cF3,cF3Name) 13: 14: //------------------------------------------------------------------------------------------------
15: // Salva os Dados de Entrada que serao restaurados antes do Retorno do Procedimento
16: Local aArea := GetArea() 17: Local aAreaSX5 := SX5->(GetArea()) 18: 19: Local aOpcoes := Array(0) 20: 21: Local cKey 22: Local cDes 23: 24: //------------------------------------------------------------------------------------------------
25: // Obtem um alias válido par uso
26: Local cAlias := GetNextAlias() 27: 28: Local cTitulo := ""
29: Local cOpcoes := ""
30: 31: //------------------------------------------------------------------------------------------------
32: // Obtem a Variavel de Memória que será utilizada como Referencia à Consulta
33: Local cReadVar := ReadVar() 34: 35: Local nCnt := 0 36: 37: Local nRecno 38: Local nF3Ret 39: Local nTamKey 40: Local nElemRet 41: 42: //------------------------------------------------------------------------------------------------
43: // Obtem a Ordem para a tabela SX5
44: Local nSX5Order := RetOrder("SX5","X5_FILIAL+X5_TABELA+X5_CHAVE")
45: 46: Local uVarRet 47: 48: //------------------------------------------------------------------------------------------------
49: // Obtem o conteúdo do campo utilizado na Consulta Padrao Customizada
50: uVarRet := GetMemVar(cReadVar) 51: 52: //------------------------------------------------------------------------------------------------
53: // Valor padrão para Tamanho do Campo
54: DEFAULT nSize := Len(uVarRet) 55: 56: //------------------------------------------------------------------------------------------------
57: // Obtem o conteúdo do campo utilizado na Consulta Padrao Customizada
58: nTamKey := nSize 59: 60: //------------------------------------------------------------------------------------------------
61: // Verifica o Máximo de Elementos para Retorno/Seleção
62: nElemRet := Int(Len(uVarRet)/nTamKey) 63: 64: //------------------------------------------------------------------------------------------------
65: // Obtem a Descrição, conforme tabela
66: SX5->(dbSetOrder(nSX5Order))67: IF SX5->(dbSeek(xFilial("SX5")+"00"+cTabela))
68: cTitulo := SX5->(X5Descri()) 69: EndIF 70: 71: //------------------------------------------------------------------------------------------------
72: // Seleciona os Registros
73: BEGINSQL ALIAS cAlias 74: COLUMN R_E_C_N_O_ AS NUMERIC(16,0) 75: SELECT SX5.R_E_C_N_O_ 76: FROM %table:SX5% SX5 77: WHERE SX5.%notDel% 78: AND SX5.X5_FILIAL=%xFilial:SX5% 79: AND SX5.X5_TABELA=%exp:cTabela% 80: ENDSQL 81: 82: //------------------------------------------------------------------------------------------------
83: // Obtem a Chave e Descricao
84: While (cAlias)->(.NOT.(Eof())) 85: nRecno := (cAlias)->R_E_C_N_O_ 86: SX5->(dbGoto(nRecno)) 87: cKey := SX5->(Left(X5_CHAVE,nTamKey)) 88: cDes := SX5->(Alltrim(X5Descri()))89: aAdd(aOpcoes,cKey+" - "+cDes)
90: cOpcoes += cKey 91: ++nCnt 92: (cAlias)->(dbSkip()) 93: End While 94: 95: //------------------------------------------------------------------------------------------------
96: // Libera o Alias da Memoria
97: (cAlias)->(dbCloseArea()) 98: 99: //------------------------------------------------------------------------------------------------
100: // Redefine o Máximo de Elementos para Retorno/Seleção
101: nElemRet := Min(nCnt,nElemRet) 102: 103: //------------------------------------------------------------------------------------------------
104: // Executa f_Opcoes para Selecionar ou Mostrar os Registros Selecionados
105: IF f_Opcoes( @uVarRet ,; //Variavel de Retorno
106: cTitulo ,; //Titulo da Coluna com as opcoes
107: @aOpcoes ,; //Opcoes de Escolha (Array de Opcoes)
108: @cOpcoes ,; //String de Opcoes para Retorno
109: NIL ,; //Nao Utilizado
110: NIL ,; //Nao Utilizado
111: .F. ,; //Se a Selecao sera de apenas 1 Elemento por vez
112: nTamKey ,; //Tamanho da Chave
113: nElemRet ,; //No maximo de elementos na variavel de retorno
114: .T. ,; //Inclui Botoes para Selecao de Multiplos Itens
115: .F. ,; //Se as opcoes serao montadas a partir de ComboBox de Campo ( X3_CBOX )
116: NIL ,; //Qual o Campo para a Montagem do aOpcoes
117: .F. ,; //Nao Permite a Ordenacao
118: .F. ,; //Nao Permite a Pesquisa
119: .F. ,; //Forca o Retorno Como Array
120: cF3 ; //Consulta F3
121: )122: //------------------------------------------------------------------------------------------------
123: // Atualiza a Variável de Retorno
124: cF3Ret := uVarRet125: //------------------------------------------------------------------------------------------------
126: // Atualiza a Variável de Memória com o Conteúdo do Retorno
127: SetMemVar(cReadVar,cF3Ret)128: //------------------------------------------------------------------------------------------------
129: // Força a atualização dos Componentes (Provavelmente não irá funcionar). A solução. ENTER
130: SysRefresh(.T.) 131: Else132: //------------------------------------------------------------------------------------------------
133: // Se nao confirmou a f_Opcoes retorna o Conteudo de entrada
134: cF3Ret := uVarRet 135: EndIF 136: 137: //------------------------------------------------------------------------------------------------
138: // Alimenta a variável Static para uso no Retorno da Consulta Padrao.
139: DEFAULT __aF3Ret := Array(0) 140: nF3Ret := aScan(__aF3Ret,{|e|e[1]==cF3Name}) 141: IF (nF3Ret==0) 142: aAdd(__aF3Ret,{cF3Name,NIL}) 143: nF3Ret := Len(__aF3Ret) 144: EndIF 145: __aF3Ret[nF3Ret][2] := cF3Ret 146: 147: //------------------------------------------------------------------------------------------------
148: // Restaura os Dados de Entrada
149: RestArea(aAreaSX5) 150: RestArea(aArea) 151: 152: Return(cF3Ret) 153: 154: /*
155: Programa : f3f_Opcoes
156: Funcao : f3fOpcSitF
157: Data : 16/06/2014
158: Autor : Marinaldo de Jesus ( http://www.blacktdn.com.br )
159: Descricao : Programa para retornar Consulta Padrao "Específica" baseada em f_Opcoes
160: Uso : Consulta F3 (%F3SIT) para as situacoes da Folha de Pagamento
161: Sintaxe : StaticCall(F3F_OPCOES,f3fOpcSitF)
162: */
163: Static Function f3fOpcSitF()164: Return(f3fOpcSX5("31",1,"31","%F3SIT"))
165: 166: /*
167: Programa : f3f_Opcoes
168: Funcao : f3fOpcCatF
169: Data : 16/06/2014
170: Autor : Marinaldo de Jesus ( http://www.blacktdn.com.br )
171: Descricao : Programa para retornar Consulta Padrao "Específica" baseada em f_Opcoes
172: Uso : Consulta F3 (%F3CAT) para as Categoria da Folha de Pagamento
173: Sintaxe : StaticCall(F3F_OPCOES,f3fOpcCatF)
174: */
175: Static Function f3fOpcCatF()176: Return(f3fOpcSX5("28",1,"28","%F3CAT"))
177: 178: /*
179: Programa : f3f_Opcoes
180: Funcao : f3fOpcRetD
181: Data : 10/06/2014
182: Autor : Marinaldo de Jesus
183: Descricao : Retornar a ultima opção selecionada na Contulda Customizada
184: Uso : Retorno da Consulta F3
185: Sintaxe : StaticCall(F3F_OPCOES,f3fOpcRetD,cF3Name)
186: */
187: Static Function f3fOpcRetD(cF3Name) 188: Local uF3Ret 189: Local nF3Ret 190: IF(__aF3Ret==NIL) 191: __aF3Ret := Array(0) 192: EndIF 193: nF3Ret := aScan(__aF3Ret,{|e|e[1]==cF3Name}) 194: IF (nF3Ret>0) 195: cF3Ret := __aF3Ret[nF3Ret][2] 196: aSize(aDel(__aF3Ret,nF3Ret),Len(__aF3Ret)-1) 197: Else 198: uF3Ret := &(ReadVar()) 199: EndIF 200: Return(uF3Ret)
| Incluindo a Consulta Específica: %F3CAT | Incluindo a Consulta Padrão (%F3SIT)
| Alterando as Perguntas Grupo GPR040 : Situacoes a Imp. ? | Alterando as Perguntas Grupo GPR040: Caregorias a Imp. ? |
| Utilizando a Consulta Específica: %F3SIT | Utilizando a Consulta Específica: %F3CAT |
O código poderá ser obitido aqui.
[]s
иαldσ dj
Comentários
Postar um comentário