GARANTIR DESCONTO

Fórum como usar and e or #355384

14/03/2008

0

fico perdido ao usar and e or em query exemplo.
query1.close;
query1.sql.add(´select * from clientes´);
query1.sql.add(´where data = 20070101´);
query1.sql.add(´and cliente = 1´);
query1.sql.add(´or cliente = 1´);
query1.sql.add(´or cliente = 1´);
query1.sql.add(´or cliente = 1´);
query1.open;
assim ela não funciona o resultado fica errado como faço para aninhar os comandos os junto com o and dentro da query seria select * from clientes where data = 20070101 and ((cliente = 1) or (cliente = 2) or (cliente = 3))


Cpd_arim

Cpd_arim

Responder

Posts

14/03/2008

Ferreia2

Coloca tudo que for And dentro de um parenteses só e tudo que for or dentro de outro parenteses


Responder

Gostei + 0

14/03/2008

Jakefrog

query1.sql.add(´select * from clientes´);
query1.sql.add(´where data = 20070101´);
query1.sql.add(´and cliente = 1´);
query1.sql.add(´or cliente = 1´);
query1.sql.add(´or cliente = 1´);
query1.sql.add(´or cliente = 1´);

tem que ficar assim
And (()or()or())

Sacou? And () e cada condição separada por ()

Mas nesse caso vc poderia fazer assim:
query1.sql.add(´select * from clientes´);
query1.sql.add(´where data = 20070101´);
query1.sql.add(´and cliente [b]in (1,2,3,4,5,6)´);

Já é? Falou!


Responder

Gostei + 0

17/03/2008

Cpd_arim

esqueci eh com strings, me atrapalho com as strings
query1.sql.add(´select * from clientes´);
query1.sql.add(´where data = 20070101´);
query1.sql.add(´and cliente = 1´);
query1.sql.add(´or cliente =´ +#39+´01´+39);
query1.sql.add(´or cliente =´ +39+´02´+39);
query1.sql.add(´or cliente =´ +39+´03´+39);
query1.open;
não sei como agrupar o or e assim não funciona.


Responder

Gostei + 0

17/03/2008

Powerlog Tecnologia

Imagino que vc tenha um while para pegar os clientes, ou apenas uns 4 edits na tela. Então a string de clientes ficaria assim:
xClientes := edit1.text;
if (edit2.text <> ´´) and (xClientes <> ´´) then
  xClientes := xClientes + ´, ´;
xClientes := xClientes + edit2.text;
if (edit3.text <> ´´) and (xClientes <> ´´) then
  xClientes := xClientes + ´, ´
xClientes := xClientes + edit3.text;
if (edit4.text <> ´´) and (xClientes <> ´´) then
  xClientes := xClientes + ´, ´
xClientes := xClientes + edit4.text;
 


A query ficaria assim, substituindo os OR por IN

query1.sql.text := ´ select * from clientes ´ +
  ´ where data = :pdata ´  +
  ´ and cliente in (:pclientes ) ´ ; 
query1.parambyname(´pdata´).value := date;
query1.parambyname(´pclientes´).value := xClientes;
query1.open; 



Espero que ajude


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar