Jump to content
Fivewin Brasil

Aplicação "não respondendo"


ram_bh

Recommended Posts

Amiguinhos,

 

EDUTEK

Desde que fiz meu primeiro teste de Set Relation em 1990, decidi nunca mais usá-lo. É muito lento, e você esta processando ´varios ao mesmo tempo,não vale o esforço.

 

Monte seu xBrowse sobre a tabela principal e use uma funcção de pesquisa das outras informações que compõem as colunas usando seek nos indices periféricos.

Exemplo:

...
	pesq(str(pn->IDFUNC,5,0),"vendedor",2,"nome")
	...

Link to comment
Share on other sites

Amiguinhos,

EDUTEK

Desde que fiz meu primeiro teste de Set Relation em 1990, decidi nunca mais usá-lo. É muito lento, e você esta processando ´varios ao mesmo tempo,não vale o esforço.

Monte seu xBrowse sobre a tabela principal e use uma funcção de pesquisa das outras informações que compõem as colunas usando seek nos indices periféricos.

Exemplo:

...
pesq(str(pn->IDFUNC,5,0),"vendedor",2,"nome")
...

Na função acima passo a string de pesquisa baseada na formatação do indice, o nome da tabela, a posição do indice e o nome do campo que quero recuperar o conteúdo.

Exemplo:

Function HTMLPedido( _num_, _oque_, l2Vias )
   // Parametros:
   // _num_  - numero de pedido
   // _oque_ - tipo do impresso
   // l2Vias - quantidades de vias
   
   // Pego informações para compor o cabeçalho
   Cl_Nome     := VerifyINI( "CLIENTE" , "NOME"     , "NOME DA EMPRESA"       , cPath+"nfw.ini" )
   Cl_Endereco := VerifyINI( "CLIENTE" , "ENDERECO" , "ENDERECO DA EMPRESA"   , cPath+"nfw.ini" )                 
   Cl_Bairro   := VerifyINI( "CLIENTE" , "BAIRRO"   , "BAIRRO DA EMPRESA"     , cPath+"nfw.ini" )
   Cl_Cidade   := VerifyINI( "CLIENTE" , "CIDADE"   , "SP                  "  , cPath+"nfw.ini" )
   Cl_Telefone := VerifyINI( "CLIENTE" , "TELEFONE" , "(0xx11)0000-0000"      , cPath+"nfw.ini" )
   Cl_Cep      := VerifyINI( "CLIENTE" , "CEP"      , "00000-000"             , cPath+"nfw.ini" )
   Cl_Estado   := VerifyINI( "CLIENTE" , "ESTADO"   , "SP"                    , cPath+"nfw.ini" )
   Cl_Fax      := VerifyINI( "CLIENTE" , "FAX"      , "(0xx11)0000-0000"      , cPath+"nfw.ini" )
   Cl_Cnpj     := VerifyINI( "CLIENTE" , "CGC"      , "00.000.000/0000-00"    , cPath+"nfw.ini" )
   Cl_Inscricao:= VerifyINI( "CLIENTE" , "IE"       , "00.000.000-00"         , cPath+"nfw.ini" )
   Cl_Email    := VerifyINI( "CLIENTE" , "EMAIL"    , "email@provedor.com.br" , cPath+"nfw.ini" )

   l2Vias := .f. // Default é via unica
   if MsgYesNo( "Deseja impressao em duas vias?" )
      l2Vias := .t.
   endif
   
   // Seleção do arquivo principal
   dbSelectArea( "PN" )
   OrdSetFocus( 2 )
   
   // Busca do primeiro parametro
   dbSeek(STR(_num_,6,0))
   if .not. found()
      MsgStop( "Nada encontrado com o numero(" + STR(_num_,6,0) + ")" )
      return .t.
   endif

   // Carrego variaveis iniciais   
   M->IDCLIENTE      := PN->IDCLIENTE
   M->IDFUNC         := PN->IDFUNC   
   M->OBS2           := PN->OBS2
   M->PRN_DATAPED    := PN->DATAPED
   M->PRN_IDCONDICAO := PN->IDCONDICAO
   M->PRN_AVALIACAO  := PN->AVALIACAO
   M->PRN_FRETE      := PN->FRETE       // Valor de desconto
   M->PRN_IDFUNC     := PN->IDFUNC      // Codigo do funcionario
   M->PRN_IDTRANSP   := PN->IDTRANSP    // codigo da transportadora em PN
   M->PRN_IDCLIENTE  := PN->IDCLIENTE   // Codigo do cliente

   // Carrego outras veriaveis através de pesquisa em outras tabelas
   M->PRN_CONDICAO   := PESQ( M->PRN_IDCONDICAO, "CONDICAO", 1, "CONDICAO" )
   //
   M->PRN_NOME       := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "NOME" )
   M->PRN_ENDERECO   := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "ENDERECO" )
   M->PRN_BAIRRO     := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "BAIRRO" )
   M->PRN_CIDADE     := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "CIDADE" )
   M->PRN_CEP        := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "CEP" )
   M->PRN_ESTADO     := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "ESTADO" )
   M->PRN_INSCR      := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "INSCR" )
   M->PRN_CGC        := PESQ( STR(M->PRN_IDCLIENTE,5,0), "CLIENTES", 2, "CGC" )

   // Segundo parametro define o tipo do impresso
   //                   define o arquivo template usado para o cabeçalho
   cHTMLFile := STR( Random(), 8 ) + ".HTM"
   do case
      case _oque_ = "V" // Pedido
           cTPLFile  := "PEDIDOC.TPL"
           cHTMLName := "PEDIDO DE VENDA"
           cHTMLFile := "PE"+STRZERO(M->IDPEDIDO,6)+".HTM"
      case _oque_ = "O" // Orcamento
           cTPLFile  := "PEDIDOC.TPL"
           cHTMLName := "ORCAMENTO"
           cHTMLFile := "OC"+STRZERO(M->IDPEDIDO,6)+".HTM"
      case _oque_ = "N" // Pre-Nota
           cTPLFile  := "PEDIDOC.TPL"
           cHTMLName := "PRE-NOTA"
           cHTMLFile := "NF"+STRZERO(M->IDPEDIDO,6)+".HTM"
   endcase

   // Verifico a existencia do template CABECALHO para fazer uso
   if !file( cTPLFile )
      MsgStop( "Template de cabecalho "+cTPLFile+" nao encontrado." )
      dbSelectArea( "PN" )
      OrdSetFocus( 1 )
      return .t.
   endif
   // Faco o carregamento do template de CABECALHO
   cHTMLFile1 := MemoRead( cTPLFile )

   // Preenchimento de algumas variaveis a serem usadas
   Cl_Nome     := VerifyINI( "CLIENTE" , "NOME"     , "NOME DA EMPRESA"       , cPath+"nfw.ini" )
   Cl_Endereco := VerifyINI( "CLIENTE" , "ENDERECO" , "ENDERECO DA EMPRESA"   , cPath+"nfw.ini" )                 
   Cl_Bairro   := VerifyINI( "CLIENTE" , "BAIRRO"   , "BAIRRO DA EMPRESA"     , cPath+"nfw.ini" )
   Cl_Cidade   := VerifyINI( "CLIENTE" , "CIDADE"   , "SP                  "  , cPath+"nfw.ini" )
   Cl_Telefone := VerifyINI( "CLIENTE" , "TELEFONE" , "(0xx11)0000-0000"      , cPath+"nfw.ini" )
   Cl_Cep      := VerifyINI( "CLIENTE" , "CEP"      , "00000-000"             , cPath+"nfw.ini" )
   Cl_Estado   := VerifyINI( "CLIENTE" , "ESTADO"   , "SP"                    , cPath+"nfw.ini" )
   Cl_Fax      := VerifyINI( "CLIENTE" , "FAX"      , "(0xx11)0000-0000"      , cPath+"nfw.ini" )
   Cl_Cnpj     := VerifyINI( "CLIENTE" , "CGC"      , "00.000.000/0000-00"    , cPath+"nfw.ini" )
   Cl_Inscricao:= VerifyINI( "CLIENTE" , "IE"       , "00.000.000-00"         , cPath+"nfw.ini" )
   Cl_Email    := VerifyINI( "CLIENTE" , "EMAIL"    , "email@provedor.com.br" , cPath+"nfw.ini" )

   // Neste momento faço o inxerto de variaveis via MERGE, com conteudos ja capturados
   // Cada uma das linhas abaixo fara a troca das variaveis com conteudos
   cHTMLFile1 := StrTran( cHTMLFile1, "{#impresso#}"        , cHTMLName )

   cHTMLFile1 := StrTran( cHTMLFile1, "{#empresa#}"         , Cl_Nome )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#endereco#}"        , Cl_Endereco )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#bairro#}"          , Cl_Bairro )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#cidade#}"          , Cl_Cidade )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#pais#}"            , "Brasil" )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#telefone#}"        , Cl_Telefone )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#fax#}"             , Cl_Fax )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#website#}"         , "www.website.com" )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#email#}"           , Cl_Email )

   cHTMLFile1 := StrTran( cHTMLFile1, "{#idpedido#}"        , str( M->IDPEDIDO, 6 ) )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#situacao#}"        , M->PRN_AVALIACAO )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#dataped#}"         , dtoc( M->PRN_DATAPED ) )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#idcondicao#}"      , M->PRN_IDCONDICAO )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#identrega#}"       , M->PRN_TR_NOME )

   cHTMLFile1 := StrTran( cHTMLFile1, "{#barcode#}"         , "BARCODE" )

   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteNome#}"     , OemToAnsi( FDecripta( M->PRN_NOME ) ) )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteEmail#}"    , M->PRN_EMAIL )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteTelefone#}" , M->PRN_TELEFONE )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteFax#}"      , M->PRN_FAX )

   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteEndereco#}" , M->PRN_ENDERECO )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteBairro#}"   , M->PRN_BAIRRO )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteCidade#}"   , M->PRN_CIDADE )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteEstado#}"   , M->PRN_ESTADO )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteCep#}"      , M->PRN_CEP )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteINSCR#}"    , M->PRN_INSCR )
   cHTMLFile1 := StrTran( cHTMLFile1, "{#ClienteCGC#}"      , M->PRN_CGC )

   // Momento de impressao dos dados do corpo usando mais um template
   // Promovo a selecao do arquivo, indice e filtragem dos itens
   dbSelectArea( "ES" )
   OrdSetFocus( 3 )
   dbSeek(str(_num_,6,0))
   OrdScope(0,STR(_num_,6,0))
   OrdScope(1,STR(_num_,6,0))
   dbGoTop()

   // Zeramento de variaveis de somatoria usada no rodapé
   M->SUBTOTAL := 0
   M->DESCONTO := 0

   // Verifico a existencia do template CORPO para fazer uso
   cTPLFile    := "PEDIDOI.TPL"
   if !file( cTPLFile )
      MsgStop( "Template de itens "+cTPLFile+" nao encontrado." )
      dbSelectArea( "PN" )
      OrdSetFocus( 1 )
      return .t.
   endif
   // Faco o carregamento do template de geracao do CORPO do impresso
   cHTMLFile2  := MemoRead( cTPLFile )
   
   // A variavel cHTMLFile22 irá comportar todos os registros do corpo
   // ou seja irá usar o template de corpo varias vezes conforme o numero
   // de registros
   cHTMLFile22 := ""
   DO WHILE .NOT. EOF()
      cHTMLFile21 := ""                    
      cHTMLFile21 := StrTran( cHTMLFile2 , "{#Resumido#}"  , SUBSTR(ES->RESUMIDO,1,10) )
      cHTMLFile21 := StrTran( cHTMLFile21, "{#Descricao#}" , ALLTRIM(SUBSTR(ES->DESCRICAO,1,45)) )
      cHTMLFile21 := StrTran( cHTMLFile21, "{#Medida#}"    , ES->MEDIDA )
      cHTMLFile21 := StrTran( cHTMLFile21, "{#Quantidade#}", TRANSF(ES->QUANTIDADE,ES->MASCARA) )
      cHTMLFile21 := StrTran( cHTMLFile21, "{#Unitario#}"  , TRANSF(ES->VALORVENDA,"@E 99,999.99") )
      cHTMLFile21 := StrTran( cHTMLFile21, "{#Desconto#}"  , TRANSF(ES->DESCONTO,"@E 99,999.99") )
      cHTMLFile21 := StrTran( cHTMLFile21, "{#SubTotal#}"  , TRANSF(ES->SUBTOTAL,"@E 99,999.99") )
      cHTMLFile22 := cHTMLFile22 + cHTMLFile21
      
      // Subtotalizacao dos registros
      M->SUBTOTAL := M->SUBTOTAL + ES->SUBTOTAL
      M->DESCONTO := M->DESCONTO + ES->DESCONTO
      SKIP
   ENDDO

   // Verifico a existencia do template RODAPE para fazer uso
   cTPLFile   := "PEDIDOR.TPL"
   if !file( cTPLFile )
      MsgStop( "Template de rodape "+cTPLFile+" nao encontrado." )
      dbSelectArea( "PN" )
      OrdSetFocus( 1 )
      return .t.
   endif
   // Faco o carregamento do template de geracao do RODAPE do impresso
   cHTMLFile3  := MemoRead( cTPLFile )
   
   // Neste momento faço o inxerto de variaveis via MERGE, com conteudos ja capturados
   // Cada uma das linhas abaixo fara a troca das variaveis com conteudos
   cHTMLFile31 := StrTran( cHTMLFile3 , "{#Observacao1#}", substr(M->OBS2,01,54) )
   cHTMLFile31 := StrTran( cHTMLFile31, "{#Observacao2#}", substr(M->OBS2,55,54) )
   cHTMLFile31 := StrTran( cHTMLFile31, "{#tt_SubTotal#}", TRANSF(M->SUBTOTAL,"@E 99,999.99") )
   cHTMLFile31 := StrTran( cHTMLFile31, "{#tt_Desconto#}", TRANSF(M->DESCONTO,"@E 99,999.99") )
   cHTMLFile31 := StrTran( cHTMLFile31, "{#tt_Total#}"   , TRANSF((M->SUBTOTAL-M->DESCONTO),"@E 99,999.99") )

   // Caso use 2 vias, promovo a separacao dos dois impressos
   if l2Vias
      cTracejado := [<table cellpadding="0" cellspacing="0" width="705" border="0">]
      cTracejado := cTracejado + [<tr><td width="700" style="border: #444444; border-style: solid; border-width: 0px" align="center">]
      cTracejado := cTracejado + [<p></p><p></p><p></p><p></p><p></p><p></p><p></p>]
      cTracejado := cTracejado + [-<hr size="1" noshade="noshade"></hr>]
      cTracejado := cTracejado + [<p></p>-]
      cTracejado := cTracejado + [<p></p><p></p><p></p><p></p><p></p><p></p></td></tr></table>]
      MemoWrit( cHTMLFile, cHTMLFile1 + cHTMLFile22 + cHTMLFile31 + cTracejado + cHTMLFile1 + cHTMLFile22 + cHTMLFile31 )
   else
      MemoWrit( cHTMLFile, cHTMLFile1 + cHTMLFile22 + cHTMLFile31 )
   endif
   
   // Nome do HTML que contem o impresso
   cEndereco := cHTMLFile
   
   // Chamada de função do Windows para apresentacao do impresso
   // Pode se usar RUN( "START " + cEndereco )
   ShellExecute(7, "open", cEndereco, , , 1)

   SysRefresh()
   //
   dbSelectArea( "PN" )
   OrdSetFocus( 1 )
   return .t.

Veja uma explicação completa e o código da função em http://pctoledo.com.br/forum/viewtopic.php?f=1&t=3630&p=14111&hilit=function+pesq#p14111

http://pctoledo.com.br/forum/viewtopic.php?f=1&t=3630&p=14111&hilit=function+pesq#p14111
 

Link to comment
Share on other sites

 

Bom Dia

 

Ainda estou tendo problemas com a Mensagem "nao respondendo", na questao da movimentação, inclusão e alterações não tive mais problemas se o usuario esta usando o sistema ele não trava.

 

estou com o problema assim, quando o usuário abre o sistema e deixa ele num "browse" qualquer, ai nao usa e vai em outra aplicação ou na web, quando ele volta para usar o sistema ele fica congelado com a mensagem "não respondendo." ai o usuário tem que fechar o programa via gerenciador de tarefas, e  abrir novamente.

isso ocorre várias vezes ao dia

uso tabela DBFCDX ta na rede FWH18.05 bcc 7.3

a maioria com win 10 as que tem win 7 não tenho muito problema

 

 

Bom Dia

 

Ainda estou tendo problemas com a Mensagem "nao respondendo", na questao da movimentação, inclusão e alterações não tive mais problemas se o usuario esta usando o sistema ele não trava.

 

estou com o problema assim, quando o usuário abre o sistema e deixa ele num "browse" qualquer, ai nao usa e vai em outra aplicação ou na web, quando ele volta para usar o sistema ele fica congelado com a mensagem "não respondendo." ai o usuário tem que fechar o programa via gerenciador de tarefas, e  abrir novamente.

isso ocorre várias vezes ao dia

uso tabela DBFCDX ta na rede FWH18.05 bcc 7.3

a maioria com win 10 as que tem win 7 não tenho muito problema

Acredito que implementando um timer com refresh, resolverá esta dormência do browser. Blz

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...