Jump to content
Fivewin Brasil

Problamas no valid da dialog


Marca

Recommended Posts

Bom dia a todos

Pessoal. Estou tendo um problema com uma tela onde a função de saida de tela SairTelaVenda() esta sendo executada por mais de uma vez
E só existe uma chamada desta tela que é lo valid da dialog. Uma vez confirmada a saida ela em algum momento é chamada novamente

Observem a linha  
3 08:20:14-BALCAO22-MONICA-393610-Confirmou a saida da tela de vendas com o texto Deseja realmente sair da venda ?
 e a linha 
14 08:20:23-BALCAO22-MONICA-393610-Confirmou a saida da tela de vendas com o texto Deseja realmente sair da venda ?
De alguma maneira se repetem
Esta linha 14 não poderia existir devido a todo o processo ter sido finalizado na linha 13 mais de alguma maneira isso acontece

Algúem já passou por algo semalhante ?


 1 08:20:13-BALCAO22-MONICA-393610-Voltou o foco
 2 08:20:13-BALCAO22-MONICA-393610-Retornando de TeclaVenda TEVD02901834080338 
 3 08:20:14-BALCAO22-MONICA-393610-Confirmou a saida da tela de vendas com o texto Deseja realmente sair da venda ?
 4 08:20:14-BALCAO22-MONICA-393610-Retornou de SairTelaVenda como VERDADEIRO
 5 08:20:14-BALCAO22-MONICA-393610-FINALIZANDO TELA DE VENDAS em temporário TEVD02901834080338
 6 08:20:14-BALCAO22-MONICA-393610-Fechamento padrão do temporario : TEVD02901834080338
 7 08:20:14-BALCAO22-MONICA-393610-Executando exclusão do temporário : TEVD02901834080338 : C:\sven\TE\TEVD02901834080338.DBF
 8 08:20:14-BALCAO22-MONICA-393610-Executando exclusão do temporário : TEVD02901834080338 : C:\sven\TE\TEVD02901834080338.fpt
 9 08:20:14-BALCAO22-MONICA-393610-NAO FOI ENCONTRADO NENHUM ARQUIVO : K:\sven\TEVD02901834080338.prn PARA EXCLUSÃO
10 08:20:14-BALCAO22-MONICA-393610-Finalizando venda em temporário TEVD02901834080338
11 08:20:14-BALCAO22-MONICA-393610-Nome atual do temporário de venda TEVD02901834080338
12 08:20:14-BALCAO22-MONICA-393610-Novo nome do temporário de venda FIMVD
13 08:20:14-BALCAO22-MONICA-393610-Trocou o nome e saiu FIMVD
14 08:20:23-BALCAO22-MONICA-393610-Confirmou a saida da tela de vendas com o texto Deseja realmente sair da venda ?
15 08:20:23-BALCAO22-MONICA-393610-Retornou de SairTelaVenda como VERDADEIRO

ACTIVATE DIALOG oDlgVd CENTERED ON INIT ( Ini_Dialogs(oDlgVd,,cFonteTela)         ,;
                                                                                 BarraTelVd(oDlgVd,oBrVd,oGrupo[7]),;
                                                                                 SetsVendas( cFonteTela ) )                  ;
                                                                      VALID SairTelaVenda( oDlgVd )


*************************************//***************************************
STATIC FUNCTION SairTelaVenda( oDialogVd )
**************************************//***************************************
LOCAL lFinalizarTelaVd := .F.

IF lBrowseVdEmProcesso

   GravaLogDia("Tentou sair sendo que o lBrowseVdEmProcesso estava como VERDADEIRO", "SVE")

ELSE

   IF MSG( "Deseja realmente sair da venda" ,"ATENÇÃO","YESNO")

      IF p_Arg1 = "O" .AND. p_nPedido > 0
         cQueryDav := "UPDATE orcamto SET coo_dav = " + ANY2SQL( 0 ) + " WHERE pedido = " + ANY2SQL(p_nPedido)
         p_nPedido := 0
         MyMsgRun("Aguarde... Liberando a utilização do Dav ","AGUARDE...", {|| GravaBase(cQueryDav,"Orcamto")  })
      ENDIF
      GravaLogDia("Confirmou a saida da tela de vendas com o texto " + "Deseja realmente sair da venda", "SVE")
      lFinalizarTelaVd := .T.
      
   ENDIF

ENDIF

GravaLogDia("Retornou de SairTelaVenda como " + IF(lFinalizarTelaVd,"VERDADEIRO","FALSO") , "SVE")

IF lFinalizarTelaVd
   
   MyMsgRun("Finalizando operação    ........","AGUARDE", {|| TerminaProcessoVenda( oDialogVd ) }, "Engrena.gif" )

ENDIF

RETURN lFinalizarTelaVd


************************************************************************
STATIC FUNCTION TerminaProcessoVenda( oDialogVd )
************************************************************************

GravaLogDia( "FINALIZANDO TELA DE VENDAS em temporário " + cArqVendas , "SVE" )

IF File(oPub:wPathTemp + cArqParc + ".DBF") // Caso seja um orcamento com cond. de pgto
   MyMsgRun("Finalizando arquivo de parcelas ........","AGUARDE", {||  Fecha_Temp(cArqVendas,.T.)  }, "Engrena.gif" )
   GravaLogDia( "Finalizando Temporario das parcelas no final da venda em vd_00  " + cArqVendas , "SVE" )
