import.css=/download/attachments/327912/newLayout.css

Função: FillGetDados

Esta função monta o aHeader e o aCols para serem utilizados pela MsGetDados() ou MsNewGetDados(). 

FillGetDados ( < nOpc>, < cAlias>, [ nOrder], [ cSeekKey], [ bSeekWhile], [ uSeekFor], [ aNoFields], [ aYesFields], [ lOnlyYes], [ cQuery], [ bMontCols], [ lEmpty], [ aHeaderAux], [ aColsAux], [ bAfterCols], [ bBeforeCols], [ bAfterHeader], [ cAliasQry], [ bCriaVar], [ lUserFields], [ aYesUsado] ) --> lRet

 

NomeTipoDescriçãoObrigatórioReferência
nOpcNuméricoNúmero correspondente à operação a ser executada.X 
cAliasCaracterAlias da tabela referente aos itensX 
nOrderNuméricoOrdem correspondente a chave de indice para preencher o acols. Default é 1.  
cSeekKeyCaracterChave utilizada no posicionamento da area para preencher o acols.  
bSeekWhileBloco de códigoBloco contendo a expressão a ser comparada com cSeekKey na condição do While.  
uSeekForQualquerCondição para execução do while.  
aNoFieldsVetorArray com nome dos campos que serão excluídos na montagem do aHeader  
aYesFieldsVetorArray com nome dos campos que serão incluídos na montagem do aHeader  
lOnlyYesLógicoFlag indicando se considera somente os campos declarados no aYesFields + campos do usuário. Default é .F.  
cQueryCaracterQuery para filtro da tabela cAlias.  
bMontColsBloco de códigoBloco contendo função especifica para preencher o aCols.  
lEmptyLógicoSe for uma inclusão, passar .T. para que o aCols seja incializado com 1 linha em branco.  
aHeaderAuxVetorNome do aHeader auxiliar. Caso necessite tratar o aheader e acols como variáveis locais ( por exemplo, no uso de várias getdados).  
aColsAuxVetorNome do aCols auxiliar. Caso necessite tratar o aheader e acols como variáveis locais ( por exemplo, no uso de várias getdados).  
bAfterColsBloco de códigoBloco executado após a inclusão de cada linha no aCols.  
bBeforeColsBloco de códigoBloco de código contendo expressão para sair do While. É executado antes da inclusão de cada linha no aCols  
bAfterHeaderBloco de códigoBloco para manipular o aHeader após o preenchimento dos campos padrões e antes de incluir os campos reservados para o WalkThru.  
cAliasQryCaracterNome do alias para a query.  
bCriaVarBloco de códigoBloco de código para criar a varíavel de memória.  
lUserFieldsLógicoDefine se inclui os campos de usuários. Default é .F.  
aYesUsadoVetorArray com o nome dos campos que deverão ser apresentados.  

 

lRet
    (logico)
  • Retorna se conseguiu efetuar a montagem das variáveis.

Parâmetro

nOpc

Determina a ação que está sendo executada seguindo a seguinte definição:

  • 2 = Visualização
  • 3 = Inclusão
  • 4 = Alteração
  • 5 = Exclusão

 

uSeekFor

Pode ser utilizados de duas maneiras:

  • Através de bloco-de-código, contendo a condição a ser utilizada para executar o Loop no While
  • Array bi-dimensional contendo N.. condições, em que:
    • [1] - é o bloco condicional
    • [2] - é o bloco a ser executado se verdadeiro e;
    • [3] - é o bloco a ser executado se falso

Exemplo: {{bCondicao1, bTrue1, bFalse1}, {bCondicao2, bTrue2, bFalse2}.. bCondicaoN, bTrueN, bFalseN}

cQuery

Se ambiente utilizado for TOP e cQuery estiver preenchido, desconsidera os parâmetros cSeekKey e bSeekWhile caso tenham sido informados.

Para a criação do aHeader e aCols via Query, a tabela não poderá possuir campos do tipo MEMO. Caso seja necessário incluir condições para a inclusão dos registros no aCols será necessário a utilização dos parâmetros cSeekKey e bSeekWhile.

aYesFields

Quando utilizar esse parâmetro buscando os campos do dicionário de dados (SX3), remova os espaços em branco utilizando a função AllTrim.

Exemplo: AAdd( aYesFields, AllTrim( SX3->X3_CAMPO ) )

 

#include "protheus.ch"User Function TstFillGet()Private cCadastro := "Atualizacao do pedido de venda"Private aRotina := { {"Pesquisar" ,"AxPesqui" ,0,1} ,;				{"Visualizar" ,"U_TstFilVis" ,0,2}} Private cDelFunc := ".T."Private cString := "SC5"dbSelectArea("SC5")dbSetOrder(1)dbSelectArea(cString)mBrowse( 6,1,22,75,cString)Return                                                User Function TstFilVis(cAlias,nReg,nOpc)Local aArea    := GetArea()Local aCpos1   := {"C6_QTDVEN ","C6_QTDLIB"}Local aCpos2   := {}Local aPosObj  := {}Local aObjects := {}Local aSize    := {}Local aPosGet  := {}Local aInfo    := {}Local lContinua:= .T.Local lGrade   := MaGrade()Local lQuery   := .F.Local lFreeze   := .F.Local nGetLin  := 0Local nOpcA    := 0Local nI  := 0Local nColFreeze:= 1Local cArqQry  := "SC6"Local cCadastro:= OemToAnsi("Atualizaçäo de Pedidos de Venda") //"Atualizaçäo de Pedidos de Venda"Local oGetdLocal oDlgLocal bCond     := {|| .T. }Local bAction1  := {|| .T. }	Local bAction2  := {|| .T. }Local cSeek     := ""Local aNoFields := {"C6_NUM","C6_QTDEMP","C6_QTDENT","C6_QTDEMP2","C6_QTDENT2"}		// Campos que nao devem entrar no aHeader e aColsLocal bWhile    := {|| }Local cQuery    := ""// Inicializa a Variaveis Privates.                     PRIVATE aTrocaF3  := {}PRIVATE aTELA[0][0],aGETS[0]PRIVATE aHeader	  := {}PRIVATE aCols	  := {}PRIVATE aHeadFor  := {}PRIVATE aColsFor  := {}PRIVATE N         := 1Inclui := .F.Altera := .F.// Inicializa a Variaveis da Enchoice.                  RegToMemory( "SC5", .F., .F. )// Filtros para montagem do aCols                       dbSelectArea("SC6")dbSetOrder(1)#IFDEF TOP	lQuery  := .T.	cQuery := "SELECT * "	cQuery += "FROM "+RetSqlName("SC6")+" SC6 "	cQuery += "WHERE SC6.C6_FILIAL='"+xFilial("SC6")+"' AND "	cQuery += "SC6.C6_NUM='"+SC5->C5_NUM+"' AND "	cQuery += "SC6.D_E_L_E_T_<>'*' "	cQuery += "ORDER BY "+SqlOrder(SC6->(IndexKey()))	dbSelectArea("SC6")	dbCloseArea()#ENDIFcSeek  := xFilial("SC6")+SC5->C5_NUMbWhile := {|| C6_FILIAL+C6_NUM }// Montagem do aHeader e aCols                           FillGetDados(nOPc,"SC6",1,cSeek,bWhile,{{bCond,bAction1,bAction2}},aNoFields,/*aYesFields*/,/*lOnlyYes*/,cQuery,/*bMontCols*/,.F.,/*aHeaderAux*/,/*aColsAux*/,/*bafterCols*/,/*bBeforeCols*/,/*bAfterHeader*/,"SC6")If lQuery	dbSelectArea("SC6")	dbCloseArea()	ChkFile("SC6",.F.)EndIfFor nI := 1 To Len(aHeader)	If aHeader[nI][8] == "M"		aadd(aCpos1,aHeader[nI][2])	EndIfNext // Caso nao ache nenhum item , abandona rotina.         If ( Len(aCols) == 0 )	ApMsgAlert("Não achou os itens do pedido")	lContinua := .F.EndIfIf ( lContinua )	// Faz o calculo automatico de dimensoes de objetos     	aSize := MsAdvSize()	aObjects := {}	AAdd( aObjects, { 100, 100, .t., .t. } )	AAdd( aObjects, { 100, 100, .t., .t. } )	AAdd( aObjects, { 100, 020, .t., .f. } )	aInfo := { aSize[ 1 ], aSize[ 2 ], aSize[ 3 ], aSize[ 4 ], 3, 3 }	aPosObj := MsObjSize( aInfo, aObjects )	aPosGet := MsObjGetPos(aSize[3]-aSize[1],315,;		{{003,033,160,200,240,263}} )	DEFINE MSDIALOG oDlg TITLE cCadastro From aSize[7],0 to aSize[6],aSize[5] of oMainWnd PIXEL	// Estabelece a Troca de Clientes conforme o Tipo do Pedido de Venda      	If ( M->C5_TIPO $ "DB" )		aTrocaF3 := {{"C5_CLIENTE","SA2"}}	Else		aTrocaF3 := {}	EndIf	EnChoice( cAlias, nReg, nOpc, , , , , aPosObj[1],aCpos2,3)	oGetd   := MsGetDados():New(aPosObj[2,1],aPosObj[2,2],aPosObj[2,3],aPosObj[2,4],nOpc,,,"",,aCpos1,nColFreeze,,,,,,,,lFreeze)		ACTIVATE MSDIALOG oDlg ON INIT EnchoiceBar(oDlg, {||oDlg:End()},{||oDlg:End()}) EndIfReturn
Protheus 10