duas condições com estrutura IF THEN ELSE

Delphi

12/04/2008

Ola Colegas, Estou de Volta no Fórum

Obtive algumas Respostas dos Colegas, mas ainda tem alguma coisa confusa nas instruções SQL, que não estão dando certo, Alguem me Ajude !!!

tabela BDCOMPRAS (PARADOX7)

COD_CLI A 3

NOME_CLI A 50
PRODUTO A 50
DATA_COMPRA DATE
HORA_COMPRA
MES_COMPRA A 9
ETC.......

Como Disse Anteriormente, Quero consultar a tabela por duas condições

Tudo que o COD_CLI(100) comprou no MES_COMPRA(março)

Coloquei o Componente Query no Form, e no SQL(propriedades) SELECT * FROM BDCOMPRAS

No Evento BUTTONCLICK, Fiz.

[color=green:3454c87b66]procedure TfrmCONSULTA.Button1Click(Sender: TObject);
begin
Query1.Close;
Query1.Sql.Clear;

Query1.Sql.add(´SELECT * FROM BDCOMPRAS WHERE COD_CLI=´+ QuotedStr(edit1.Text) and MES_COMPRA=´+QuotedStr(edit2.text));

Query1.Open;
end;[/color:3454c87b66]

Não está dando Certo, [color=red:3454c87b66]Só dá certo se excluir o COD_CLI[/color:3454c87b66] e deixar:

[color=green:3454c87b66]Query1.Sql.add(´SELECT * FROM BDCOMPRAS WHERE MES_COMPRA=´+QuotedStr(edit2.text));[/color:3454c87b66]

Será que é por causa de o COD_CLI ser Numeros e o MES_COMPRA ser texto ????

Agradeço por qualquer Ajuda!!!

Aldo


Aldo.junior1

Aldo.junior1

Curtidas 0

Respostas

José Henrique

José Henrique

12/04/2008

Aldo,
É isso mesmo, só devemos colocar ´ se for string, número não. Troque para

Query1.Sql.add(´SELECT * FROM BDCOMPRAS WHERE (COD_CLI=´+ edit1.Text + ´) and (MES_COMPRA=´+QuotedStr(edit2.text) + ´)´);

Também é bom isolar as condições com parênteses.


GOSTEI 0
Aldo.junior1

Aldo.junior1

12/04/2008

Brigadão, Colega,

Vou Tentar Aqui,

Valew!!!


GOSTEI 0
Aldo.junior1

Aldo.junior1

12/04/2008

Henrique, Valeu mas não deu Certo

Retorna uma Caixa de Erro
[color=red:317c910d70]´TYPE MISMACTH IN EXPRESSION´[/color:317c910d70]

E não dá pra saber se o erro está no (COD_CLI) ou no (MES_COMPRA)

Tentei até incluir esta linha abaixo, mas não deu. :

[color=green:317c910d70]Query1.Params.ParamByName(´CODCLI´).AsInteger := IntToStr(Edit1.Text);[/color:317c910d70]

Grato

Aldo


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

12/04/2008

tente assim:
procedure TfrmCONSULTA.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.Sql.Clear;
  Query1.Sql.add(´SELECT * FROM BDCOMPRAS WHERE COD_CLI=:CODCLI and MES_COMPRA=:MES´);
  Query1.ParamByName(´CodCli´).AsInteger := IntToStr(Edit1.Text);
  Query1.ParamByName(´Mes´).AsString := Edit2.Text;
  Query1.Open;
end;

ou assim:
procedure TfrmCONSULTA.Button1Click(Sender: TObject);
begin
  Query1.Close;
  Query1.Sql.Text := ´SELECT * FROM BDCOMPRAS WHERE COD_CLI=:CODCLI and MES_COMPRA=:MES´;
  Query1.ParamByName(´CodCli´).AsInteger := IntToStr(Edit1.Text);
  Query1.ParamByName(´Mes´).AsString := Edit2.Text;
  Query1.Open;
end;



GOSTEI 0
POSTAR