Imprimi Página | Fechar janela

MsNewGetDados refresh

Impresso de: Helpfacil - Portal do conhecimento
Nome do Forum: ADVPL
Descrição do Forum: Dúvidas sobre a programação em ADVPL
URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=43797
Data da Impressão: sábado, 20 de abril de 2024 at 07:10


Topico: MsNewGetDados refresh

Postado por: TCHULA
Assunto: MsNewGetDados refresh
Data Postagem: sexta-feira, 29 de outubro de 2021 at 12:13

Bom dia.
Como faço pra dar um refresh nessatela que eu criei com MsNewGetDados e FWBrowse, preciso que ele atualize a quety toda vez que clikar no botão atualizar.

Desde já agradesço

Segue a query

#Include "Totvs.ch"

/*/{Protheus.doc} User Function zGrid
Visualizacao de Grupos de Produtos com FWBrowse e FWTemporaryTable
@type Function
@author Atilio
@since 14/06/2020
@version version
/*/

User Function xTelaFat()
    Local aArea := GetArea()
    //Fontes
    Local cFontUti    := "Tahoma"
    Local oFontAno    := TFont():New(cFontUti,,-38)
    Local oFontSub    := TFont():New(cFontUti,,-20)
    Local oFontSubN   := TFont():New(cFontUti,,-20,,.T.)
    Local oFontBtn    := TFont():New(cFontUti,,-14)
    //Janela e componentes
    Private oDlgGrp
    Private oPanGrid
    Private oGetGrid
    Private aColunas := {}
    Private cAliasTab := "TMPSBM"
    //Tamanho da janela
    Private    aTamanho := MsAdvSize()
    Private    nJanLarg := aTamanho[5]
    Private    nJanAltu := aTamanho[6]

    //Cria a temporária
    oTempTable := FWTemporaryTable():New(cAliasTab)
     
    //Adiciona no array das colunas as que serão incluidas (Nome do Campo, Tipo do Campo, Tamanho, Decimais)
    aFields := {}
    aAdd(aFields, {"XXPEDIDO",   "C", TamSX3(‘C5_NUM‘)[01],        0})
    aAdd(aFields, {"XXEMISSAO", "D", TamSX3(‘C5_EMISSAO‘)[01],    0})
    aAdd(aFields, {"XXNREDUZ",   "C", TamSX3(‘A3_NREDUZ‘)[01],     0})
    aAdd(aFields, {"XXCLIENTE", "C", TamSX3(‘A1_NOME‘)[01],       0})
    aAdd(aFields, {"XXMUNIC",    "C", TamSX3(‘A1_MUN‘)[01],        0})
    aAdd(aFields, {"XXESTADO",   "C", TamSX3(‘A1_EST‘)[01],        0})
    aAdd(aFields, {"XXPROGRAM", "D", TamSX3(‘C5_FECENT‘)[01],     0})
    aAdd(aFields, {"XXTES",      "C", TamSX3(‘C6_TES‘)[01],        0})
   


     
    //Define as colunas usadas, adiciona indice e cria a temporaria no banco
    oTempTable:SetFields( aFields )
    oTempTable:AddIndex("1", {"XXPEDIDO"} )
    oTempTable:Create()

    //Monta o cabecalho
    fMontaHead()

    //Montando os dados, eles devem ser montados antes de ser criado o FWBrowse
    FWMsgRun(, {|oSay| fMontDados(oSay) }, "Processando", "Buscando Pedidos a Faturar")

    //Criando a janela
    DEFINE MSDIALOG oDlgGrp TITLE "Pedidos a Faturar" FROM 000, 000 TO nJanAltu, nJanLarg COLORS 0, 16777215 PIXEL
        //Labels gerais
        @ 004, 003 SAY "FAT"                      SIZE 200, 030 FONT oFontAno OF oDlgGrp COLORS RGB(149,179,215) PIXEL
        @ 004, 050 SAY "Listagem de"              SIZE 200, 030 FONT oFontSub OF oDlgGrp COLORS RGB(031,073,125) PIXEL
        @ 014, 050 SAY "Pedidos a Faturar"        SIZE 200, 030 FONT oFontSubN OF oDlgGrp COLORS RGB(031,073,125) PIXEL

        //Botões
        @ 006, (nJanLarg/2-001)-(0052*01) BUTTON oBtnFech PROMPT "Fechar"        SIZE 050, 018 OF oDlgGrp ACTION (oDlgGrp:End())   FONT oFontBtn PIXEL
        @ 006, (nJanLarg/2-001)-(0052*02) BUTTON oBtnLege PROMPT "Atualizar"     SIZE 050, 018 OF oDlgGrp ACTION (fGrupo()) PIXEL

        //Dados
        @ 024, 003 GROUP oGrpDad TO (nJanAltu/2-003), (nJanLarg/2-003) PROMPT "Listagem de pedido a faturar: " OF oDlgGrp COLOR 0, 16777215 PIXEL
        oGrpDad:oFont := oFontBtn
            oPanGrid := tPanel():New(033, 006, "", oDlgGrp, , , , RGB(000,000,000), RGB(254,254,254), (nJanLarg/2 - 13),     (nJanAltu/2 - 45))
            oGetGrid := FWBrowse():New()
            oGetGrid:DisableFilter()
            oGetGrid:DisableConfig()
            oGetGrid:DisableReport()
            oGetGrid:DisableSeek()
            oGetGrid:DisableSaveConfig()
            oGetGrid:SetFontBrowse(oFontBtn)
            oGetGrid:SetAlias(cAliasTab)
            oGetGrid:SetDataTable()
            oGetGrid:SetInsert(.F.)
            oGetGrid:SetDelete(.F., { || .F. })
            oGetGrid:lHeaderClick := .F.
            oGetGrid:AddLegend( cAliasTab + " ->XXTES == ‘501‘ .OR. " + cAliasTab + " ->XXTES == ‘502‘ ", "WHITE", "Fatura Normal")
            oGetGrid:AddLegend( cAliasTab + " ->XXTES == ‘509‘ .OR. " + cAliasTab + " ->XXTES == ‘513‘ ", "BLUE", "Op.Triangular")
            oGetGrid:AddLegend( cAliasTab + " ->XXTES == ‘586‘ .OR. " + cAliasTab + " ->XXTES == ‘585‘ .OR. " + cAliasTab + " ->XXTES == ‘584‘ .OR. " + cAliasTab + " ->XXTES == ‘580‘ ", "RED", "Cliente Suframa")
            oGetGrid:SetColumns(aColunas)
            oGetGrid:SetOwner(oPanGrid)
            oGetGrid:Activate()
    ACTIVATE MsDialog oDlgGrp CENTERED

    //Deleta a temporaria
    oTempTable:Delete()

    RestArea(aArea)
