PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
msexecauto de mata240 ou mata241.
Versão:
Plataforma:
Complemento:
DB:
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário @BETO @BETO em 15/02/2007, 17:59 h
Local: MG  Registro: 26/01/2006  Postagens: 534
Estou tentando fazer o msexecauto com uma das duas, mas as duas da pau...

Arotina mata240 gera um arquivo de erro, falando que o produto não foi localizado, o a outra mata241 gera error.log infornando isso.

variable is not array on MSARRAYXDB(MATXFUNB.PRX) 23/03/2006 line : 4075

[build:7.00.060906P]
[environment: teste]
[thread 3964]
Called from MATA241(MATA241.PRX) 18/01/2006 line : 106
Called from {|X,Y,Z| MATA241(X,Y,Z)}(BAIXAVENDA.PRW) line : 221
Called from line : 3751
Called from MSEXECAUTO(MATXFUNB.PRX) 23/03/2006 line : 3751
Called from BAIXA(BAIXAVENDA.PRW) 15/02/2007 line : 221
Called from {||BAIXA()}(BAIXAVENDA.PRW) line : 144
Called from line : 43
Called from { || EVAL( BACTION, @LEND ),LEND := .T. , ODLG:END() }(MSPROCES.PRW) line : 43
Called from line : 0
Called from PROCESSA(MSPROCES.PRW) 28/07/2004 line : 45
Called from IMPORTAR(BAIXAVENDA.PRW) 15/02/2007 line : 144

olha o fonte ai....

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

/*ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄ¿±±
±±³Programa ³ImpLista ³ Autor ³ Roberto Zaniboni      ³ Data ³12/02/2007³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄ´±±
±±³Locacao   ³ Fabr.Tradicional ³Contato ³ robertoz@microsiga.com.br      ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Descricao ³                                                            ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Parametros³                                                            ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Retorno   ³                                                            ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Aplicacao ³                                                            ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Uso       ³                                                            ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÁÄÄÄÂÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³Analista Resp.³ Data ³ Bops ³ Manutencao Efetuada                    ³±±
±±ÃÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´±±
±±³              ³ / / ³      ³                                        ³±±
±±³              ³ / / ³      ³                                        ³±±
±±ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß*/
User Function BaixaVenda()
// Variaveis Locais da Funcao
Local cEdit1           := Space(250)
// Variaveis Private da Funcao
Private _oDlg                    // Dialog Principal    
private cTabTmp          := "TMP"
private aCampos          := {}
private _cNomeArq     := ""
private cIndexName     := ""   
private dDtEmissao     := Date()

DEFINE MSDIALOG _oDlg TITLE "Leitura de Arquivo de logs de vendas" FROM 178,181 TO 388,596 PIXEL

     // Cria as Groups do Sistema
     @ 011,008 TO 080,197 LABEL "" PIXEL OF _oDlg
     // Cria Componentes Padroes do Sistema
     @ 022,022 Say " Este programa ira ler o conteudo de um arquivo texto, conforme" Size 153,008 COLOR CLR_BLACK PIXEL OF _oDlg
     @ 032,022 Say " os parametros definidos pelo usuario, com os registros do arquivo" Size 156,008 COLOR CLR_BLACK PIXEL OF _oDlg
     @ 042,022 Say " de baixa de estoque venda de produtos. " Size 066,008 COLOR CLR_BLACK PIXEL OF _oDlg
     @ 062,023 MsGet cEdit1 Size 160,009 COLOR CLR_BLACK PIXEL OF _oDlg
     @ 090,115 Button "Importar" Size 037,012 PIXEL OF _oDlg Action(Importar(cEdit1))
     @ 090,162 Button "Sair" Size 037,012 PIXEL OF _oDlg Action(_oDlg:end())

ACTIVATE MSDIALOG _oDlg CENTERED

