Fórum Consulta SQL #386170
13/09/2010
0
function Pesquisa(Codigo:String):integer;
var
i : byte;
begin
result := -1;
i:= 1;
fmTerminais.query.first;
while fmTerminais.query.eof do
if i < fmTerminais.query.recordcount then
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
begin
result:= i;
break;
end;
inc(i);
end;
end;
sempre q executo ela duas vezes ele nao localiza o produto... como posso resolver isso...
Laelson Fagundes
Curtir tópico
+ 0Posts
13/09/2010
Eriley Barbosa
var
i : byte;
begin
result := -1;
i:= 1;
fmTerminais.query.first;
while fmTerminais.query.eof do
if i < fmTerminais.query.recordcount then
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
begin
result:= i;
break;
end;
inc(i);
end;
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.open;
end;
Gostei + 0
13/09/2010
Pietro Braga
Sugiro criar uma procedure para isto:
[code]
procedure Pesquisa (codigo: String);
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
end;
Depois chame em qualquer lugar do seu código.
begin
Pesquisa();
end;
Gostei + 0
13/09/2010
Eriley Barbosa
Gostei + 0
13/09/2010
Pietro Braga
Se não me explique melhor isso, assim posso incorporar mais uma boa prática de programação.
Abraço
Gostei + 0
13/09/2010
Laelson Fagundes
var
i : byte;
begin
result := -1;
i:= 1;
fmTerminais.query.first;
while fmTerminais.query.eof do
if i < fmTerminais.query.recordcount then
begin
pois estou desenvolvendo para o sistema se comicar com o Microterminal Tec 16 e tem q essas instruções se forma fazer uma consulta mormal eu faço numa boa so q aqui a pessoa vai digitando no micro terminal e ele tem q dar o loop até ele nao querer digitar mais produto...
vou testar a dica do Eriley agora para vr se ele volta a mesmo estado...
Gostei + 0
13/09/2010
Laelson Fagundes
Gostei + 0
13/09/2010
Pietro Braga
function Pesquisa(Codigo:String):integer;
var
i : byte;
begin
result := -1;
i:= 1;
fmTerminais.query.first;
while fmTerminais.query.eof do
if i < fmTerminais.query.recordcount then
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
begin
result:= i;
break;
end;
inc(i);
end;
end;
sempre q executo ela duas vezes ele nao localiza o produto... como posso resolver isso...
Ok, mas vou tentar altera um pouco esse código, teste dessa maneira e veja se da certo:
function Pesquisa(Codigo:String):integer;
var
i : byte;
begin
result := -1;
i:= 1;
fmTerminais.query.first;
while Not(fmTerminais.query.eof) do
begin
if i < fmTerminais.query.recordcount then
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
result:= i;
break;
inc(i);
end;
end;
Gostei + 0
13/09/2010
Laelson Fagundes
nao importa o produto q eu coloco sempre vai m mostrar o mesmo ...
Gostei + 0
13/09/2010
Eriley Barbosa
Se não me explique melhor isso, assim posso incorporar mais uma boa prática de programação.
Abraço
codigo = '+CompletaZero(codigo,6)); Ai se rodar uma segunda vez a instrução que tem na query é a ultima: 'select codigo, codbarra, produto, precovenda from c000025
codigo = '+CompletaZero(codigo,6)); Pelo laço deve ter apenas 1 registro, que é o ultimo, logo não localiza nada.
Gostei + 0
13/09/2010
Pietro Braga
Gostei + 0
13/09/2010
Pietro Braga
Gostei + 0
13/09/2010
Eriley Barbosa
var
i : byte;
begin
result := -1;
i:= 1; fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.open;
fmTerminais.query.first;
while Not(fmTerminais.query.eof) do
begin
if i < fmTerminais.query.recordcount then
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
result:= i;
inc(i);
end;
end;
Gostei + 0
13/09/2010
Pietro Braga
End minino!!!
Gostei + 0
13/09/2010
Eriley Barbosa
var
i, TotReg : byte;
begin
result := -1;
i:= 1;
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.open;
TotReg := fmTerminais.query.recordcount;
fmTerminais.query.first;
while Not(fmTerminais.query.eof) do
begin
if i < TotReg then
begin
fmTerminais.query.close;
fmTerminais.query.sql.clear;
fmTerminais.query.sql.add('select codigo, codbarra, produto, precovenda from c000025');
fmTerminais.query.sql.add('where codigo = '+CompletaZero(codigo,6));
fmTerminais.query.open;
if not(fmTerminais.query.IsEmpty) then
begin
result := i;
Break;
end
else
inc(i);
end;
end;
end;
Gostei + 0
13/09/2010
Pietro Braga
mas pq você incrementa o i se a query estiver vazia?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)