Consulta condicional...Com query
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.
* 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
Curtidas 0
Respostas
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.
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
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.
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
25/10/2004
SOBE
GOSTEI 0
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
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