Lentidao ao imprimir na ecf (delphi)

Fórum sobre outras linguagens de programação.

Moderador: Moderadores

negrao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 06 Jul 2004 08:38

Lentidao ao imprimir na ecf (delphi)

Mensagem por negrao »

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.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Lentidao ao imprimir na ecf (delphi)

Mensagem por rochinha »

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 [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
negrao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 06 Jul 2004 08:38

Re: Lentidao ao imprimir na ecf (delphi)

Mensagem por negrao »

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: 186
Registrado em: 06 Jul 2004 08:38

Re: Lentidao ao imprimir na ecf (delphi)

Mensagem por negrao »

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: 186
Registrado em: 06 Jul 2004 08:38

Re: Lentidao ao imprimir na ecf (delphi)

Mensagem por negrao »

Caso use Matriz, como se declara uma matriz para armazena
posicao,qtde,codproduto ?
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Lentidao ao imprimir na ecf (delphi)

Mensagem por rochinha »

Amiguinho,

Faça assim:

Código: Selecionar todos

...
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 [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
negrao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 06 Jul 2004 08:38

Re: Lentidao ao imprimir na ecf (delphi)

Mensagem por negrao »

obrigado pela atencao rochina, mas é em Delphi.

valeu
Responder