Fórum Dois caixas usando o programa ao Mesmo tempogt;gt;gt;O qu #227492

22/04/2004

0

Tenho um programa em faze de teste em um mercado, e quando dois ou mais caixas usam o programa ao mesmo tempo só a primaeira venda é cadastrada a ultima da erro... Uso Piradox e BDE...
Já tive uma Idéia para resolver o problema mas não sei se é o correto...
Pensei em fazer uma rotina em que quando abrir uma nova venda o programa já salvaria a venda... assim o codigo da venda ja ficaria reservado,... se o outro caixa abrir uma nova venda mesmo que não tenha fechado a venda no no primeiro caixa o codigo seria diferente e o erro não aconteceria....

Me deem uma idéia... O que devo Fazer?


Evan Gois

Evan Gois

Responder

Posts

22/04/2004

Weber

Veja bem, se você está trabalhando com impressora fiscal, cada cupom terá números diferentes já que são impressoras diferentes.
Dessa forma o numero da venda deveria ser o número do cupom mais a identificação da impressora fiscal. Onde a idendificação da impressora fiscal poderia ser C1 para caixa 1, C2 para caixa 2 e assim por diante.

Agora se você realmente quizer seguir uma sequencia, independente do caixa que está salvando no banco de dados faça com que o sistema obtenha o código sequencia exatamente no momento que está salvando e não no momento que está iniciando a venda.


Responder

Gostei + 0

22/04/2004

Macario

Ola programador, beleza?


suponho que voce esteja fazendo da seguinte forma:

Exemplo Caixa 1: dm.TbVendas.Last; // indo ao ultimo registro e supondo que este registro seja de numero 10 iCodVen:= dm.TbVendas.FieldByName(´ID_Venda).asInteger+1; // valor de iCodVen (11) dm.TbVendas.Append;


e logo em seguida o caixa 2 faz a mesma operação:

Exemplo Caixa 2: dm.TbVendas.Last; // aqui o ultimo codigo continua sendo 10, iCodVen:= dm.TbVendas.FieldByName(´ID_Venda).asInteger+1; // valor de iCodVen (11) dm.TbVendas.Append;



agora se os dois caixas confirmarem a operação,
dara o erro ´key violation´.

a solução seria vc ter uma tabela de parametros onde armazenara, o ultimo codigo de todas as tabelas.

exemplo:

dm.Tbparametos.Last; // indo ao ultimo registro e supondo que este registro seja de numero 10 iCodVen:= dm.TbParametros.FieldByName(´ID_Venda).asInteger+1; dm.Tbparametos.Append; dm.TbParametros.FieldByName(´ID_Venda).asInteger := iCodVen; dm.Tbparametos.post; dm.TbVendas.Append;



espero ter ajudado


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar