como carregar o programa de onde parou?

Delphi

09/05/2013

amigos, vejam se podem me ajudar, estou criando um programa que está funcionando ok,
ele é emisso de cupom fiscal, realizo venda atraves do dbgrid com dados salvo no banco em firebird,

ex: estou no meio da venda com 3 items vendidos no cupom, e derrepente deu pico de luz, quando volta a luz e liga o pc, quando entro no sistema, o meu programa entra na tela como caixa livre, e eu nao consigo abrir uma nova venda, pois ja existe uma venda aberta na impressora, entao tenho que cancelar o que esta la e fazer uma nova venda, suponhamos que tinha 50 items registrados, daria maior trabalho, eu queria que toda vez que o sistema fosse fechado ele carregasse as vendas que estao abertas, como posso fazer isso?

desde ja agradeço....
Tiago Silva

Tiago Silva

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

09/05/2013

Depende de como está organizado seu banco. Mas por exemplo, você poderia ter um campo "STATUS" na venda e, ao abrir o form, verificar se tem alguma venda "aberta". Caso exista alguma venda aberta, você carregaria os dados dela e continuaria.
Só não sei se com a impressora vai funcionar, ou se é realmente necessário cancelar o cupom.
GOSTEI 0
Tiago Silva

Tiago Silva

09/05/2013

eu tenho um status chamado "venda_aberta"...
e eu tenho uma tabela no banco chamada temp e meus produtos da venda ficam la até eu abrir uma nova venda..
o caminho é esse frmmodulo.qrpdv....
entao ficaria assim?

if venda_aberta :=true then
...... e aqui na execução eu colocaria o que para ele trazer pra tela os dados do banco?


GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/05/2013

Exato, só lembrando de dois detalhes:
1) Você só vai usar "venda_aberta" se tiver declarado essa variável. Se não, deverá usar diretamente o campo da query que usou pra consultar a venda. Por exemplo:
if queryVenda.FieldByName('venda_aberta').AsBoolean = true
...faça alguma coisa


2) Para comparação, deve usar o operador "=" e não ":=" (que é de atribuição.

Fora isso, a ideia você pegou.

Boa sorte.
GOSTEI 0
Tiago Silva

Tiago Silva

09/05/2013

é isso mesmo, foi falta de atenção referente a atribuição, só fui ver depois que postei, mas como sou novo aqui, nem sei se posso excluir o post, ja entendi, provavelmente vou conseguir, vou testar aqui e respondo assim que terminar, muito obrigado
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/05/2013

Show de bola.
Dê notícias.
Abraço.
GOSTEI 0
Tiago Silva

Tiago Silva

09/05/2013

como eu faço para o dbgrid receber os dados que estao no banco de dados?

exemplo.
ta assim

if not venda_aberta then

frmmodulo.qritem.close;
frmmodulo.qritem.SQL.Clear;
frmmodulo.qritem.sql.add('select * from SC00001');
frmmodulo.qritem.Open;

e agora como faço para o meu dbgrid receber os campos da minha tabela

campos no banco e no dbgrid ('item,codproduto,qtd,unitario,total,produto,unidade')

obrigado
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/05/2013

Não bastaria ligar o DBGrid a um DataSource e este à query que você está usando?
GOSTEI 0
Tiago Silva

Tiago Silva

09/05/2013

o dbgrid ja está ligado a um datasource
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/05/2013

Bom, então precisa verificar se a query está trazendo dados e se o DataSource está ligado à query correta.
GOSTEI 0
Tiago Silva

Tiago Silva

09/05/2013

ele está ligado correto, só queria saber o seguinte.. somente com esse comando do select na tabela correta, era pro meu dbgrid ja trazer os daos que estao la? ou preciso dizer os campos que ele vai receber que estao la corretamente? e se for isso, como eu faria?

GOSTEI 0
Joel Rodrigues

Joel Rodrigues

09/05/2013

Sim, o procedimento é apenas esse. Ligar o DataSource na Query, ligar o DBGrid no DataSource e abrir a Query. O DBGrid já deveria listar os dados automaticamente.
Faça o teste em tempo de design, abra a query para ver se os dados são listados no DBGrid.
GOSTEI 0
POSTAR