|
Bem Vindo, Visitante
|
Todos os Fórums
Faturamento
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Reclock não atualiza |
|
Versão: |
12.1.23 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
ALICEMA
em 20/11/2020, 10:38 h
Local: MG Registro: 26/08/2020 Postagens: 25 |
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! |
|
|
Mensagem do
CJ_CAMPOS
em 20/11/2020, 12:00 h
Local: SP Registro: 22/04/2020 Postagens: 61 |
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. |
|
|
Mensagem do
ALICEMA
em 20/11/2020, 12:06 h
Local: MG Registro: 26/08/2020 Postagens: 25 |
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. |
|
|
Mensagem do
LUCASLOTT
em 20/11/2020, 12:36 h
Local: SP Registro: 21/05/2020 Postagens: 49 |
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 |
|
|
Mensagem do
ALICEMA
em 20/11/2020, 13:35 h
Local: MG Registro: 26/08/2020 Postagens: 25 |
Boa tarde Lucas, também ja tentei utilizar o PADR e não funcionou |
|
|
Mensagem do
CJ_CAMPOS
em 20/11/2020, 14:07 h
Local: SP Registro: 22/04/2020 Postagens: 61 |
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
WALTERFCAR
em 20/11/2020, 14:25 h
Local: SP Registro: 14/10/2015 Postagens: 61 |
só para garantir, houve o DbSelectArea(SCT) ? |
|
|
Mensagem do
ALICEMA
em 20/11/2020, 14:30 h
Local: MG Registro: 26/08/2020 Postagens: 25 |
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
WALTERFCAR
em 20/11/2020, 15:04 h
Local: SP Registro: 14/10/2015 Postagens: 61 |
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. |
|
|
Mensagem do
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
|
|
|
Mensagem do
EMERSON.EN
em 20/11/2020, 16:13 h
Local: SP Registro: 20/08/2010 Postagens: 669 |
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
|
|
|
Mensagem do
ALICEMA
em 20/11/2020, 16:23 h
Local: MG Registro: 26/08/2020 Postagens: 25 |
DMMACHADO fiz do jeito que você colocou, mas ainda não funcionou |
|
|
Mensagem do
ALICEMA
em 23/11/2020, 14:48 h
Local: MG Registro: 26/08/2020 Postagens: 25 |
Emerson, deu certo, muito obrigada pela ajuda e atenção! |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|