Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...


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


Parâmetros

NomeTipoDescriçãoObrigatório
nOpcNuméricoNúmero correspondente à operação a ser executada.X
cAliasCaracterAlias da tabela referente aos itens.X
nOrderNuméricoOrdem correspondente a chave de índice para preencher o aCols. Default é 1. 
cSeekKeyCaracterChave utilizada no posicionamento da área 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 inicializado 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 variável 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.



Retorno
lRet (lógico) - Retorna se conseguiu efetuar a montagem das variáveis.

...

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 ) )


Exemplos


Bloco de código
languagejs
themeMidnight
#include "protheus.ch"

User Function
 TstFillGet()
Private cCadastro := "Atualizacao
doAtualizacaodo pedido de venda"
Private aRotina := {
 {"Pesquisar" ,"AxPesqui" ,0,1} ,; 
{"Visualizar" ,"U_TstFilVis" ,0,2} }
Private Private
cDelFunc := ".T."
Private cString :=
 "SC5"

dbSelectArea("SC5")
dbSetOrder(1)dbSelectAr
eadbSelectArea(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 := 0Local0
Local nOpcA := 0
0LocalLocal nI := 0Local0
Local nColFreeze:= 1Local1
Local cArqQry := "SC6"
Local cCadastro:=
 OemToAnsi("Atualizaçäo de Pedidos de Venda")
 //"Atualizaçäo de Pedidos de Venda"
Local oGetd
oGetdLocalLocal oDlgLocaloDlg
Local 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
noentrarno aHeader e aColsLocalaCols
Local 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
 := 1Inclui1

Inclui := .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

cSeek 
:= xFilial("SC6")+SC5->C5_NUMbWhileNUM
bWhile := {||
 C6_FILIAL+C6_NUM }

// Montagem do aHeader e
 aCols 
FillGetDados(nOPc,"SC6",1,cSeek,bWhile,{{bCond,
 bAction1,bAction2}},aNoFields,/*aYesFields*/,/*
lOnlyYes*/,cQuery,/*bMontCols*/,.F.,/*aHeaderAu
xaHeaderAux*/,/*aColsAux*/,/*bafterCols*/,/*bBeforeCols*/
,/*bAfterHeader*/,"SC6")

If lQuery
    dbSelectArea("SC6")
    dbCloseArea()
    ChkFile("SC6",.F.)EndIfFor
EndIf

For nI := 1 To
 Len(aHeader)
    If aHeader[nI][8] == "M" 

        aadd(aCpos1,aHeader[nI][2])
 EndIfNext    EndIf
Next

// Caso
 nao ache nenhum item , abandona rotina. 
If ( Len(aCols) == 0 )
    ApMsgAlert("Não achou os
itensositens do pedido")
    lContinua := .F.EndIfIf
EndIf

If (
lContinua )
    // Faz o calculo automatico dedimensoes de objetos
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],aPos
ObjaPosObj[2,3],aPosObj[2,4],nOpc,,,"",,aCpos1,nColFre
ezenColFreeze,,,,,,,,lFreeze)

    ACTIVATE MSDIALOG oDlg ON
 INIT EnchoiceBar(oDlg,
{||oDlg:End()},{||oDlg:End()}) EndIfReturn
EndIf

Return  






Templatedocumentos