Como pesquisar por vários campos
Fiz um form de pesquisa, onde ele serve para todas as tabelas. Tenho um combobox q pega todos so campos da tabela e quero ter a opção de pesquisar por todos os campos.
O problema é o seguinte, fiz um query assim:
para campos alfanumérico funciona blz, o problema está qdo seleciono no combo um campo de outro tipo como inteiro, data, etc...
Como resolver isso? pois quero poder pesquisar por todos os campos independente do tipo dele.
Obrigado
O problema é o seguinte, fiz um query assim:
if edTabela.Text = ´Produtos´ then begin
qProduto.Close;
qProduto.SQL.Clear;
qProduto.SQL.Add(´select * from Produtos where ´+ComboBox1.Text+´ like :ParamProduto´);
qProduto.Sql.Add(´order by Codigo´);
qProduto.ParamByName(´ParamProduto´).AsString := edPesquisa.Text + ´¬´;
qProduto.Open;
end;
para campos alfanumérico funciona blz, o problema está qdo seleciono no combo um campo de outro tipo como inteiro, data, etc...
Como resolver isso? pois quero poder pesquisar por todos os campos independente do tipo dele.
Obrigado
Marco
Curtidas 0
Respostas
Steve_narancic
11/05/2005
Ve se te ajuda em algo:
qProduto.Close;
qProduto.SQL.Clear;
qProduto.SQL.Add(´select * from Produtos´);
for i:= 0 to DataSet.FieldCount -1 do
begin
if (DataSet.Fields[i].Fieldname = ComboBox1.Text) and (DataSet.Fields[i].DataType = ftinteger) then
begin
qProduto.sql.add(´where ´+ComboBox1.Text+´= :paramproduto´);
qProduto.ParamByName(´ParamProduto´).Asinteger := strtoint(edPesquisa.Text);
end
else
begin
qproduto.sql.add(´where ´+ComboBox1.Text+´ like :ParamProduto´);
qProduto.ParamByName(´ParamProduto´).AsString := edPesquisa.Text+ ´¬´;
end;
qProduto.Sql.Add(´order by Codigo´);
qproduto.open
qProduto.Close;
qProduto.SQL.Clear;
qProduto.SQL.Add(´select * from Produtos´);
for i:= 0 to DataSet.FieldCount -1 do
begin
if (DataSet.Fields[i].Fieldname = ComboBox1.Text) and (DataSet.Fields[i].DataType = ftinteger) then
begin
qProduto.sql.add(´where ´+ComboBox1.Text+´= :paramproduto´);
qProduto.ParamByName(´ParamProduto´).Asinteger := strtoint(edPesquisa.Text);
end
else
begin
qproduto.sql.add(´where ´+ComboBox1.Text+´ like :ParamProduto´);
qProduto.ParamByName(´ParamProduto´).AsString := edPesquisa.Text+ ´¬´;
end;
qProduto.Sql.Add(´order by Codigo´);
qproduto.open
GOSTEI 0
Raserafim
11/05/2005
esperimente troca de AsString para AsVariant
qProduto.ParamByName(´ParamProduto´).AsVariant
GOSTEI 0