ENDIF

IF !oPub:lControleErr
   GravaLogDia( "Nome atual do temporário de venda " + cArqVendas , "SVE" )
   cArqVendas := "FIMVD"

   GravaLogDia( "Novo nome do temporário de venda " + cArqVendas , "SVE")

ENDIF

WaitSeconds( 0.5 )
*HB_GCAll(.T.)
GravaLogDia( "Trocou o nome e saiu "  + cArqTemp , "SVE")

RETURN .T.

Link to comment
Share on other sites

O título está erado: Problamas no valid da dialog o problema é na lógica. E porquê você grava no ON INIT e não na SAÍDA da FUNÇAO(), trenzinho feio da pohha que tú fez, hein? melhore isso.

Grave ao entrar antes do DEFINE DIALOG e na saida do ACTIVATE DIALOG para ver o que o corre.

Regards, saludos.

Link to comment
Share on other sites

Pra variar vc não leu o fonte né !!!! coisas de curintiano

O On Init nada mais faz do que as configurações de fontes , menus e outras coisas relativas a tela 
ON INIT ( Ini_Dialogs(oDlgVd,,cFonteTela)         ,;

                 BarraTelVd(oDlgVd,oBrVd,oGrupo[7]),;
                  SetsVendas( cFonteTela ) )   
Já  o VALID SairTelaVenda( oDlgVd ) Faz o fechamento da mesma


Grave ao entrar antes do DEFINE DIALOG 
Isso já e feito. Ete log q. tem ai é somente a parte q. interessa ser vista nada anterior a isso irá fazer diferenteça no problema que esta acontecendo

E a saida do ACTIVATE DIALOG
É exatamente o que esta sendo mostrado ali no log 

Link to comment
Share on other sites

43 minutos atrás, Marca disse:

Puts.  O fonte onde acontece isso é gigante João. 
Mais uma vez q. saiu do valid da dialog concorda q. não poderia mais executar a rotina por já ter saido dela ?

 

Você não consegue simular como um DEMO pequeno? 

Link to comment
Share on other sites

Sugestão: Vc pode chamar a rotina abaixo na sua func_valid  e exibir num browse ou gravar em log(melhor), com isto vc poderia verificar de onde vem a segunda chamada.

// The example implements a user defined function that collects call stack
// information in an array.

   FUNCTION GetCallStack()
      LOCAL aStack := {}
      LOCAL nStack := 1  // Skip the GetCallStack() function in the result

      DO WHILE .NOT. Empty( ProcName(nStack) )
         AAdd( aStack, { ProcFile(nStack), ProcName(nStack), ProcLine(nStack) })
         nStack ++
      ENDDO

   RETURN aStack

este exemplo é proprio help do xHB

 

 

 

Link to comment
Share on other sites

19 horas atrás, Jmsilva disse:

Sugestão: Vc pode chamar a rotina abaixo na sua func_valid  e exibir num browse ou gravar em log(melhor), com isto vc poderia verificar de onde vem a segunda chamada.

// The example implements a user defined function that collects call stack
// information in an array.

   FUNCTION GetCallStack()
      LOCAL aStack := {}
      LOCAL nStack := 1  // Skip the GetCallStack() function in the result

      DO WHILE .NOT. Empty( ProcName(nStack) )
         AAdd( aStack, { ProcFile(nStack), ProcName(nStack), ProcLine(nStack) })
         nStack ++
      ENDDO

   RETURN aStack

este exemplo é proprio help do xHB

 

 

 

Opa

Bom dia JmSilva 

Eu já uso esta função em outros casos irei aplicar ela na rotina de saida da tela pra ver se me mostra de onde vem

O mais estranho ainda é que isso acontece de chamar a rotina de saida estando dentro de um DO WHILE é mole não poderia sair em hipotese alguma sem os condicionais  e se saisse o log pegaria o que mostra q. isso esta sendo executado em segundo plano.
DO WHILE nInc < nFinal .AND. lContinue
ENDDO
E caso tivesse saido seira pego 
nInc := 1
GravaLogDia("Saiu do WHILE GERAL geral :" + oLbx:cAlias + " COM lBrowseVdEmProcesso : " + RetornaValorVar( lBrowseVdEmProcesso ) , "SVE")
SetaArea(cArqTemp)
 

Link to comment
Share on other sites

Qual tipo de botão vc usa pra acionar a saida da Dialog, pois tive um problema parecido, que sempre duplicava o comando em algumas partes do prog., qdo eu usava BUTTONBMP, foi dificil descobrir que era isso que me causava o erro, mudei para BTNBMP e no pra mim resolveu.

Link to comment
Share on other sites

1 hora atrás, devairlp disse:

Qual tipo de botão vc usa pra acionar a saida da Dialog, pois tive um problema parecido, que sempre duplicava o comando em algumas partes do prog., qdo eu usava BUTTONBMP, foi dificil descobrir que era isso que me causava o erro, mudei para BTNBMP e no pra mim resolveu.

Por acaso é exatamente o BUTTONBMP

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...