Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Modelo2 com mais de 99 Registros

Dúvida
Existe alguma limitação no número de registros utilizando a função modelo2 para a Gravação?


Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – Todas versões.

Solução
Não existe esta limitação, a única coisa que existe é que por padrão a função deixa incluir apenas 99 registros no acols, porém pode ser mudado através do parâmetro da função.

nMax     Numérico     Quantidade Máxima de ítens da GetDados

Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk, , , ,999) // aqui limitamos a 999.


Exemplo

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

User Function Md2()

Local nOpcx:=3

//+-----------------------------------------------+
//¦ Montando aHeader para a Getdados ¦
//+-----------------------------------------------+

dbSelectArea("Sx3")
dbSetOrder(1)
dbSeek("ZA1")
nUsado:=0
aHeader:={}

While !Eof() .And. (x3_arquivo == "ZA1")

IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1

AADD(aHeader,{ TRIM(x3_titulo),x3_campo,;
x3_picture,x3_tamanho,x3_decimal,;
"ExecBlock('Md2valid',.f.,.f.)",x3_usado,;
x3_tipo, x3_arquivo, x3_context } )

Endif

dbSkip()

End

//+-----------------------------------------------+
//¦ Montando aCols para a GetDados ¦
//+-----------------------------------------------+

aCols:= Array(1,nUsado+1)

dbSelectArea("Sx3")
dbSeek("ZA1")

nUsado:=0

While !Eof() .And. (x3_arquivo == "ZA1")

IF X3USO(x3_usado) .AND. cNivel >= x3_nivel
nUsado:=nUsado+1

IF nOpcx == 3

IF x3_tipo == "C"

aCOLS[1][nUsado] := SPACE(x3_tamanho)

Elseif x3_tipo == "N"

aCOLS[1][nUsado] := 0

Elseif x3_tipo == "D"

aCOLS[1][nUsado] := dDataBase

Elseif x3_tipo == "M"
aCOLS[1][nUsado] := ""

Else
aCOLS[1][nUsado] := .F.

Endif

Endif

Endif

dbSkip()
End

aCOLS[1][nUsado+1] := .F.

//+----------------------------------------------+
//¦ Variaveis do Cabecalho do Modelo 2 ¦
//+----------------------------------------------+

cCliente:=Space(6)

cLoja :=Space(2)

dData :=Date()

//+----------------------------------------------+
//¦ Variaveis do Rodape do Modelo 2
//+----------------------------------------------+
nLinGetD:=0

//+----------------------------------------------+
//¦ Titulo da Janela ¦
//+----------------------------------------------+

cTitulo:="TESTE DE MODELO2"

//+----------------------------------------------+
//¦ Array com descricao dos campos do Cabecalho ¦
//+----------------------------------------------+
aC:={}

#IFDEF WINDOWS

AADD(aC,{"cCliente" ,{15,10} ,"Cod. do Cliente","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})

AADD(aC,{"cLoja" ,{15,200},"Loja","@!",,,})

AADD(aC,{"dData" ,{27,10} ,"Data de Emissao",,,,})

#ELSE

AADD(aC,{"cCliente" ,{6,5} ,"Cod. do Cliente","@!",'ExecBlock("MD2VLCLI",.F.,.F.)',"SA1",})

AADD(aC,{"cLoja" ,{6,40},"Loja","@!",,,})

AADD(aC,{"dData" ,{7,5} ,"Data de Emissao",,,,})

#ENDIF

//+-------------------------------------------------+
//¦ Array com descricao dos campos do Rodape ¦
//+-------------------------------------------------+

aR:={}

#IFDEF WINDOWS

AADD(aR,{"nLinGetD" ,{120,10},"Linha na GetDados", "@E 999",,,.F.})

#ELSE

AADD(aR,{"nLinGetD" ,{19,05},"Linha na GetDados","@E 999",,,.F.})

#ENDIF

//+------------------------------------------------+
//¦ Array com coordenadas da GetDados no modelo2 ¦
//+------------------------------------------------+

#IFDEF WINDOWS

aCGD:={44,5,118,315}

#ELSE

aCGD:={10,04,15,73}

#ENDIF

//+----------------------------------------------+
//¦ Validacoes na GetDados da Modelo 2 ¦
//+----------------------------------------------+

cLinhaOk := "ExecBlock('Md2LinOk',.f.,.f.)"
cTudoOk := "ExecBlock('Md2TudOk',.f.,.f.)"

//+----------------------------------------------+
//¦ Chamada da Modelo2 ¦
//+----------------------------------------------+
// lRet = .t. se confirmou
// lRet = .f. se cancelou

lRet:= Modelo2(cTitulo,aC,aR,aCGD,nOpcx,cLinhaOk,cTudoOk, , , ,999)

If lRet
//Inclui os Registros na tabela SZF
For nInd := 1 to len( aCols )
If !(aCols[nInd][len(aHeader)+1]) //não foi deletado
// Em 11/02/15 inserimos o tratamento do motivo para apontamentos de horas não vinculados à OP conforme pedido do Haroldo - MG
// Em 19/03/14 retiramos a validação de apontamentos existentes desta área e a movemos para função que valida todo o vetor acols - MG
RecLock("ZA1",.t.)

Replace ZA1->ZA1_FILIAL with xFilial('SZF') , ;
ZA1->ZA1_MUSICA with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_MUSICA" } )] , ;
ZA1->ZA1_TITULO with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_TITULO" } )] , ;//cCCustoMO , ;
ZA1->ZA1_DATA with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_DATA" } )] , ;
ZA1->ZA1_GENERO with aCols[nInd][aScan( aHeader, { |x| x[2]="ZA1_GENERO" } )]

ZA1->(MsUnlock())


EndIf
Next
EndIf



Return lRet

User function Md2LinOk()

//Msginfo("Validando a linha")

Return .t.

User function Md2TudOk()

//Msginfo("Validando o Formulário")

Return .t.

User function Md2valid()

//Msginfo("Validando")

Return .t.


User function MD2VLCLI()

//Msginfo("Validando")

Return .t.

 

Saiba Mais
Modelo2

 

 

 

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _