Varias Consultas num unico evento de um unico componente
Oi galera do Forum, mais uma vez recorro a generosidade de voces para pedir uma grande ajuda.
Estou fazendo um aplicativo em delphi com acess e usando a paleta ADO para me conectar ao bd. Como não tenho muita experiencia em delphi optei por um codigo mais extenso porem mais facil de ser entendido . Bom, vamos a minha duvida.
Tenho um form com 4 panel´s, no primeiro faço uma consulta na tabela Fornecedores para buscar o cliente que inicie com as letras digitadas num edit. Até ai funciona perfeitamente...
Eu implementei um pouco mais o código de forma que ao ir digitando o nome do cliente no edit alem de ir buscando na tabela fornecedor o mesmo tambem fosse sendo feitas duas consultas na tabela caixa onde cada resposta à consulta é feita em um panel diferente (usei 2 querys diferentes para uma mesma tabela para ficar mais facil eu entender). O código segue abaixo:
procedure TFrmCaixa.Edit3Change(Sender: TObject);
var tam, tar, ta: integer;
begin
If (edit3.Text <>´´) then
Begin
DModul.QForn.Close;
DModul.QForn.SQL.Clear;
tam := length(edit3.Text);
DModul.QForn.SQL.Text:=´Select * from Fornecedores WHERE mid(RazaoSocial,1,´+IntToStr(tam)+´) = ´´´+edit3.Text+´´´ ´;
DModul.QForn.Open;
end;
If (edit3.Text <>´´) then
begin
DModul.QCaixa.Close;
DModul.QCaixa.SQL.Clear;
tar := length(dbedit27.Text);
DModul.QCaixa.SQL.Text:=´Select * from Caixa where mid(Fornecedor,1,´ +InttoStr(tar)+´) = ´´´+dbedit27.Text+´´´ ´;
DModul.QCaixa.Open;
end;
If(edit3.Text <>´´) then
begin
DModul.QCaixa2.Close;
DModul.QCaixa2.SQL.Clear;
ta := length(dbedit27.Text);
DModul.QCaixa2.SQL.Text:=´Select * from Caixa where mid(Fornecedor,1,´ +InttoStr(ta)+´) = ´´´+dbedit27.Text+´´´ ´;
DModul.QCaixa2.Open;
end;
end;
procedure TFrmCaixa.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:= caFree;
end;
procedure TFrmCaixa.FormShow(Sender: TObject);
begin
maskedit1.text := DateToStr(Date + 60);
maskedit2.text := DateToStr(Date + 30);
end;
end.
Ele esta funcionando perfeitamente, o que eu gostaria de saber é como colocar parametros neste codigo. Ex. Nesta parte do codigo:
If(edit3.Text <>´´) then
begin
DModul.QCaixa2.Close;
DModul.QCaixa2.SQL.Clear;
ta := length(dbedit27.Text);
DModul.QCaixa2.SQL.Text:=´Select * from Caixa where mid(Fornecedor,1,´ +InttoStr(ta)+´) = ´´´+dbedit27.Text+´´´ ´;
// Colocar um parametro para que a data de vencimento seje menor ou igual ao maskedit1.text;
//Colocar um segundo parametro para que a data de pagamento seje igual a nulo;
// e assim por diante;
DModul.QCaixa2.Open;
end;
Alguem poderia me ajudar? Se puder ficarei muito grata. :roll: :roll:
Estou fazendo um aplicativo em delphi com acess e usando a paleta ADO para me conectar ao bd. Como não tenho muita experiencia em delphi optei por um codigo mais extenso porem mais facil de ser entendido . Bom, vamos a minha duvida.
Tenho um form com 4 panel´s, no primeiro faço uma consulta na tabela Fornecedores para buscar o cliente que inicie com as letras digitadas num edit. Até ai funciona perfeitamente...
Eu implementei um pouco mais o código de forma que ao ir digitando o nome do cliente no edit alem de ir buscando na tabela fornecedor o mesmo tambem fosse sendo feitas duas consultas na tabela caixa onde cada resposta à consulta é feita em um panel diferente (usei 2 querys diferentes para uma mesma tabela para ficar mais facil eu entender). O código segue abaixo:
procedure TFrmCaixa.Edit3Change(Sender: TObject);
var tam, tar, ta: integer;
begin
If (edit3.Text <>´´) then
Begin
DModul.QForn.Close;
DModul.QForn.SQL.Clear;
tam := length(edit3.Text);
DModul.QForn.SQL.Text:=´Select * from Fornecedores WHERE mid(RazaoSocial,1,´+IntToStr(tam)+´) = ´´´+edit3.Text+´´´ ´;
DModul.QForn.Open;
end;
If (edit3.Text <>´´) then
begin
DModul.QCaixa.Close;
DModul.QCaixa.SQL.Clear;
tar := length(dbedit27.Text);
DModul.QCaixa.SQL.Text:=´Select * from Caixa where mid(Fornecedor,1,´ +InttoStr(tar)+´) = ´´´+dbedit27.Text+´´´ ´;
DModul.QCaixa.Open;
end;
If(edit3.Text <>´´) then
begin
DModul.QCaixa2.Close;
DModul.QCaixa2.SQL.Clear;
ta := length(dbedit27.Text);
DModul.QCaixa2.SQL.Text:=´Select * from Caixa where mid(Fornecedor,1,´ +InttoStr(ta)+´) = ´´´+dbedit27.Text+´´´ ´;
DModul.QCaixa2.Open;
end;
end;
procedure TFrmCaixa.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:= caFree;
end;
procedure TFrmCaixa.FormShow(Sender: TObject);
begin
maskedit1.text := DateToStr(Date + 60);
maskedit2.text := DateToStr(Date + 30);
end;
end.
Ele esta funcionando perfeitamente, o que eu gostaria de saber é como colocar parametros neste codigo. Ex. Nesta parte do codigo:
If(edit3.Text <>´´) then
begin
DModul.QCaixa2.Close;
DModul.QCaixa2.SQL.Clear;
ta := length(dbedit27.Text);
DModul.QCaixa2.SQL.Text:=´Select * from Caixa where mid(Fornecedor,1,´ +InttoStr(ta)+´) = ´´´+dbedit27.Text+´´´ ´;
// Colocar um parametro para que a data de vencimento seje menor ou igual ao maskedit1.text;
//Colocar um segundo parametro para que a data de pagamento seje igual a nulo;
// e assim por diante;
DModul.QCaixa2.Open;
end;
Alguem poderia me ajudar? Se puder ficarei muito grata. :roll: :roll:
Flavia_mococa
Curtidas 0
Respostas
Paulo_amorim
25/05/2004
Olá
É aconselhavel que voce utilize SQL.Add ( ... ), e não SQL.Text := ...
Isso porque vc pode colocar vários ADD...
Então, vc poderia fazer:
Assim vc pode colocar quantas condições precisar
É aconselhavel que voce utilize SQL.Add ( ... ), e não SQL.Text := ...
Isso porque vc pode colocar vários ADD...
Então, vc poderia fazer:
with Query.SQL do begin Add(select * from tabela); Add (where condicao1 = ...); Add ( and condicao2 = ...) ; Add ( and condicaoN = ...); end;
Assim vc pode colocar quantas condições precisar
GOSTEI 0