Return(.T.)      

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFun+"o    ³ Importar º Autor ³ AP6 IDE            º Data ³ 29/11/06   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescri+"o ³ Funcao chamada pelo botao OK na tela inicial de processamenº±±
±±º          ³ to. Executa a leitura do arquivo texto.                    º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ Programa principal                                         º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/

Static Function Importar(cNomeArq)
local nBarra          := 0     
local cArrayNome     := ""
local nContador          := 1
local cData               := ""
Private cArqTxt      := ""
Private nHdl
Private cEOL         := "CHR(13)+CHR(10)"
private _aDir          := {}    

aDIR(alltrim(cNomeArq)+"\*.*",_aDir)

_oDlg:End()

If Empty(cEOL)
    cEOL := CHR(13)+CHR(10)
Else
    cEOL := Trim(cEOL)
    cEOL := &cEOL
Endif

aadd(aCampos,{"CODIGO"     ,"C",15,0})
aadd(aCampos,{"QUANT"     ,"N",10,0})
aadd(aCampos,{"TIPO"     ,"C",02,0})
aadd(aCampos,{"UM"          ,"C",02,0})
aadd(aCampos,{"GRUPO"     ,"C",03,0})
aadd(aCampos,{"FILIAL"     ,"C",02,0})

_cNomeArq     := criatrab(aCampos     ,.T.) // criando tabela
cIndexName     := criatrab(nil          ,.F.) // criando indice

// cria a referencia para o alias
USE &_cNomeArq ALIAS &cTabTmp NEW
// fecha a area de trabalho
dbCloseArea()
// referecia a area de trabalho ao alias e abre o alias novo.
dbUseArea(.T.,,_cNomeArq,cTabTmp,.T.,.F.)
// criando indice de procura
IndRegua(cTabTmp, cIndexName, "CODIGO", , "", "Gerando Arquivo ...")
//                 
for nContador := 1 to len(_aDir)
     //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
     //³ Abertura do arquivo texto                                           ³
     //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
     cArrayNome     := ""
     cArrayNome     := alltrim(cNomeArq)+"\"+alltrim(_aDir[nContador])
     if len(cArrayNome) > 7
          nHdl    := fOpen(cArrayNome,68)
          //
          for t:= 1 to len(alltrim(cArrayNome))
               if Substr(alltrim(cArrayNome),t,1) == "\"
                    nBarra     := t+1
              endif
          next
          // arquivo
          cArqTxt     := upper(Substr(alltrim(cArrayNome),nBarra,len(alltrim(cArrayNome))))   
          // data de emissao
          cData     := substr(alltrim(cNomeArq),len(alltrim(cNomeArq))-5,6)
          dDtEmissao     := ctod(substr(cData,1,2)+"/"+substr(cData,3,2)+"/"+substr(cData,5,2))
          //
          If nHdl == -1
              MsgAlert("O arquivo de nome "+cArrayNome+" nao pode ser aberto! Verifique os parametros.","Atencao!")
              Return
          Endif
          //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
          //³ Inicializa a regua de processamento                                 ³
          //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
          Processa({|| RunCont(cArqTxt) },"Processando...")
          //
     else
          alert("Arquivo de importação invalido ou armazem não selecionado !!!")
     endif
next

processa({||Baixa()})

Return

static function Baixa()
local cNumseq, cNumDoc, cNomArqErro, cNomNovArq
local aCM               := {}
local lMsErroAuto     := .F.
local nContErro          := 0                                  
local aCab               := {}

cNumDoc := NextNumero("SD3",2,"D3_DOC",.T.)//BUSCA NUMERACAO DO SD3
//
dbselectarea("TMP")    

procregua(TMP->(LASTREC()))

