Sql clientes de ´A´ a ´Z´

11/03/2006

Amigos estou tentando fazer um filtro de clientes preciso selecionar clientes de ´A´ a ´Z´ ou de acordo com o valor colocado nos edits

sqlfiltro := ´ Select * from clientes where id <> -1 ´

if edit1.Text <> ´´ then
sqlFiltro := sqlFiltro + ´ and clientes.nome >= ´ + quotedstr(edit1.Text);
if edit2.Text <> ´´ then
sqlFiltro := sqlFiltro + ´ and clientes.nome <= ´ + quotedstr(edit2.Text);

exemplo
edit1.text := ´A´;

ele traz todos clientes iniciados >= A esse funciona beleza

edit2.text := ´Z´;

ele deveria trazer todos <= ´Z´ mas ele não ta trazendo o ´Z´ o igal não ta valendo nada ja tentei o like mas ele anula o ´<´ e só traz o ´Z´

alguem pode me dar uma solução para isso desde ja agradeço
obrigado....

Firebird 1.5
Delphi 7.0





o problema é q o >= funciona belza mais o <= não traz o cliente iniciado com o ´Z´


Marcusbraga

Respostas

11/03/2006

Rjun

A não ser que você tenha um cliente chamado ´Z´, ele realmente não vai trazer. O que você pode fazer é se o edit2.Text for ´Z´, você desconsiderar essa parte do filtro.


Responder Citar

11/03/2006

Marcusbraga

tenho um cliente chamado ´Z´
só que se eu desconsiderar essa parte do filtro para ´Z´ terei que fazer desconsiderar todo o alfabeto,
e se edit2 for ´M´ o ´M´ tambem não vai vir e se eu desconsidero essa parte ele vai me traze todos até o ´Z´

mas mesmo assim obrigado pela dica, só que não resolve meu problema.


Responder Citar

11/03/2006

Edilcimar

faça assim
if edit2.Text <> ´´ then
sqlFiltro := sqlFiltro + ´ and clientes.nome < ´ + quotedstr(Chr(Ord(edit2.Text)+1));


Responder Citar

11/03/2006

Marcusbraga

Edilcimar, sua ideia daria certinho mais infelizmente ta dando uma incompatibilidade de tipos

sqlFiltro := sqlFiltro + ´ and clientes.nome < ´ + quotedstr(Chr(Ord(edit2.Text)+1));

se funcionasse seria perfeito


Responder Citar

12/03/2006

Edilcimar

então jogue o edit2.text dentro de uma variável e tente


Responder Citar

13/03/2006

Motta

tente :

if edit1.Text <> ´´ then 
sqlFiltro := sqlFiltro + ´ and clientes.nome >= ´ + quotedstr(edit1.Text); 
if edit2.Text <> ´´ then 
sqlFiltro := sqlFiltro + ´ and clientes.nome <= ´ + quotedstr(edit2.Text) +
´ZZZZZZ´; 


O ZZZZZ força a busca pelo nome ,
ZULMIRA < ´ZZZZZZ´ e não é < ´Z´


Responder Citar

13/03/2006

Mmbarros

O Motta esta correto...

se voçê adicionar mais de uma letra ´Z´ a consulta irá exibir os registros iniciados com Z...

Também tive este problema e resolví desta forma!


Responder Citar