Return

Static Function fMontaHead()
    Local nAtual
    Local aHeadAux := {}

    //Adicionando colunas
    //[1] - Campo da Temporaria
    //[2] - Titulo
    //[3] - Tipo
    //[4] - Tamanho
    //[5] - Decimais
    //[6] - Máscara
    aAdd(aHeadAux, {"XXPEDIDO", "Nº Pedido",            "C", TamSX3(‘C5_NUM‘)[01],   0, ""})
    aAdd(aHeadAux, {"XXEMISSAO", "Emissão",             "D", TamSX3(‘C5_EMISSAO‘)[01],    0, ""})
    aAdd(aHeadAux, {"XXNREDUZ", "Vendedor",             "C", TamSX3(‘A3_NREDUZ‘)[01], 0, ""})
    aAdd(aHeadAux, {"XXCLIENTE", "Cliente",             "C", TamSX3(‘A1_NOME‘)[01], 0, ""})
    aAdd(aHeadAux, {"XXMUNIC", "Cidade",               "C", TamSX3(‘A1_MUN‘)[01], 0, ""})
    aAdd(aHeadAux, {"XXESTADO", "Estado",               "C", TamSX3(‘A1_EST‘)[01], 0, ""})
    aAdd(aHeadAux, {"XXPROGRAM", "Programação",        "D", TamSX3(‘C5_FECENT‘)[01], 0, ""})
    aAdd(aHeadAux, {"XXTES", "Tes",                     "C", TamSX3(‘C6_TES‘)[01], 0, ""})
    

    //Percorrendo e criando as colunas
    For nAtual := 1 To Len(aHeadAux)
        oColumn := FWBrwColumn():New()
        oColumn:SetData(&("{|| " + cAliasTab + "->" + aHeadAux[nAtual][1] +"}"))
        oColumn:SetTitle(aHeadAux[nAtual][2])
        oColumn:SetType(aHeadAux[nAtual][3])
        oColumn:SetSize(aHeadAux[nAtual][4])
        oColumn:SetDecimal(aHeadAux[nAtual][5])
        oColumn:SetPicture(aHeadAux[nAtual][6])
        aAdd(aColunas, oColumn)
    Next