FOR T:= 1 TO TMP->(LASTREC())      
    //incproc("Executando Baixa de venda...")
    incproc()
     cNumseq := ProxNum()
     aCM := PegaCMAtu(TMP->CODIGO,"A1") //PEGA O CUSTO MEDIO
     //VERIFICA SE O CUSTO VIRA COM VALOR ZERO
     /*
     If aCM[1] == 0
          nCusto := Posicione("SB1",1,xFilial("SB1") + TMP->CODIGO,"B1_UPRC")
         nCusto := IIf(nCusto == 0,1,nCusto)
     Else
         nCusto := aCM[1]
     EndIf                                                 
     
     aReg := {      {"D3_COD"          ,TMP->CODIGO          ,Nil},;
                    {"D3_FILIAL"     ,TMP->FILIAL          ,nil},;
                     {"D3_LOCAL"        ,"A1"                 ,Nil},;
                   {"D3_NUMSEQ"    ,cNumSeq            ,Nil},;
                    {"D3_DOC"       ,cNumDoc            ,Nil},;
                    {"D3_QUANT"     ,TMP->QUANT        ,Nil},;
                   {"D3_TM"        ,"501"              ,Nil},;
                   {"D3_CF"          ,"RE0"                    ,NIL},;
                   {"D3_EMISSAO"   ,dDTEMISSAO               ,NIL},;
                   {"D3_GRUPO"          ,TMP->GRUPO               ,NIL},;
                   {"DE_UM"          ,TMP->UM               ,NIL},;
                   {"D3_TIPO"          ,TMP->TIPO               ,NIL},;
                   {"D3_USUARIO"     ,ALLTRIM(SUBSTR(cUSUARIO,7,15)),NIL},;
                   {"D3_CUSTO1"    ,Round(aCM[1],2)    ,Nil},;
                   {"D3_CUSTO2"    ,Round(aCM[2],2)    ,Nil},;
                   {"D3_CUSTO3"    ,Round(aCM[3],2)    ,Nil},;
                   {"D3_CUSTO4"    ,Round(aCM[4],2)    ,Nil},;
                   {"D3_CUSTO5"    ,Round(aCM[5],2)    ,Nil},;
                   {"D3_ESTCIS"    ,"S"               ,Nil}}
     */     
     aReg := {      {"D3_COD"          ,TMP->CODIGO          ,Nil},;
                    {"D3_FILIAL"     ,TMP->FILIAL          ,nil},;
                     {"D3_LOCAL"        ,"A1"                 ,Nil},;
                   {"D3_NUMSEQ"    ,cNumSeq            ,Nil},;
                    {"D3_QUANT"     ,TMP->QUANT        ,Nil},;
                   {"D3_CF"          ,"RE0"                    ,NIL},;
                   {"D3_GRUPO"          ,TMP->GRUPO               ,NIL},;
                   {"DE_UM"          ,TMP->UM               ,NIL},;
                   {"D3_TIPO"          ,TMP->TIPO               ,NIL},;
                   {"D3_USUARIO"     ,ALLTRIM(SUBSTR(cUSUARIO,7,15)),NIL},;
                   {"D3_CUSTO1"    ,Round(aCM[1],2)    ,Nil},;
                   {"D3_CUSTO2"    ,Round(aCM[2],2)    ,Nil},;
                   {"D3_CUSTO3"    ,Round(aCM[3],2)    ,Nil},;
                   {"D3_CUSTO4"    ,Round(aCM[4],2)    ,Nil},;
                   {"D3_CUSTO5"    ,Round(aCM[5],2)    ,Nil},;
                   {"D3_ESTCIS"    ,"S"               ,Nil}}

     aCab := {      {"D3_DOC"       ,cNumDoc            ,Nil},;
                    {"D3_TM"        ,"501"              ,Nil},;
                   {"D3_EMISSAO"   ,dDTEMISSAO               ,NIL},;
                   {"D3_CC"          ,""                         ,nil}}
                                                            
     //{"D3_CUSTO1"    ,Round(nCusto,2)    ,Nil},;
     lMsErroAuto := .F.
     //GERA O TITULO NO SD3
     //MSExecAuto({|x,y,z| MATA240(x,y,z)},aReg,,3)   
     MSExecAuto({|x,y,z| MATA241(x,y,z)},aCab,aReg,3)
     //   
     If lMsErroAuto
          nContErro ++
     EndIf
     
     //ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
     //³ Se gerou novo arquivo de erro, apaga o anterior e gera novo ³
     //ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
     If nContErro > 0
          cNomArqErro := NomeAutoLog()
         cNomNovArq := __RELDIR+"TITULOG.##R"
         If MsErase(cNomNovArq)
              __CopyFile(cNomArqErro,cNomNovArq)
         EndIf
         MsErase(cNomArqErro)
         If MsgYesNo(OemToAnsi("Ocorreram problemas com" + " ( " + Ltrim(Str(nContErro,5)) + " ) " + "registros durante o processo de Inclusão. Deseja visualiza-los agora?"), OemToAnsi("Atenção"))
             fVerLog()
         EndIf
     EndIf
     // tabela temporaria
     dbselectarea("TMP")
     dbskip()
