mp-FillGetDados-261112-2041-6014
-
Upload
pompeo2011 -
Category
Documents
-
view
85 -
download
2
Transcript of mp-FillGetDados-261112-2041-6014
FillGetDados
Colapse ALLExpand ALLFunção: FillGetDados
Esta função monta o aHeader e o aCols paraserem utilizados pela MsGetDados() ouMsNewGetDados().
SintaxeFillGetDados ( < nOpc>, < cAlias>, [ nOrder], [ cSeekKey], [ bSeekWhile], [ uSeekFor], [ aNoFields], [ aYesFields], [lOnlyYes], [ cQuery], [ bMontCols], [ lEmpty], [ aHeaderAux], [ aColsAux], [ bAfterCols], [ bBeforeCols], [bAfterHeader], [ cAliasQry], [ bCriaVar], [ lUserFields], [ aYesUsado] ) --> lRet
Parâmetros/Elementos
Nome Tipo Descrição Obrigatório Referência
nOpc Numérico Númerocorrespondente àoperação a serexecutada.
X
cAlias Caracter Alias da tabelareferente aos itens
X
nOrder Numérico Ordemcorrespondente achave de indicepara preencher oacols. Default é 1.
cSeekKey Caracter Chave utilizada noposicionamento daarea para preenchero acols.
bSeekWhile Bloco de código Bloco contendo aexpressão a sercomparada comcSeekKey nacondição do While.
uSeekFor Qualquer Condição paraexecução do while.
aNoFields Vetor Array com nomedos campos queserão excluídos namontagem doaHeader
aYesFields Vetor Array com nomedos campos queserão incluídos namontagem doaHeader
lOnlyYes Lógico Flag indicando seconsidera somenteos camposdeclarados noaYesFields +campos do usuário.Default é .F.
cQuery Caracter Query para filtro databela cAlias.
bMontCols Bloco de código Bloco contendofunção especificapara preencher oaCols.
lEmpty Lógico Se for uma inclusão,passar .T. para queo aCols sejaincializado com 1linha em branco.
aHeaderAux Vetor Nome do aHeaderauxiliar. Casonecessite tratar oaheader e acolscomo variáveislocais ( porexemplo, no uso devárias getdados).
aColsAux Vetor Nome do aColsauxiliar. Casonecessite tratar oaheader e acolscomo variáveislocais ( porexemplo, no uso devárias getdados).
bAfterCols Bloco de código Bloco executadoapós a inclusão decada linha no aCols.
bBeforeCols Bloco de código Bloco de códigocontendo expressãopara sair do While.É executado antesda inclusão de cadalinha no aCols
bAfterHeader Bloco de código Bloco paramanipular oaHeader após opreenchimento doscampos padrões eantes de incluir oscampos reservadospara o WalkThru.
cAliasQry Caracter Nome do alias paraa query.
bCriaVar Bloco de código Bloco de códigopara criar a varíavelde memória.
lUserFields Lógico Define se inclui oscampos deusuários. Default é.F.
aYesUsado Vetor Array com o nomedos campos quedeverão serapresentados.
RetornolRet
(logico)Retorna se conseguiu efetuar a montagem das variáveis.
ObservaçõesParâmetro
nOpc
Determina a ação que está sendo executada seguindo a seguinte definição:
2 = Visualização3 = Inclusão4 = Alteração5 = 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 WhileArray 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 bSeekWhilecaso tenham sido informados.
Para a criação do aHeader e aCols via Query, a tabela não poderá possuir campos do tipo MEMO. Caso sejanecessário incluir condições para a inclusão dos registros no aCols será necessário a utilização dos parâmetroscSeekKey e bSeekWhile.
aYesFields
Quando utilizar esse parâmetro buscando os campos do dicionário de dados (SX3), remova os espaços em brancoutilizando a função AllTrim.
Exemplo: AAdd( aYesFields, AllTrim( SX3->X3_CAMPO ) )
Exemplos#include "protheus.ch"User FunctionTstFillGet()Private cCadastro := "Atualizacaodo pedido de venda"Private aRotina := {{"Pesquisar" ,"AxPesqui" ,0,1} ,; {"Visualizar" ,"U_TstFilVis" ,0,2}} PrivatecDelFunc := ".T."Private cString :="SC5"dbSelectArea("SC5")dbSetOrder(1)dbSelectArea(cString)mBrowse( 6,1,22,75,cString)Return User Function TstFilVis(cAlias,nReg,nOpc)LocalaArea := GetArea()Local aCpos1 :={"C6_QTDVEN ","C6_QTDLIB"}Local aCpos2 :={}Local aPosObj := {}Local aObjects := {}LocalaSize := {}Local aPosGet := {}Local aInfo
:= {}Local lContinua:= .T.Local lGrade :=MaGrade()Local lQuery := .F.Local lFreeze := .F.Local nGetLin := 0Local nOpcA :=0Local nI := 0Local nColFreeze:= 1LocalcArqQry := "SC6"Local cCadastro:=OemToAnsi("Atualizaçäo de Pedidos de Venda")//"Atualizaçäo de Pedidos de Venda"LocaloGetdLocal oDlgLocal bCond := {|| .T.}Local bAction1 := {|| .T. } Local bAction2 := {|| .T. }Local cSeek := ""LocalaNoFields :={"C6_NUM","C6_QTDEMP","C6_QTDENT","C6_QTDEMP2","C6_QTDENT2"} // Campos que nao devem entrarno aHeader e aColsLocal bWhile := {|| }LocalcQuery := ""// Inicializa a VariaveisPrivates. PRIVATE aTrocaF3 := {}PRIVATE aTELA[0][0],aGETS[0]PRIVATEaHeader := {}PRIVATE aCols := {}PRIVATEaHeadFor := {}PRIVATE aColsFor := {}PRIVATE N:= 1Inclui := .F.Altera := .F.// Inicializa aVariaveis da Enchoice. RegToMemory( "SC5", .F., .F. )// Filtros paramontagem do aCols dbSelectArea("SC6")dbSetOrder(1)#IFDEF TOPlQuery := .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 eaCols FillGetDados(nOPc,"SC6",1,cSeek,bWhile,{{bCond,
bAction1,bAction2}},aNoFields,/*aYesFields*/,/*lOnlyYes*/,cQuery,/*bMontCols*/,.F.,/*aHeaderAux*/,/*aColsAux*/,/*bafterCols*/,/*bBeforeCols*/,/*bAfterHeader*/,"SC6")If lQuerydbSelectArea("SC6") dbCloseArea()ChkFile("SC6",.F.)EndIfFor nI := 1 ToLen(aHeader) If aHeader[nI][8] == "M" aadd(aCpos1,aHeader[nI][2]) EndIfNext // Casonao ache nenhum item , abandona rotina. If ( Len(aCols) == 0 ) ApMsgAlert("Não achou ositens do pedido") lContinua := .F.EndIfIf (lContinua ) // Faz o calculo automatico dedimensoes 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 MSDIALOGoDlg TITLE cCadastro From aSize[7],0 toaSize[6],aSize[5] of oMainWnd PIXEL //Estabelece a Troca de Clientes conforme o Tipodo 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,nColFre
eze,,,,,,,,lFreeze) ACTIVATE MSDIALOG oDlg ONINIT EnchoiceBar(oDlg,{||oDlg:End()},{||oDlg:End()}) EndIfReturn
AbrangênciaProtheus 10