Return

Static Function fMontDados(oSay)
    Local aArea := GetArea()
    Local cQry := ""
    Local nAtual := 0
    Local nTotal := 0

    //Zera a grid
    aColsGrid := {}
     
    //Montando a query
    oSay:SetText("Montando a consulta")
    cQry := " SELECT DISTINCT "                                                      + CRLF
    cQry += " SC5.C5_NUM "                                                            + CRLF
    cQry += " ,SC5.C5_EMISSAO "                                                       + CRLF
    cQry += " ,SA3.A3_NREDUZ"                                                         + CRLF
    cQry += " ,SA1.A1_NOME "                                                         + CRLF
    cQry += " ,SA1.A1_MUN "                                                           + CRLF
    cQry += " ,SA1.A1_EST"                                                            + CRLF
    cQry += " ,SC5.C5_FECENT "                                                        + CRLF
    cQry += " ,SC6.C6_TES "                                                           + CRLF
    cQry += " FROM " +RetSqlName("SC5")+ " SC5(NOLOCK),"                             + CRLF
    cQry += "      " +RetSqlName("SA1")+ " SA1(NOLOCK),"                             + CRLF
    cQry += "      " +RetSqlName("SC9")+ " SC9(NOLOCK),"                             + CRLF
    cQry += "      " +RetSqlName("SC6")+ " SC6(NOLOCK),"                             + CRLF
    cQry += "      " +RetSqlName("SA3")+ " SA3(NOLOCK) "                             + CRLF
    cQry += " WHERE SC9.C9_XLIBOK = ‘XX‘ "                                           + CRLF
    cQry += " AND SC5.C5_NOTA = ‘‘ "                                                  + CRLF
    cQry += " AND SA1.A1_COD = SC5.C5_CLIENTE "                                       + CRLF
    cQry += " AND SC9.C9_PEDIDO = SC5.C5_NUM "                                        + CRLF
    cQry += " AND SC6.C6_NUM = SC5.C5_NUM "                                           + CRLF
    cQry += " AND SA3.A3_COD = SC5.C5_VEND1 "                                         + CRLF
    cQry += " AND SC5.D_E_L_E_T_ = ‘‘ "                                               + CRLF
    cQry += " AND SC6.D_E_L_E_T_ = ‘‘ "                                               + CRLF
    cQry += " GROUP BY SC5.C5_NUM "                                                  + CRLF
    cQry += " ,SA1.A1_NOME "                                                         + CRLF
    cQry += " ,SA1.A1_EST "                                                           + CRLF
    cQry += " ,SA1.A1_MUN "                                                           + CRLF
    cQry += " ,SC5.C5_EMISSAO "                                                       + CRLF
    cQry += " ,SA1.A1_SUFRAMA "                                                       + CRLF
    cQry += " ,SC5.C5_FECENT "                                                        + CRLF
    cQry += " ,SA1.A1_NREDUZ "                                                        + CRLF
    cQry += " ,SA3.A3_NREDUZ "                                                        + CRLF
    cQry += " ,SC5.C5_XCLITRG "                                                       + CRLF
    cQry += " ,SC5.C5_TIPOCLI "                                                       + CRLF
    cQry += " ,SC6.C6_TES"                                                            + CRLF
    cQry += " ORDER BY SC5.C5_NUM "                                                  + CRLF

    //Executando a query
    oSay:SetText("Executando a consulta")
    PLSQuery(cQry, "QRY")


    //Se houve dados
    If ! QRY->(EoF())
        //Pegando o total de registros
        DbSelectArea("QRY")
        Count To nTotal
        QRY->(DbGoTop())

        //Enquanto houver dados
        While ! QRY->(EoF())

            //Muda a mensagem na regua
            nAtual++
            oSay:SetText("Adicionando registro " + cValToChar(nAtual) + " de " + cValToChar(nTotal) + "...")

            RecLock(cAliasTab, .T.)
               (cAliasTab)->XXPEDIDO   := QRY->C5_NUM
               (cAliasTab)->XXEMISSAO := QRY->C5_EMISSAO
               (cAliasTab)->XXNREDUZ   := QRY->A3_NREDUZ
               (cAliasTab)->XXCLIENTE := QRY->A1_NOME
               (cAliasTab)->XXMUNIC    := QRY->A1_MUN
               (cAliasTab)->XXESTADO   := QRY->A1_EST
               (cAliasTab)->XXPROGRAM := QRY->C5_FECENT
               (cAliasTab)->XXTES      := QRY->C6_TES
            (cAliasTab)->(MsUnlock())

            QRY->(DbSkip())
        EndDo

    Else
        MsgStop("Nao foi encontrado registros!", "Atencao")

        RecLock(cAliasTab, .T.)
            (cAliasTab)->XXPEDIDO   := " "
            (cAliasTab)->XXEMISSAO := " "
            (cAliasTab)->XXNREDUZ   := " "
            (cAliasTab)->XXCLIENTE := " "
            (cAliasTab)->XXMUNIC    := " "
            (cAliasTab)->XXESTADO   := " "
            (cAliasTab)->XXPROGRAM := " "
            (cAliasTab)->XXTES      := " "
        (cAliasTab)->(MsUnlock())
    EndIf
    QRY->(DbCloseArea())
    (cAliasTab)->(DbGoTop())

    RestArea(aArea)
Return

Static Function fGrupo()
   (cAliasTab)->(DbGoTop())
   oGetGrid:GoBottom(.T.)
   oGetGrid:Refresh(.T.)
   oGetGrid:GoTop(.T.)
   oGetGrid:Refresh(.T.)
   MsgInfo("Estou no grupo: " + (cAliasTab)->XXPEDIDO, "Atencao")
Return



Respostas:

Postado Por: @BETO
Data Postagem: terça-feira, 9 de novembro de 2021 at 13:22

Boa tarde.

O que vc tem que fazer e fechar a tabela e executar a query e reabrir novamente.

Eu fiz algo parecido, mas eu usei um timer.



Postado Por: TCHULA
Data Postagem: sexta-feira, 12 de novembro de 2021 at 16:07

Obrigado pela resposta Beto.

Teria como vc postar seu exemplo por favor.

Obrigado.



Postado Por: @BETO
Data Postagem: quinta-feira, 18 de novembro de 2021 at 11:52

#INCLUDE "rwmake.ch"
#include ‘protheus.ch‘
#include ‘topconn.ch‘
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³NOVO25    º Autor ³ AP6 IDE            º Data ³ 02/12/14   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Codigo gerado pelo AP6 IDE.                                º±±
±±º          ³                                                            º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ AP6 IDE                                                    º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
User Function CadSZ3
//ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
//³ Declaracao de Variaveis                                             ³
//ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
Private cCadastro := "Separação de pedido."

