Theotokos Posted May 22, 2021 Report Share Posted May 22, 2021 Bom Dia Pessoal!!! Precisando de uma "LUZ NO FIM DO TUNEL" Um Cliente relata que altera a qtde de produto e que na hora aparece na tela que gravou, depois no outro dia vai ver a qtde esta errada , e que não foi feita nenhuma venda ou entrada deste produto, mas testo aqui no meu e tudo funciona não dar este problema... não sei onde procurar este problema mais... a rotina que altera a qtde é esta: *** Aqui Chamo Function p oBrw:aCols[05]:nEditType := EDIT_GET oBrw:aCols[05]:bOnPostEdit := {|o,x| GravaAltQtde(x), oBrw:Refresh(), oDlg:Update(), oDlg:Refresh() } oBrw:aCols[05]:cEditPicture := "@E 999,999.99" oBrw:aCols[05]:lEditBorder := .f. oBrw:aCols[05]:bEditValid := {|| oBrw:SetFocus(), .t. } Function GravaAltQtde(_x) Local nSelect := Select() Local nQtdeAnterior := M_QUANTIDA ******** Grava no Arquivo de Produtos a nova Qtde RecLock() Replace BanMerca->M_QUANTIDA With _X Replace BanMerca->M_DENTRADA With Date() Replace BanMerca->M_QENTRADA With _X UnLockRecord() ******* Grava no Arquivo de Entradas a Qtde e Produto Alterado Sel("BanEntr",1) DbGoBottom() nNumero := P_NUMPEDID + 1 DbGoTop() AppendRec() Replace P_NUMPEDID With nNumero Replace P_CODIGO With BANMERCA->M_CODIGO Replace P_DESCRICA With BANMERCA->M_DESCRICA Replace P_VRPRECO With BANMERCA->M_VENDA Replace P_VRCUSTO With BANMERCA->M_CUSTO Replace P_QTDE_A With nQtdeAnterior Replace P_QUANTIDA With _X Replace P_DATAMOV With Date() Replace P_HENTRADA With Transform(Time(),"99:99") UnLockRecord() DbCloseArea() Select( nSelect ) Return(.t.) Quote Link to comment Share on other sites More sharing options...
kapiaba Posted May 22, 2021 Report Share Posted May 22, 2021 KD o SEEK() e o IF FOUND()? Quote Link to comment Share on other sites More sharing options...
emotta Posted May 22, 2021 Report Share Posted May 22, 2021 5 horas atrás, Theotokos disse: Bom Dia Pessoal!!! Precisando de uma "LUZ NO FIM DO TUNEL" Um Cliente relata que altera a qtde de produto e que na hora aparece na tela que gravou, depois no outro dia vai ver a qtde esta errada , e que não foi feita nenhuma venda ou entrada deste produto, mas testo aqui no meu e tudo funciona não dar este problema... não sei onde procurar este problema mais... a rotina que altera a qtde é esta: *** Aqui Chamo Function p oBrw:aCols[05]:nEditType := EDIT_GET oBrw:aCols[05]:bOnPostEdit := {|o,x| GravaAltQtde(x), oBrw:Refresh(), oDlg:Update(), oDlg:Refresh() } oBrw:aCols[05]:cEditPicture := "@E 999,999.99" oBrw:aCols[05]:lEditBorder := .f. oBrw:aCols[05]:bEditValid := {|| oBrw:SetFocus(), .t. } Function GravaAltQtde(_x) Local nSelect := Select() Local nQtdeAnterior := M_QUANTIDA ******** Grava no Arquivo de Produtos a nova Qtde RecLock() Replace BanMerca->M_QUANTIDA With _X Replace BanMerca->M_DENTRADA With Date() Replace BanMerca->M_QENTRADA With _X UnLockRecord() ******* Grava no Arquivo de Entradas a Qtde e Produto Alterado Sel("BanEntr",1) DbGoBottom() nNumero := P_NUMPEDID + 1 DbGoTop() AppendRec() Replace P_NUMPEDID With nNumero Replace P_CODIGO With BANMERCA->M_CODIGO Replace P_DESCRICA With BANMERCA->M_DESCRICA Replace P_VRPRECO With BANMERCA->M_VENDA Replace P_VRCUSTO With BANMERCA->M_CUSTO Replace P_QTDE_A With nQtdeAnterior Replace P_QUANTIDA With _X Replace P_DATAMOV With Date() Replace P_HENTRADA With Transform(Time(),"99:99") UnLockRecord( DbCloseArea() Select( nSelect ) Return(.t.) Coloque dbcommit() antes do unlockrecord Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Jmsilva Posted May 22, 2021 Report Share Posted May 22, 2021 Dbcommit() ajuda e também colocar um log para monitorar banmerca antes e depois da gravação. Assim vc monitora a gravações e descobre o que está dando errado. Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted May 22, 2021 Author Report Share Posted May 22, 2021 3 horas atrás, emotta disse: Coloque dbcommit() antes do unlockrecord Vlw emotta, vou testar isto para ver se resolve... Obgdão!!! Quote Link to comment Share on other sites More sharing options...
emotta Posted May 23, 2021 Report Share Posted May 23, 2021 19 horas atrás, Theotokos disse: Vlw emotta, vou testar isto para ver se resolve... Obgdão!!! Se a função Unlockrecord for sua coloque o Dbcommit dentro dela Quote Link to comment Share on other sites More sharing options...
Theotokos Posted May 24, 2021 Author Report Share Posted May 24, 2021 18 horas atrás, emotta disse: Se a função Unlockrecord for sua coloque o Dbcommit dentro dela é sim! boa idéia, vou fazer assim, que ai em todos ja ficam.... vlw obgdo Quote Link to comment Share on other sites More sharing options...
macs Posted May 24, 2021 Report Share Posted May 24, 2021 Já tive problema parecido. DbCommit() DbUnLock() DbSkip(0) --> Acontecia as vezes do registro não ser atualizado... Isso serve como um refresh na tabela. Resolveu! Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Valdir Posted May 25, 2021 Report Share Posted May 25, 2021 Se estiver numa rede e dentro de um While, sugiro inserir um Sysrefresh() no começo do while. Isso irá descarregar os conteúdos da memória na rede. Abraços. Quote Link to comment Share on other sites More sharing options...
macs Posted May 25, 2021 Report Share Posted May 25, 2021 Em 23/05/2021 at 13:57, emotta disse: Se a função Unlockrecord for sua coloque o Dbcommit dentro dela Se estiver dentro de um laço, não é recomendável. Sua rotina poderá ficar super lenta. Se possível, commit sempre no final dos processos. Quote Link to comment Share on other sites More sharing options...
Theotokos Posted May 27, 2021 Author Report Share Posted May 27, 2021 Vlw Pessoal!!! Muito Obrigado a Todos!!! Mudei conforme indicado pelos feras, até o momento o cliente não relatou problema... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.