NEXT

MsErase(_cNomeArq + ".dbf")   
MsErase(_cNomeArq + ".idx")
          
return       

/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºFun+"o    ³ RUNCONT º Autor ³ AP5 IDE            º Data ³ 29/11/06   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescri+"o ³ Funcao auxiliar chamada pela PROCESSA. A funcao PROCESSA º±±
±±º          ³ monta a janela com a regua de processamento.               º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ Programa principal                                         º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/

Static Function RunCont(cArqTxt)
Local nTamFile, nTamLin, cBuffer, nBtLidos
local lAchou     := .F.
local cCodigo     := ""     
local lLinha1     := .T.
local lCond          := .T.

nTamFile := fSeek(nHdl,0,2)
fSeek(nHdl,0,0)

ProcRegua(nTamFile) // Numero de registros a processar

while lCond
     
     IncProc("Processando arquivo " + cArqTxt)
    lAchou     := .F.
    cCodigo     := ""
     // verifica se não e a primeir alinha
     if lLinha1
         nTamLin := 52+Len(cEOL)
          cBuffer := Space(nTamLin) // Variavel para criacao da linha do registro para leitura
          lLinha1 := .F.
    else
         nTamLin := 82+Len(cEOL)
          cBuffer := Space(nTamLin) // Variavel para criacao da linha do registro para leitura
    endif
    // le a linha do arquivo
     nBtLidos := fRead(nHdl,@cBuffer,nTamLin) // Leitura da primeira linha do arquivo texto
     // valida a linha para saber se não esta na ultima linha
     if nBtLidos < nTamLin
          lCond     := .F.
     endif
    // valida somente as linha de produtos
    if nBtLidos > 82
          dbSelectArea("SB1")
          //filial+cod. barra
          dbsetorder(5)
          dbseek(xfilial() + substr(cBuffer,1,13))
          // caso não localizou o codigo de barra na tabela SB1
          if !found()
               dbselectarea("SLK")   
               //filial+cod. barra
               dbsetorder(1)
               if dbseek(xfilial() + substr(cBuffer,1,13))
                    cCodigo     := slk->lk_codigo   
                    lAchou     := .T.
               endif
          else      
               cCodigo     := sb1->b1_cod
               lAchou     := .T.
          endif
          //       
          if lAchou
               dbselectarea(cTabTmp)
               if dbseek(cCodigo)
                  reclock(cTabTmp, .F.)
                         replace QUANT          WITH QUANT + VAL(substr(cBuffer,47,5) + "." + substr(cBuffer,51,3))
                  msunlock()
                else
                     reclock(cTabTmp, .T.)
                       REPLACE CODIGO           WITH cCodigo
                       replace QUANT          WITH VAL(substr(cBuffer,47,5) + "." + substr(cBuffer,52,3))
                       REPLACE     GRUPO          WITH SB1->B1_GRUPO
                       REPLACE TIPO          WITH SB1->B1_TIPO
                       REPLACE FILIAL          WITH SB1->B1_FILIAL
                       REPLACE UM               WITH SB1->B1_UM
                       //replace ARQUIVO          with cArqTxt
                       //replace CAIXA          with substr(cArqTxt,10,3)
                  msunlock()
                endif
          endif
     endif
