Função: Modelo3


Versões:Microsiga Protheus 8.11 , Protheus 10
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Nível de Acesso:Nível 1 (Acesso Clientes)
Idiomas:Espanhol , Inglês


Descrição:
Exibe formulário para cadastro contendo uma enchoice e uma getdados.
Programa Fonte:
MATXATU.PRW
Sintaxe:

Modelo3 ( cTitulocAliascAlias2 [ aMyEncho ] [ cLinhaOk ] [ cTudoOk ] [ nOpcE ] [ nOpcG ] [ cFieldOk ] [ lVirtual ] [ nLinhas ] [ aAltEnchoice ] [ nFreeze ] [ aButtons ] [ aCordW ] [ nSizeHeader ] ) --> lRet

Retorno:
lRet (logico)
Retorno .T. Confirma / .F. Abandona

Parâmetros:



Nome

Tipo

Descrição

Default

Obrigatório

Referência

cTitulo

Caracter

Titulo da janela




X




cAlias

Caracter

Alias da Enchoice




X




cAlias2

Caracter

Alias da Getdados




X




aMyEncho

Vetor

Array com campos da enchoice










cLinhaOk

Caracter

Função para validação da linha










cTudoOk

Caracter

Função para validação na confirmação










nOpcE

Numérico

nOpc da Enchoice










nOpcG

Numérico

nOpc da Getdados










cFieldOk

Caracter

Validação para todos os campos da GetDados










lVirtual

Lógico

Permite visualizar campos virtuais na enchoice










nLinhas

Numérico

Número máximo de linhas na getdados










aAltEnchoice

Vetor

Array com campos alteráveis da Enchoice










nFreeze

Numérico

Congelamento das colunas.










aButtons

Vetor

Array com botões de usuário na enchoicebar










aCordW

Vetor

Coordenadas da janela










nSizeHeader

Numérico

Altura da enchoice










Exemplo:

#include "protheus.ch"
#include "rwmake.ch"     

User Function RDMOD3()
Local cOpcao        as character
Local nOpcE         as numeric
Local nOpcG         as numeric
Local nUsado        as numeric
Local _ni           as numeric

Private aHeader     as array
Private aRotina     as array
Private aCols       as array

aRotina := {{ "Pesquisa","AxPesqui", 0 , 1}, { "Visual","AxVisual", 0 , 2}, { "Inclui","AxInclui", 0 , 3}, { "Altera","AxAltera", 0 , 4, 20 }, { "Exclui","AxDeleta", 0 , 5, 21 }}

//+--------------------------------------------------------------+
//| Opcoes de acesso para a Modelo 3                             |
//+--------------------------------------------------------------+
cOpcao:= "INCLUIR"

Do Case	
    Case cOpcao=="INCLUIR"; nOpcE:=3 ; nOpcG:=3	
    Case cOpcao=="ALTERAR"; nOpcE:=3 ; nOpcG:=3	
    Case cOpcao=="VISUALIZAR"; nOpcE:=2 ; nOpcG:=2
EndCase

DbSelectArea("SC5")
DbSetOrder(1)
DbGotop()

//+--------------------------------------------------------------+
//| Cria variaveis M->????? da Enchoice                          |
//+--------------------------------------------------------------+
RegToMemory("SC5", (cOpcao=="INCLUIR"))
//+--------------------------------------------------------------+
//| Cria aHeader e aCols da GetDados                             |
//+--------------------------------------------------------------+
nUsado := 0

dbSelectArea("SX3")
DbSetOrder(1)
DbSeek("SC6")
aHeader := {}
While !Eof() .And. (X3_ARQUIVO == "SC6")	
    If Alltrim(X3_CAMPO) == "C6_ITEM"		
        dbSkip()		
        Loop	
    Endif	
    If X3USO(X3_USADO) .And. cNivel >= X3_NIVEL    	
        nUsado := nUsado+1        
        Aadd(aHeader,{ TRIM(X3_TITULO),;
                        AllTrim(X3_CAMPO),;
                        X3_PICTURE,;
                        X3_TAMANHO,;
                        X3_DECIMAL,;
                        "AllwaysTrue()",; 
                        X3_USADO,; 
                        X3_TIPO,; 
                        X3_ARQUIVO,; 
                        X3_CONTEXT } )	
    Endif
    dbSkip()
EndDo 

If cOpcao == "INCLUIR"	
    aCols:={Array(nUsado+1)}	
    aCols[1, nUsado+1] := .F.	

    For _ni := 1 to nUsado		
        aCols[1, _ni] := CriaVar(aHeader[_ni, 2])	
    Next
Else	
    aCols := {}	
    dbSelectArea("SC6")	
    dbSetOrder(1)	
    dbSeek(xFilial()+M->C5_NUM)	
    While !eof() .and. SC6->C6_NUM == M->C5_NUM		
        AADD(aCols, Array(nUsado+1))		

        For _ni := 1 to nUsado			
            aCols[Len(aCols), _ni] := FieldGet(FieldPos(aHeader[_ni, 2]))		
        Next 		

        aCols[Len(aCols), nUsado+1] := .F.		
        dbSkip()	
    EndDo
Endif
    
If Len(aCols) > 0	
//+--------------------------------------------------------------+	
//| Executa a Modelo 3                                           |	
//+--------------------------------------------------------------+	
    cTitulo := "Teste de Modelo3"	
    cAliasEnchoice := "SC5"	
    cAliasGetD := "SC6"	
    cLinOk := "AllwaysTrue()"	
    cTudOk := "AllwaysTrue()"	
    cFieldOk := "AllwaysTrue()"	
    _lRet:= Modelo3(cTitulo, cAliasEnchoice, cAliasGetD,, cLinOk, cTudOk, nOpcE, nOpcG, cFieldOk)	
    //+--------------------------------------------------------------+	
    //| Executar processamento                                       |	
    //+--------------------------------------------------------------+	
    If _lRet		
        Aviso("Modelo3()", "Confirmada operacao!", {"Ok"})	
    Endif
Endif                 
Return