Fórum Contador não esta passando indo para a variável 2 porque?? #455345
16/09/2013
0
Estou precisando mesmo de uma ajuda no codigo abaixo existe um contador que recebe e soma a varivável [canal] para saber em que passo está o microterminal
Por exemplo se recebo um dado esse dado virá com o valor 1 para enviado ou 0 para nenhum processo executado ou seja ninguem usou o microterminal
Esta acontecendo que quando envio um dado consigo envia rno caso só a parte d abertura de comanda ou pesquisa o passo 1
quando no display mostra para digitar o PRODUTO ou seja o passo 2 dai eu digito o codigo não acontece nada! não é enviado o dado para o bd e nem mesmo dá um erro
a parte aonde começa a não acontecer nada eu comentei abaixo se algum amigo puder me auxiliar serei grato por isso
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 0 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
if ted[canal+1]=2 then // A PARTIR DAQUI NÃO ACONTECE NADA //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1;
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end; {rel ao for }
end;
Fabio 2013
Curtir tópico
+ 0Posts
16/09/2013
Marcos Oliveira
Porém, pelo loop que você fez, vai executar só uma vez.
Veja:
// Está assim for conjunto:= 0 to 0 do // Por acaso não deveria estar assim? for conjunto:= 0 to 1 do
Att,
Marcos
Gostei + 0
16/09/2013
Fabio 2013
Então eu fiz a mudança mas mesmo assim acontece a mesma coisa: Teclo e no microterminal ai aparece DIGITE COMANDA ai digito o numero da comanda tipo 82
ai essa informação aparece no BD e no sistema, ai APARECE NO DISPLAY: PRODUTO ai digito o codigo 162 por exemplo só que ai ja não acontece nada
Há uma váriavel chamada TED coloquei lá embaixo como eu a implementei será que o erro esta lá? nãoi tenho muita experiência ainda se puder dar mais uma olhada será de grande ajuda
[CODIGO]
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 2 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end; {rel ao for }
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mensagem[1]:='DIGITE A COMANDA';
mensagem[2]:='*** PRODUTO ****';
contador:=0;
for zzz:=1 to 3 do
begin
ted[zzz]:=1;
end;
end;
[/CODIGO]
Gostei + 0
16/09/2013
Fabio 2013
Então eu fiz a mudança mas mesmo assim acontece a mesma coisa: Teclo e no microterminal ai aparece DIGITE COMANDA ai digito o numero da comanda tipo 82
ai essa informação aparece no BD e no sistema, ai APARECE NO DISPLAY: PRODUTO ai digito o codigo 162 por exemplo só que ai ja não acontece nada
Há uma váriavel chamada TED coloquei lá embaixo como eu a implementei será que o erro esta lá? nãoi tenho muita experiência ainda se puder dar mais uma olhada será de grande ajuda
[CODIGO]
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 2 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end; {rel ao for }
end;
[/CODIGO]
procedure TForm1.FormCreate(Sender: TObject);
begin
mensagem[1]:='DIGITE A COMANDA';
mensagem[2]:='*** PRODUTO ****';
contador:=0;
for zzz:=1 to 3 do
begin
ted[zzz]:=1;
end;
end;
[/CODIGO]
Gostei + 0
16/09/2013
Fabio 2013
Então eu fiz a mudança mas mesmo assim acontece a mesma coisa: Teclo e no microterminal ai aparece DIGITE COMANDA ai digito o numero da comanda tipo 82
ai essa informação aparece no BD e no sistema, ai APARECE NO DISPLAY: PRODUTO ai digito o codigo 162 por exemplo só que ai ja não acontece nada
Há uma váriavel chamada TED coloquei lá embaixo como eu a implementei será que o erro esta lá? nãoi tenho muita experiência ainda se puder dar mais uma olhada será de grande ajuda
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 2 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end; {rel ao for }
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
mensagem[1]:='DIGITE A COMANDA';
mensagem[2]:='*** PRODUTO ****';
contador:=0;
for zzz:=1 to 3 do
begin
ted[zzz]:=1;
end;
end;
[/CODIGO]
Gostei + 0
16/09/2013
Marcos Oliveira
Fiz uma indentação diferente para facilitar a visualização. Veja nos comentários que eu fiz, e faça um teste para ver se o problema é isso mesmo.
for conjunto:= 0 to 2 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
// Este IF está correto. Pelo jeito está passando por ele.
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
// Este IF está dentro do outro IF. Você teria que colocar um "END" antes, para que após o primeiro IF, o segundo seja questionado.
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If not datamodule1.QData.Locate('codigo_barras',dado,[loPartialKey]) then
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
end
else
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then
ted [canal+1]:=1;
end;
end; {rel ao for }
Att,
Marcos
Gostei + 0
16/09/2013
Fabio 2013
Então teve uma mudança sim só que olha que estranho antes quando aparecia comanda no display eu inseria um numero qualquer e este numero ia para p sistema e era gravado no bd normalmente
Agora esta invertendo quando aparece comanda no display eu insiro um numero e não aparece nada no sistema e nem no bd no entanto quando teclo E e aparece PRODUTO
insiro qualquer outro numero e ele aparece no BD mas na tabela de comandas! E não na de venda, que estranho poderia ver para mim por gentileza porque imagino que seja realmente alguma falha no meu entendimento do codigo desde já muito obrigado
Gostei + 0
16/09/2013
Fabio 2013
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 0 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
// Este IF está correto. Pelo jeito está passando por ele.
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
// Este IF está dentro do outro IF. Você teria que colocar um "END" antes, para que após o primeiro IF, o segundo seja questionado.
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If datamodule1.QEstoque.Locate('codigo_barras',dado,[loPartialKey]) then
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then
ted [canal+1]:=1;
end;
end; {rel ao for }
end;
[/CODIGO]
Gostei + 0
16/09/2013
Fabio 2013
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 0 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
// Este IF está correto. Pelo jeito está passando por ele.
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
// Este IF está dentro do outro IF. Você teria que colocar um "END" antes, para que após o primeiro IF, o segundo seja questionado.
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If datamodule1.QEstoque.Locate('codigo_barras',dado,[loPartialKey]) then
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then
ted [canal+1]:=1;
end;
end; {rel ao for }
end;
[/CODIGO]
Gostei + 0
16/09/2013
Fabio 2013
procedure TForm1.Timer2Timer(Sender: TObject);
begin
for conjunto:= 0 to 0 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
// Este IF está correto. Pelo jeito está passando por ele.
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post
else
begin
envtmsg (conjunto,canal,'Nao cadastrado');
envbeep (conjunto,canal,2);
envcldisp (conjunto,canal);
envtmsg (conjunto,canal,(mensagem[ted[canal+1]-1]));
// Este IF está dentro do outro IF. Você teria que colocar um "END" antes, para que após o primeiro IF, o segundo seja questionado.
if ted[canal+1]=2 then // NÃO ACONTECE NADA A APARTIR DAQUI //
begin
If datamodule1.QEstoque.Locate('codigo_barras',dado,[loPartialKey]) then
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1; //CONTADOR //
if ted[canal+1]=3 then
ted [canal+1]:=1;
end;
end; {rel ao for }
end;
Gostei + 0
16/09/2013
Fabio 2013
For loop control varieable must be simple local variable
Gostei + 0
16/09/2013
Marcos Oliveira
procedure TForm1.Timer2Timer(Sender: TObject);
var
conjunto: Integer;
begin
for conjunto:= 0 to 0 do
begin
// (...)
end;
Gostei + 0
17/09/2013
Fabio 2013
Então tá osso aqui srsrs eu tentei colocar aquele END mas não compila com ele dá erro.
procedure TForm1.Timer2Timer(Sender: TObject);
Var
conjunto:integer;
begin
for conjunto:= 0 to 1 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post;
// aqui não aceita o end //
begin
if ted[canal+1]=2 then
begin
If datamodule1.QEstoque.Locate('codigo_barras',dado,[loPartialKey]) then
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1;
if ted[canal+1]=3 then ted [canal+1]:=1;
end;
end; {rel ao for }
end;
Gostei + 0
18/09/2013
Marcos Oliveira
Mas, tentei reorganizar os ifs, begins e ends. Não é garantia que vá funcionar, mas tenta aí.
procedure TForm1.Timer2Timer(Sender: TObject);
Var
conjunto:integer;
begin
for conjunto:= 0 to 1 do
begin
canal:=100;
if (getcnt (dado,canal,conjunto ))=1 then
begin
str (canal,scanal );
str (conjunto,sconjunto);
str (canal,stcan);
if ted[canal+1]=1 then
begin
If not datamodule1.QData.Locate('comanda',dado,[loPartialKey]) then
datamodule1.QData.Append;
datamodule1.QData.Edit;
datamodule1.QDatatipodve.Text:=('1');
datamodule1.QDatacomanda.Text:= dado;
datamodule1.QDatadata.Text:=DateToStr(now);
datamodule1.QDatahora.Text:=TimeToStr(now);
datamodule1.QDataCliente.Text:=('ATENDIMENTO COMANDA');
if datamodule1.QData.State in [dsedit,dsinsert] then
datamodule1.QData.Post;
end;
if ted[canal+1]=2 then
begin
If datamodule1.QEstoque.Locate('codigo_barras',dado,[loPartialKey]) then
begin
datamodule1.QVenda.Append;
datamodule1.QVenda.Edit;
if datamodule1.QVendaquant.IsNull then
datamodule1.QVendaquant.Text:=('1');
datamodule1.QVendacodigo_barras.Text :=(dado);
datamodule1.QVendadescricao.Text := datamodule1.QEstoquedescricao.AsString;
datamodule1.QVendarevisa2.Text:=datamodule1.QEstoquerevisar.Text;
datamodule1.QVendavalorunit.AsCurrency:= datamodule1.QEstoquevalor_venda.AsCurrency;
datamodule1.QVendaaliq.Text := datamodule1.QEstoquealiq.Text;
datamodule1.QVendaaliqnac.Text:=datamodule1.QEstoquealiqnacion.Text;
datamodule1.QVendavendedor.Text:=datamodule1.QLoginusuario.Text;
datamodule1.QVendadatav.Text:=DateToStr(now);
datamodule1.QVendaqtdvend.Text:=datamodule1.QEstoquetotal_vendido.Text;
datamodule1.QVendagrupo.Text:=datamodule1.QEstoquegrupo.Text;
datamodule1.QVendaunidade.Text:=datamodule1.QEstoqueunidade.Text;
datamodule1.QVendavalorTotal.AsCurrency :=
datamodule1.QVendaquant.AsCurrency *
datamodule1.QVendavalorUnit.AsCurrency;
if datamodule1.QVenda.State in [dsedit,dsinsert] then
datamodule1.QVenda.Post;
datamodule1.QSum.Close;
datamodule1.QSum.Open;
end;
end;
end;
envtmsg (conjunto,canal,(mensagem[ted[canal+1]]));
envbeep ( conjunto,canal,1);
ted[canal+1]:=ted[canal+1]+1;
if ted[canal+1]=3 then
ted [canal+1]:=1;
end; {rel ao for }
end;
Att,
Marcos
Gostei + 0