EndDo

fClose(nHdl)

Return .T.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário @BETO @BETO em 16/02/2007, 14:17 h
Local: MG  Registro: 26/01/2006  Postagens: 534
Na boa... já resolvi... o problema.... orelhada minha..

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário @BETO @BETO em 16/02/2007, 14:17 h
Local: MG  Registro: 26/01/2006  Postagens: 534
Na boa... já resolvi... o problema.... orelhada minha..

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário @BETO @BETO em 16/02/2007, 14:17 h
Local: MG  Registro: 26/01/2006  Postagens: 534
Na boa... já resolvi... o problema.... orelhada minha..

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário TCOL TCOL em 14/10/2008, 08:41 h
Local: RS  Registro: 01/02/2008  Postagens: 22
Beto, qual era seu erro? Estou com o mesmo problema, e não consegui resolver ainda, já fiz diversas coisas, mas nada ajudou.
Se puderes, aguardo sua ajuda. Obrigado!

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário TCOL TCOL em 16/10/2008, 17:36 h
Local: RS  Registro: 01/02/2008  Postagens: 22
   Consegui achar o erro! Era um campo date, que eu estava enviando como por exemplo: 20081015, e na verdade, teria que enviar, como envio no remote que seria: 15/10/08, dae usei a fonção ctod() e ficou show.
   Resumindo, ficou assim:

{"D3_EMISSAO"   ,ctod("15/10/08")     ,Nil}

   E antes tava(que é o formato que fica armazenado no banco):

{"D3_EMISSAO"   ,"20081015"     ,Nil}

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário TCOL TCOL em 17/10/2008, 10:03 h
Local: RS  Registro: 01/02/2008  Postagens: 22
   Desculpe pessoal, me confundi, este problema que o Beto está tendo, não tem nada a ver com esta solução que comentei, isto que postei é para resolver um outro problema de TypeMismatch que estava ocorrendo em outro MsExecAuto.
O problema que o Beto comentou, ainda está ocorrendo para mim no ExecAuto, da MATA241.

   Caso alguém tenha alguma dica, agradeço.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ROBERTKOCH ROBERTKOCH em 21/10/2008, 16:35 h
Local: RS  Registro: 14/02/2008  Postagens: 138
Boa tarde,

Tenho um "simplesinho" rodando aqui. Segue abaixo...

Robert

// ------------------------------------
User Function RPCMat04 (_sIncExc, _aItens, _sNF, _sSerie, _sCliente, _sLoja)
     local _aAutoSD3 := {}
     private lMsHelpAuto := .F.
     private lMsErroAuto := .F.

               for _nItem = 1 to len (_aItens)

                    // Monta campos para rotina automatica
                    _aAutoSD3 = {}
                    aadd (_aAutoSD3, {"D3_TM",      "701",                      NIL})
                    aadd (_aAutoSD3, {"D3_COD",     _aItens [_nItem, 1],        NIL})
                    aadd (_aAutoSD3, {"D3_VADOC02", _sNF, NIL})
                    aadd (_aAutoSD3, {"D3_QUANT",   _aItens [_nItem, 2],        NIL})
                    aadd (_aAutoSD3, {"D3_EMISSAO", _aItens [_nItem, 3],        NIL})
                    lMSErroAuto = .F.
                    MsExecAuto({|x,y,z|MATA240(x,y,z)}, _aAutoSD3, 3)
                    If lMsErroAuto
                         mostraerro()
                    endif
               next

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário MARIALOURD MARIALOURD em 10/03/2023, 11:12 h
Local: GO  Registro: 07/05/2021  Postagens: 13
Beto estou com o mesmo problema, gostaria de saber qual foi a solução encontrada.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal