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

Subject Assunto:
Reclock não atualiza
Versão:
12.1.23
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALICEMA ALICEMA em 20/11/2020, 10:38 h
Local: MG  Registro: 26/08/2020  Postagens: 23
Bom dia pessoal, estou tentando atualizar alguns campos, mas só atualiza quando eu posiciono em cima do registro, e não o que é passado através do parâmetro do pergunte(MV_PAR01), segue abaixo o que estou utilizando, não estou conseguindo identificar onde está errado:

cFilSCT := xFilial(‘SCT‘)
    
SCT->(dbSetOrder(3)) // CT_FILIAL, CT_DOC, CT_SEQUEN, CT_VEND
SCT->(dbSetOrder(4)) // CT_FILIAL, CT_DOC, CT_SEQUEN, CT_REGIAO
QRY_AUX->(DBGOTOP())

While !QRY_AUX->(EOF())
IF SCT->CT_XXTIPOM == ‘2‘
          If SCT->(dbSeek(cFilSCT+mv_par01+QRY_AUX->CT_SEQUEN+QRY_AUX->CT_VEND))      
                   

               RecLock("SCT",.F.)
               SCT->CT_XXVLRVD := QRY_AUX->F2_VALBRUT
               SCT->CT_XXCLIN := QRY_AUX->CADNOVO
               SCT->CT_XXQTDP := QRY_AUX->NOVOVENDA
               SCT->CT_XXPOSR := QRY_AUX->POSITIVA
               SCT->CT_XXQTDPV := QRY_AUX->QTDPDV
          End

END
      SCT->(MSUnlock())
        QRY_AUX->(dbSkip())          
End do

Desde já, agradeço!

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CJ_CAMPOS CJ_CAMPOS em 20/11/2020, 12:00 h
Local: SP  Registro: 22/04/2020  Postagens: 50
Veja se o parametro MV_PAR01 tem o mesmo numero de caracteres do campo CT_DOC e coloque a instrução SCt->(MsUnlock()) logo apos a ultima instrução de atualização "SCT->CT_XXQTDPV :- QRY_AUX->QTDPDV"

Boa sorte.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALICEMA ALICEMA em 20/11/2020, 12:06 h
Local: MG  Registro: 26/08/2020  Postagens: 23
CJ_CAMPOS o número de casas do CT_DOC e mv_par01 são iguais, e fiz tbm o SCt->(MsUnlock()) que você descreveu acima, mas tbm não funcionou.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LUCASLOTT LUCASLOTT em 20/11/2020, 12:36 h
Local: SP  Registro: 21/05/2020  Postagens: 34
Boa tarde!

Comigo aconteceu algo parecido, e o problema era por conta dos "    " que não estavam do mesmo tamanho, e por isso não encontrava o registro e não atualizada! Só percebi pois debugando ele não entrava no If DbSeek

resolvi dessa forma:

PADR(oABC:aCols[oABC:oBrowse:nAt, nPosCli], TAMSX3("A1_COD" )[1])

onde o acols seria seu parametro e o tamanho do campo na X3, dessa forma ele fica formatado com os espaços corretos.

Lucas Lott

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALICEMA ALICEMA em 20/11/2020, 13:35 h
Local: MG  Registro: 26/08/2020  Postagens: 23
Boa tarde Lucas, também ja tentei utilizar o PADR e não funcionou

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário CJ_CAMPOS CJ_CAMPOS em 20/11/2020, 14:07 h
Local: SP  Registro: 22/04/2020  Postagens: 50
Alice, então verifique todos esses campos ( inclusive o xFilial() como estao retornando..

Crie a rotina dessa forma

cxFilial := Len(xFilial(cFilSCT))

etc.. e tal..

Cheque se os tamanhos são iguais por favor...

Deve haver algum pelo na casca do OVO..


Mensagem do Enviar e-mail Abrir o Perfil do usuário WALTERFCAR WALTERFCAR em 20/11/2020, 14:25 h
Local: SP  Registro: 14/10/2015  Postagens: 55
só para garantir, houve o DbSelectArea(SCT) ?

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALICEMA ALICEMA em 20/11/2020, 14:30 h
Local: MG  Registro: 26/08/2020  Postagens: 23
If Select("QRY_AUX") > 0
        QRY_AUX->(dbCloseArea())
    EndIf

    TCQUERY cQryAux NEW ALIAS "QRY_AUX"   
     

    QRY_AUX->(dbGoTop())

     cFilSCT := xFilial(‘SCT‘)
     cxFilial := Len(xFilial(cFilSCT))

     While !QRY_AUX->(EOF())
     If SCT->CT_XXTIPOM == ‘2‘
          SCT->(DbSelectArea("SCT"))
          SCT->(DBOrderNickName("METAVEND"))
          If SCT->(dbSeek(cxFilial + PADR(mv_par01,TAMSX3("CT_DOC")[1]) + PADR(QRY_AUX->CT_SEQUEN,TAMSX3("CT_SEQUEN")[1]) + PADR(QRY_AUX->CT_VEND,TAMSX3("CT_VEND")[1])) )     
                       
               RecLock("SCT",.F.)
               SCT->CT_XXVLRVD := QRY_AUX->F2_VALBRUT
               SCT->CT_XXCLIN := QRY_AUX->CADNOVO
               SCT->CT_XXQTDP := QRY_AUX->NOVOVENDA
               SCT->CT_XXPOSR := QRY_AUX->POSITIVA
               SCT->CT_XXQTDPV := QRY_AUX->QTDPDV
               SCT->(MSUnlock())
               SCT->(DbCloseArea())
          End
          
     End
     
     If SCT->CT_XXTIPOM == ‘1‘
          SCT->(DbSelectArea("SCT"))
          SCT->(DBOrderNickName("METAREGIAO"))
          If SCT->(dbSeek(cxFilial + PADR(mv_par01,TAMSX3("CT_DOC")[1]) + PADR(QRY_AUX->CT_SEQUEN,TAMSX3("CT_SEQUEN")[1]) + PADR(QRY_AUX->CT_REGIAO,TAMSX3("CT_REGIAO")[1])) )
                         
               RecLock("SCT",.F.)
               SCT->CT_XXVLRVD := QRY_AUX->F2_VALBRUT
               SCT->CT_XXCLIN := QRY_AUX->CADNOVO
               SCT->CT_XXQTDP := QRY_AUX->NOVOVENDA
               SCT->CT_XXPOSR := QRY_AUX->POSITIVA
               SCT->CT_XXQTDPV := QRY_AUX->QTDPDV
               SCT->(MSUnlock())
               SCT->(DbCloseArea())
          End
          
     End
     
     QRY_AUX->(dbSkip())          
     
     End do

Mensagem do Enviar e-mail Abrir o Perfil do usuário WALTERFCAR WALTERFCAR em 20/11/2020, 15:04 h
Local: SP  Registro: 14/10/2015  Postagens: 55
tb notei que vc não está tratando se o DbSeek() está posicionando no resgistro, tem que verificar sempre se o dbseek está conseguindo posicionar,
alias os campos que vc passa para o dbseek tê que ser do mesmo tamanho que o do campo na tabela.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário DMACHADO DMACHADO em 20/11/2020, 15:47 h
Local: RJ  Registro: 28/04/2020  Postagens: 2



If Select( "SCT" ) == 0
ChkFile( "SCT" )
ENDIF
cFilSCT := xFilial('SCT')
    
SCT->(dbSetOrder(3)) // CT_FILIAL, CT_DOC, CT_SEQUEN, CT_VEND
SCT->(dbSetOrder(4)) // CT_FILIAL, CT_DOC, CT_SEQUEN, CT_REGIAO
QRY_AUX->(DBGOTOP())

While !QRY_AUX->(EOF())
IF SCT->CT_XXTIPOM == '2'
          If SCT->(dbSeek(cFilSCT+mv_par01+QRY_AUX->CT_SEQUEN+QRY_AUX->CT_VEND))      
                   

               If RecLock("SCT",.F.)
               SCT->CT_XXVLRVD := QRY_AUX->F2_VALBRUT
               SCT->CT_XXCLIN := QRY_AUX->CADNOVO
               SCT->CT_XXQTDP := QRY_AUX->NOVOVENDA
               SCT->CT_XXPOSR := QRY_AUX->POSITIVA
               SCT->CT_XXQTDPV := QRY_AUX->QTDPDV
               SCT->( MsUnLock() )
               ELSE
               ENVIA AVISO POR EMAIL
               ENDIF
        QRY_AUX->(dbSkip())          
Enddo

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 20/11/2020, 16:13 h
Local: SP  Registro: 20/08/2010  Postagens: 549
acredito que o problema esteja nos IFs:

     If Select("QRY_AUX") > 0
          QRY_AUX->(dbCloseArea())
     EndIf

     TCQUERY cQryAux NEW ALIAS "QRY_AUX"   

     QRY_AUX->(dbGoTop())

     cFilSCT := xFilial(‘SCT‘) // já retorna no ‘tamanho‘ correto

     While !QRY_AUX->(EOF())

          SCT->(DBOrderNickName(If(QRY_AUX->CT_XXTIPOM == ‘2‘, "METAVEND", "METAREGIAO")))

//          If SCT->CT_XXTIPOM == ‘2‘// <<<-- ESTA CONDICAO ESTÁ ERRADA!!! COMO COMPARAR O CONTEÚDO DE SCT SE NEM POSICIONOU NA TABELA????
          If (QRY_AUX->CT_XXTIPOM == ‘2‘) .AND.;
          SCT->(dbSeek(cFilSCT + PADR(mv_par01,TAMSX3("CT_DOC")[1]) + QRY_AUX->CT_SEQUEN + QRY_AUX->CT_VEND))

               RecLock("SCT",.F.)
               SCT->CT_XXVLRVD := QRY_AUX->F2_VALBRUT
               SCT->CT_XXCLIN := QRY_AUX->CADNOVO
               SCT->CT_XXQTDP := QRY_AUX->NOVOVENDA
               SCT->CT_XXPOSR := QRY_AUX->POSITIVA
               SCT->CT_XXQTDPV := QRY_AUX->QTDPDV
               SCT->(MSUnlock())
//               SCT->(DbCloseArea()) // <<<-- NAO FECHE A ÁREA
          
          End

//          If SCT->CT_XXTIPOM == ‘1‘// <<<-- ESTA CONDICAO ESTÁ ERRADA!!! COMO COMPARAR O CONTEÚDO DE SCT SE NEM POSICIONOU NA TABELA????
          If (QRY_AUX->CT_XXTIPOM == ‘1‘) .AND.;
          SCT->(dbSeek(cFilSCT + PADR(mv_par01,TAMSX3("CT_DOC")[1]) + QRY_AUX->CT_SEQUEN + QRY_AUX->CT_REGIAO))
                         
               RecLock("SCT",.F.)
               SCT->CT_XXVLRVD := QRY_AUX->F2_VALBRUT
               SCT->CT_XXCLIN := QRY_AUX->CADNOVO
               SCT->CT_XXQTDP := QRY_AUX->NOVOVENDA
               SCT->CT_XXPOSR := QRY_AUX->POSITIVA
               SCT->CT_XXQTDPV := QRY_AUX->QTDPDV
               SCT->(MSUnlock())
//               SCT->(DbCloseArea()) // <<<-- NAO FECHE A ÁREA

          End
     
          QRY_AUX->(dbSkip())          
     
     End do

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALICEMA ALICEMA em 20/11/2020, 16:23 h
Local: MG  Registro: 26/08/2020  Postagens: 23
DMMACHADO fiz do jeito que você colocou, mas ainda não funcionou

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário ALICEMA ALICEMA em 23/11/2020, 14:48 h
Local: MG  Registro: 26/08/2020  Postagens: 23
Emerson, deu certo, muito obrigada pela ajuda e atenção!

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