Clipper On Line • Ver Tópico - Lentidao ao imprimir na ecf (delphi)

Lentidao ao imprimir na ecf (delphi)

Discussão sobre outras linguagens de programação.

Moderador: Moderadores

 

Lentidao ao imprimir na ecf (delphi)

Mensagempor negrao » 01 Mar 2010 09:03

Mocada , alguem tem alguma dica de como posso agilizar a venda com cupom de forma a ficar + rapido.
Hj faco da seguinte maneira:

append
insiro dados na tabela (que ira mostrar no dbgrid)
post

mando pra ecf

So que no mercado to achando lento,dependendo do caixa, perco itens na impressao, pq é passado muito rapido.
Eu acho que isso se da apenas no abrir cupom, que o povo fica passando venda, pq apos aberto o cupom vai normal.

Obrigado por qqer dica.
negrao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 166
Data de registro: 06 Jul 2004 08:38
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Lentidao ao imprimir na ecf (delphi)

Mensagempor rochinha » 01 Mar 2010 11:16

Amiguinho,

Quando desenvolvi meu primeiro programa para supermercado, lembro de usar Clipper, FGLib e comunicação via Bemafi.exe também tive este problema.

Geralmente estava na lentidão entre passar o item e imprimir no cupom, concomitancia, se não me engano fiz alguma alteração, na época o termo TypeAhead tinha alguma coisa a ver.

Acho até que voce poderá melhorar a recepção dos dados pela impressora através de algum comando dela que permita recebe-los com maior velocidade.

Talvez o ideal fosse:

- ao passar os itens, jogá-los num arquivo temporário e no final descarregar na impressora e juntá-los ao database.
- ou, usar um arquivo temporário, sempre esvaziado, para cada novo cupom.
- desligar rotinas de movimentação do estoque durante a passagem do item.
- ou, usar matrizes para o armazenamento e depois descarregue tudo movimentando o estoque.
- ou deixar aberto um novo cupom sempre após finalizar o ultimo, ultimo recurso(Eleven Hour).

A lentidão pode ser causada pelo simples fato de voce estar usando o arquivo de itens diretamente e a filtragem inicial esteja causando a demora de abertura.

Lembro me também que na época passei a usar a SUBNTX para filtrar e deixei de usar o arquivo temporário externo, mas no seu caso voce deve reduzir as verificaçõesde abertura e impressão deixando-os mais clean(limpo) possivel..
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Re: Lentidao ao imprimir na ecf (delphi)

Mensagempor negrao » 01 Mar 2010 12:23

Obrigado pelas dica Rochinha, vou comecar a desabilitar o esquema de baixa Estoque apos passar o item.

valeu
negrao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 166
Data de registro: 06 Jul 2004 08:38
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Lentidao ao imprimir na ecf (delphi)

Mensagempor negrao » 01 Mar 2010 13:46

Mas o que vc acha + rapido , usar tabela temporatia(clientdataset) ou matriz ?

Hj uso tabela tmp.
negrao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 166
Data de registro: 06 Jul 2004 08:38
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Lentidao ao imprimir na ecf (delphi)

Mensagempor negrao » 01 Mar 2010 13:51

Caso use Matriz, como se declara uma matriz para armazena
posicao,qtde,codproduto ?
negrao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 166
Data de registro: 06 Jul 2004 08:38
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Re: Lentidao ao imprimir na ecf (delphi)

Mensagempor rochinha » 01 Mar 2010 21:57

Amiguinho,

Faça assim:
...
FUNCAO PDV()
   LOCAL aCupomItens
   ...
   do while .not. eof()
        // Verifica o leitor de codigo de barras
        ...
        // Seleciona estoque e pega dados do item
        ...
        // Adiciona itens na matriz
        AADD( aCupomItens, { nCodigo, cDescricao, nQuantidade, nValor, nSubTotal }
        ...
        // Imprime item no cupom
   enddo
   // Repassa os itens no estoque
   for i = 1 to len( aCupomItens )
             // Adiciona no arquivo de itens principal
             dbSelectArea( itens )
             dbAppend()
             replace itens->CODIGO with aCupomItens[ i ][ 1 ] // nCodigo
             replace itens->DESCRICAO with aCupomItens[ i ][ 2 ] // cDescricao
             replace itens->QUANTIDADE with aCupomItens[ i ][ 3 ] // nQuantidade
             replace itens->VALOR with aCupomItens[ i ][ 4 ] // nValor
             replace itens->SUBTOTAL with aCupomItens[ i ][ 5 ] // nSubTotal
             // Repassa o estoque
             dbSelectArea( estoque )
             dbSeek( aCupomItens[ i ][ 1 ] )
             if found()
                dbRLock()
                replace estoque->QUANTIDADE with estoque->QUANTIDADE - aCupomItens[ i ][ 3 ]
             endif
   next
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Re: Lentidao ao imprimir na ecf (delphi)

Mensagempor negrao » 01 Mar 2010 22:15

obrigado pela atencao rochina, mas é em Delphi.

valeu
negrao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 166
Data de registro: 06 Jul 2004 08:38
Curtiu: 0 vez
Mens.Curtidas: 0 vez




Retornar para Outras linguagens de programação

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 8 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro