Consulta condicional...Com query

Delphi

25/10/2004

Tenho dentro de um formulário, um campo de consulta onde são digitados os códigos das mercadorias compradas. O que desejo fazer é:

* quando o código digitado começar por 7, ele deverá utilizar todos os caracteres para realizar a tal consulta;
* quando o código começar por 2 , ele deverá utilizar somente os cinco primeiros caracteres para realizar a consulta.

Certo do apoio e ajuda de todos, fica registrado aqui os meus sinceros agradecimentos.


Pro-luck

Pro-luck

Curtidas 0

Respostas

Koplin

Koplin

25/10/2004

Olá:
Existem muitas formas de fazer isto: vou sugerir uma:
Supondo que o código esteja vindo de um TEdit de nome Edit1:

var s:string;
Begin
s:= Edit1.text; //s assume o valor do edit
If copy(s,1,1) = ´2´ then //se começa com 2 extrai os cinco desejados
s:= copy(s,1,5); //s assume o novo valor

consulta:

´select * from tabela where campo = ´ + s;


end;

A função copy extrai parte de uma string e usa 3 parametros.
o primeiro é a variável q contem a string, ou a string
o segundo, onde está o 1o caractere
o terceiro é a quantidade de caracteres retirados da string a partir do primeiro.
assim Copy(´delphi´,4,3) resulta ´phi´

Boa sorte.


GOSTEI 0
Pro-luck

Pro-luck

25/10/2004

Foi colocado no evento OnExit do Edit de consulta, o seguinte código:


Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´Select * from Mercadorias WHERE CodBarras LIKE´ + ´´´´+´¬´+Edit1.Text+´¬´+´´´´);
Query.Open;

Como devo implementar a sua dica no meu código para que faça o que estou precisando?

Obs.: Só me interessa os cinco primeiros caracteres quando o código começar pelo número 2 e quando começar pelo número 7 todos os caracteres deverão ser utilizados na consulta.

E acima de qualquer coisa, muitíssimo obrigado.


GOSTEI 0
Pro-luck

Pro-luck

25/10/2004

SOBE


GOSTEI 0
Koplin

Koplin

25/10/2004

///evento on exit
var s:string;
Begin
s:= Edit1.text; //s assume o valor do edit
If copy(s,1,1) = ´2´ then //se começa com 2 extrai os cinco desejados
s:= copy(s,1,5); //s assume o novo valor
Query.Close;
Query.SQL.Clear;
Query.SQL.Add(´Select * from Mercadorias WHERE CodBarras LIKE´ + ´´´´+´¬´+ s +´¬´+´´´´);
Query.Open;
end;


// o LIKE, da forma como está, vai fazer a pesquisa pelas ocorrencias que contiverem a string no edit1.
Assim, se a string for 123 a consulta retornara por exemplo:

1234567
00012345
12312313
00000123

se vc quiser uma consulta (que no caso do código de barras é o usual) exata use:

´Select * from Mercadorias WHERE CodBarras = ´´´ + s +´´´´

se quiser uma consulta que busque todos os codigo iniciados com a string use

´Select * from Mercadorias WHERE CodBarras LIKE´ + ´´´´+ s +´¬´+´´´´

neste caso o exemplo acima retornaria por exemplo:

1234567
12312313


GOSTEI 0
POSTAR