Array
(
)

Sql clientes de ´A´ a ´Z´

Marcusbraga
   - 11 mar 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´


Rjun
   - 11 mar 2006

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.


Marcusbraga
   - 11 mar 2006

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.


Edilcimar
   - 11 mar 2006

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


Marcusbraga
   - 11 mar 2006

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


Edilcimar
   - 12 mar 2006

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


Motta
   - 13 mar 2006

tente :

#Código


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´


Mmbarros
   - 13 mar 2006

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!