- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Update error - lock required
×
Linguagem de Programação ADVPL
Perguntas Update error - lock required
- joaocarloscorrea
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
10 anos 7 horas atrás #26264
por joaocarloscorrea
Update error - lock required foi criado por joaocarloscorrea
Boa noite! Tenho pouca experiencia com o ADVPL, estou sofrendo com esse erro do assunto do topico! Desenvolvi uma rotina que usa um PE de quando é feito um lancamento de Doc. Entrada, assim que é feita a entrada executa um menu que contem uma planilha de formação de preco, onde o usuario informa os dados e confirma gravando o preco novo na tabela SB1, uso essa rotina aqui para gravar:
static function mudasb1(_cProd,_Prv,nCusto)
cMemo := "Impostos" + Chr(13) + Chr(10)
cMemo += "IRPJ: "+transform(nIrpj,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "ICMS: "+transform(nIcms,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "IPI: "+transform(nIpi,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "CSLL: "+transform(nCsll,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "PIS: "+transform(nPis,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "COFINS: "+transform(nCofins,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "
" + Chr(13) + Chr(10)
cMemo += "Outros Encargos" + Chr(13) + Chr(10)
cMemo += "Perda: "+transform(nOutros,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Custo de Venda: "+transform(nCustVenda,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Desp. Admin: "+transform(nDesp,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "
" + Chr(13) + Chr(10)
cMemo += "Custos e Precos" + Chr(13) + Chr(10)
cMemo += "Custo de Compra: "+transform(nCustoProd,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Margem: "+transform(nMargem,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Margem Liquida: "+transform(nMargemLiq,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Preco Minimo: "+transform(nPrecoMin,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Preco Final: "+transform(nResult,"@E 999,999,999.999%")
DbSelectArea("SB1")
DbSeek(xFilial("SB1")+_cProd)
RecLock("SB1",.F.)
REPLACE SB1->B1_ZULTCUS WITH nCusto
REPLACE SB1->B1_PRV1 WITH _Prv
REPLACE SB1->B1_ZPLANIL WITH cMemo //Replace NOVO com a gravacao da planilha
MsUnlock()
DBCloseArea()
Close(oDlg1)
return
Já uso essa customizacao ao certo tempo, porem foi me solicitado que eu gravasse a formação do preco no produto, para consultas, dai coloquei MAIS um replace (o que apresenta erro). Porem a customizacao roda normal, o erro que recebo é quando vou CONSULTAR o produto, e visualizo o mesmo e o campo esta gravado OK, mas quando fecho a tela, vem o erro do tópico, como segue o anexo.
Se puderem me ajudar ficaria muito agradecido!
static function mudasb1(_cProd,_Prv,nCusto)
cMemo := "Impostos" + Chr(13) + Chr(10)
cMemo += "IRPJ: "+transform(nIrpj,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "ICMS: "+transform(nIcms,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "IPI: "+transform(nIpi,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "CSLL: "+transform(nCsll,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "PIS: "+transform(nPis,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "COFINS: "+transform(nCofins,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "
" + Chr(13) + Chr(10)
cMemo += "Outros Encargos" + Chr(13) + Chr(10)
cMemo += "Perda: "+transform(nOutros,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Custo de Venda: "+transform(nCustVenda,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Desp. Admin: "+transform(nDesp,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "
" + Chr(13) + Chr(10)
cMemo += "Custos e Precos" + Chr(13) + Chr(10)
cMemo += "Custo de Compra: "+transform(nCustoProd,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Margem: "+transform(nMargem,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Margem Liquida: "+transform(nMargemLiq,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Preco Minimo: "+transform(nPrecoMin,"@E 999,999,999.999%")+Chr(13) + Chr(10)
cMemo += "Preco Final: "+transform(nResult,"@E 999,999,999.999%")
DbSelectArea("SB1")
DbSeek(xFilial("SB1")+_cProd)
RecLock("SB1",.F.)
REPLACE SB1->B1_ZULTCUS WITH nCusto
REPLACE SB1->B1_PRV1 WITH _Prv
REPLACE SB1->B1_ZPLANIL WITH cMemo //Replace NOVO com a gravacao da planilha
MsUnlock()
DBCloseArea()
Close(oDlg1)
return
Já uso essa customizacao ao certo tempo, porem foi me solicitado que eu gravasse a formação do preco no produto, para consultas, dai coloquei MAIS um replace (o que apresenta erro). Porem a customizacao roda normal, o erro que recebo é quando vou CONSULTAR o produto, e visualizo o mesmo e o campo esta gravado OK, mas quando fecho a tela, vem o erro do tópico, como segue o anexo.
Se puderem me ajudar ficaria muito agradecido!
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
9 anos 11 meses atrás #26267
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Update error - lock required
Substitua essa parte na função:
DbSelectArea("SB1")
DbSeek(xFilial("SB1")+_cProd)
RecLock("SB1",.F.)
REPLACE SB1->B1_ZULTCUS WITH nCusto
REPLACE SB1->B1_PRV1 WITH _Prv
REPLACE SB1->B1_ZPLANIL WITH cMemo //Replace NOVO com a gravacao da planilha
MsUnlock()
DBCloseArea()
Por Essa:
If SB1->(dbSetOrder(1), dbSeek(xFilial("SB1")+_cProd))
If RecLock("SB1",.f.)
SB1->B1_ZULTCUS := nCusto
SB1->B1_PRV1 := _Prv
SB1->B1_ZPLANIL := cMemo
SB1->(MsUnlock())
Endif
Endif
Close(oDlg1)
return
DbSelectArea("SB1")
DbSeek(xFilial("SB1")+_cProd)
RecLock("SB1",.F.)
REPLACE SB1->B1_ZULTCUS WITH nCusto
REPLACE SB1->B1_PRV1 WITH _Prv
REPLACE SB1->B1_ZPLANIL WITH cMemo //Replace NOVO com a gravacao da planilha
MsUnlock()
DBCloseArea()
Por Essa:
If SB1->(dbSetOrder(1), dbSeek(xFilial("SB1")+_cProd))
If RecLock("SB1",.f.)
SB1->B1_ZULTCUS := nCusto
SB1->B1_PRV1 := _Prv
SB1->B1_ZPLANIL := cMemo
SB1->(MsUnlock())
Endif
Endif
Close(oDlg1)
return
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- joaocarloscorrea
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 11 meses atrás #26319
por joaocarloscorrea
Respondido por joaocarloscorrea no tópico Update error - lock required
Opa! funcionou perfeito! fico agradecido!
Por favor Acessar ou Registrar para participar da conversa.
- joaocarloscorrea
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
9 anos 11 meses atrás #26344
por joaocarloscorrea
Respondido por joaocarloscorrea no tópico Update error - lock required
Ontem fiz um teste no ambiente oficial e o erro continuou, engracado que quando eu visualizo o produto pela consulta padrão ficar certo, mas quando vou no cadastro do produto e visualizo por lá, dá erro, não estou entendendo.
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
9 anos 11 meses atrás #26367
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Update error - lock required
Coloque no começo da função
Local aArea := GetArea()
e Antes do Return
RestArea(aArea)
Local aArea := GetArea()
e Antes do Return
RestArea(aArea)
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Update error - lock required
Tempo para a criação da página:0.135 segundos