private oTimer
private nTimeOut      := GETMV(‘MV_#TEMPO‘)

Private cAlias          := "SZ3"

// Variaveis Private da Funcao
Private _oDlg                    // Dialog Principal
// Privates das NewGetDados
Private oGetD

private aHead          := {}               // Array a ser tratado internamente na MsNewGetDados como aHeader
private aCol        := {}               // Array a ser tratado internamente na MsNewGetDados como aCols

DEFINE MSDIALOG _oDlg TITLE cCadastro FROM 178,181 TO 665,967 PIXEL

     // Cria Componentes Padroes do Sistema
     @ 008,330 Button "Separar"           Size 057,015 PIXEL OF _oDlg ACTION(SEPARA_PED(oGetD:aCols,oGetD:nAt))
     @ 036,330 Button "Imprimir"      Size 057,015 PIXEL OF _oDlg Action(Imprimir(oGetD:aCols,oGetD:nAt))
     @ 064,330 Button "Corrigir"      Size 057,015 PIXEL OF _oDlg Action(Ajusta_ped(oGetD:aCols,oGetD:nAt,aHead))
     @ 092,330 Button "Estorna"           Size 057,015 PIXEL OF _oDlg Action(Estorn_ped(oGetD:aCols,oGetD:nAt,aHead))
     @ 150,330 Button "Sair"           Size 057,015 PIXEL OF _oDlg Action(_oDlg:end(),oTimer:deactivate())

     // Chamadas das GetDados do Sistema
     fGetDados1(@oGetD)

     oTimer:= TTimer():New(nTimeOut,{|| Filtro_SZ3() },_oDlg) // Ativa timer
     oTimer:Activate()     

     oGetD:oBrowse:blDblClick := {|| Libera_Ped(oGetD:aCols,oGetD:nAt,aHead)}

     oGetD:oBrowse:lUseDefaultColors := (.F.)
     oGetD:oBrowse:SetBlkBackColor({|| GETDCLR(oGetD:aCols,oGetD:nAt,aHead)})

     processa({||Filtro_SZ3()},‘Verificando pedidos liberados.‘)
     
ACTIVATE MSDIALOG _oDlg CENTERED

/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³NOVO25    ºAutor ³Microsiga           º Data ³ 12/02/14   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc.     ³                                                            º±±
±±º          ³                                                            º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ AP                                                        º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
static function Filtro_SZ3
local cFiltro     := ‘‘
local cQuery     := ‘‘
local cAliasSC5     := ‘TMPSC5‘
local aStru          := sc5->(dbstruct())
local nUsado     := 0
local cIndexSC5     := ‘‘
local cKeySC5     := ‘‘
local aAux          := {}
Local aCpoGDa     := {"Z3_PEDIDO","Z3_MSG","Z3_NOTA","Z3_SERIE","Z3_CLIENTE","Z3_LOJA","Z3_NOME","Z3_DTLIB","Z3_HRLIB"}

if select(cAliasSC5) # 0
     dbselectarea(cAliasSC5)
     dbclosearea()
endif

cQuery     := "select * from " + retsqlname(‘SC5‘) + " where "
cQuery     += "C5_FILIAL = ‘"+xfilial(‘SC5‘)+"‘ and "
cQuery     += "D_E_L_E_T_ <> ‘*‘ and "
cQuery     += "C5_SEPERAC = ‘S‘"
cQuery     += " and C5_TIPO = ‘N‘"

//TCQuery Abre uma workarea com o resultado da query
TCQUERY cQuery NEW ALIAS &cAliasSC5

For nX := 1 To Len(aStru)
     TcSetField(cAliasSC5,aStru[nX,1],aStru[nX,2],aStru[nX,3],aStru[nX,4])
Next nX

cKeySC5          := ‘C5_NUM‘
cIndexSC5     := criatrab(nil,.f.)
IndRegua(cAliasSC5, cIndexSC5, cKeySC5, , ‘‘, "Selecionando Pedidos...")

dbselectarea(cAliasSc5)
dbgotop()

while !eof()

     incproc()

     dbselectarea(‘SZ3‘)
     dbsetorder(1)

     if dbseek(xfilial(‘SZ3‘)+(cAliasSC5)->c5_num)
          if sz3->z3_lib # ‘S‘

               sc5->(dbseek(xfilial(‘SC5‘)+(cAliasSC5)->c5_num))

               reclock(‘SZ3‘,.f.)
                    sz3->z3_filial     := xfilial(‘SZ3‘)
                    sz3->z3_pedido     := (cAliasSC5)->c5_num
                    sz3->z3_cliente     := (cAliasSC5)->c5_cliente
                    sz3->z3_loja     := (cAliasSC5)->c5_lojacli
                    SZ3->Z3_NOTA     := (cAliasSC5)->c5_nota
                    sz3->z3_serie     := (cAliasSC5)->c5_serie
                    
                    sz3->z3_msg          := if (empty(SC5->c5_msgexp),‘‘,‘S‘)
                    
                    if !(cAliasSC5)->c5_tipo $ ‘BF‘
                         sz3->z3_nome     := posicione(‘SA1‘,1,xfilial(‘SA1‘)+(cAliasSC5)->(c5_cliente+c5_lojacli),‘A1_NOME‘)
                    else
                         sz3->z3_nome     := posicione(‘SA2‘,1,xfilial(‘SA2‘)+(cAliasSC5)->(c5_cliente+c5_lojacli),‘A2_NOME‘)
                    endif
                    
               msunlock()     
          endif
     else
          sc5->(dbseek(xfilial(‘SC5‘)+(cAliasSC5)->c5_num))
          
          reclock(‘SZ3‘,.t.)
               sz3->z3_filial     := xfilial(‘SZ3‘)
               sz3->z3_pedido     := (cAliasSC5)->c5_num
               sz3->z3_dtlib     := date()
               sz3->z3_cliente     := (cAliasSC5)->c5_cliente
               sz3->z3_loja     := (cAliasSC5)->c5_lojacli
               sz3->z3_lib          := ‘‘
               sz3->z3_imp          := ‘‘
               sz3->z3_erro     := ‘‘
               SZ3->Z3_NOTA     := (cAliasSC5)->c5_nota
               sz3->z3_serie     := (cAliasSC5)->c5_serie
               
               sz3->z3_msg          := if (empty(SC5->c5_msgexp),‘‘,‘S‘)
               
               if !(cAliasSC5)->c5_tipo $ ‘BF‘
                    sz3->z3_nome     := posicione(‘SA1‘,1,xfilial(‘SA1‘)+(cAliasSC5)->(c5_cliente+c5_lojacli),‘A1_NOME‘)
               else
                    sz3->z3_nome     := posicione(‘SA2‘,1,xfilial(‘SA2‘)+(cAliasSC5)->(c5_cliente+c5_lojacli),‘A2_NOME‘)
               endif
          msunlock()
     endif

    dbselectarea(cAliasSC5)
     dbskip()
enddo

dbselectarea(cAliasSC5)
dbclosearea()
if file(cIndexSC5+‘.idx‘)
     ferase(cIndexSC5+‘.idx‘)
endif

aCol     := {}
nUsado     := len(aHead)

dbselectArea(‘SZ3‘)
dbgotop()

while !eof()

     sc9->(dbsetorder(1))      // filial + pedido
     
     if !sc9->(dbseek(xfilial(‘SC9‘)+ sz3->z3_pedido))
          reclock(‘SZ3‘,.f.)
               dbdelete()
          msunlock()
          
         dbselectarea(‘SC5‘)
         dbsetorder(1)
         if dbseek(xfilial(‘SC5‘)+sz3->z3_pedido)
              if SC5->(RLOCK(RECNO()))
                   reclock(‘SC5‘,.f.)
                        sc5->C5_SEPERAC := ‘‘
                  msunlock()
              endif
          endif
    endif    
    
     dbselectArea(‘SZ3‘)
     dbskip()
enddo

dbselectArea(‘SZ3‘)
dbgotop()

while !eof()

     AADD(aCol,Array(nUsado+1))
     For nX:=1 to nUsado
          aCol[Len(aCol),nX]:=FieldGet(FieldPos(aHead[nX,2]))
     Next
     
     aCol[Len(aCol),nUsado+1]:=(.F.)
     
     dbSkip()
enddo

if len(aCol) == 0
     // Carrega aHead
     DbSelectArea("SX3")
     SX3->(DbSetOrder(2)) // tabela
     // Carregue aqui a Montagem da sua aCol
     aAux := {}
     For nX := 1 to Len(aCpoGDa)
          If DbSeek(aCpoGDa[nX])
               Aadd(aAux,CriaVar(SX3->X3_CAMPO))
          Endif
     Next nX
     Aadd(aAux,.F.)
     Aadd(aCol,aAux)
     dbselectarea(‘SZ3‘)
endif

oGetD:aCols     := aCol
oGetD:REFRESH()

return




Imprimir Página | Fechar Janela