Fórum duas condições com estrutura IF THEN ELSE #357039
12/04/2008
0
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
Curtir tópico
+ 0Posts
12/04/2008
José Henrique
É 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
12/04/2008
Aldo.junior1
Vou Tentar Aqui,
Valew!!!
Gostei + 0
12/04/2008
Aldo.junior1
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
13/04/2008
Emerson Nascimento
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
Clique aqui para fazer login e interagir na Comunidade :)