Fórum Query e ADOQuery #158325

07/05/2003

0

Bom dia!

Pessoal com o componente Query eu usava o seguinte:

[i:d40ddbc171]DM.Query1.Close;
DM.Query1.SQL.Clear;
dm.Query1.SQL.Add(´SELECT * FROM Livros WHERE descricao LIKE :Desc order by descricao´);
dm.Query1.ParamByName(´Desc´).AsString := ´¬´+Descri+´¬´;
DM.Query1.Prepare;
dm.Query1.Open;
DBGrid1.SetFocus;[/i:d40ddbc171]

Mas o mesmo código não funciona com o ADOQuery, o que eu preciso mudar?

Valeu!

Angelo


Angelo

Angelo

Responder

Posts

07/05/2003

Marcelo.c

Na linha:

dm.Query1.ParamByName(´Desc´).AsString := ´¬´+Descri+´¬´;

Substitua [b:2c3b7c2be9]AsString[/b:2c3b7c2be9] por [b:2c3b7c2be9]Value[/b:2c3b7c2be9].


Responder

Gostei + 0

07/05/2003

Carlos_28

Utilize esta rotina, é 10 x + rápido que o Query ou ADOQuey
você pode modificala

Esta rotina adiciona um cláusula Where ou mais uma condição à sua Where do seu código sql do componente ADODataSet.
O ADODataSet é mais rápido que o ADOQuery ou Query.
Você tem que montar seu SQL normalmente sem order by



procedure AddWhereClause( ADODataSet : TADODataSet ; WhereClause: String);
var sCmd,sOrder:string;
iPosOrderBy: integer;
iPosGroupBy: integer;
begin
If WhereClause = ´´ then
exit;

iPosOrderBy:=Pos(´ORDER BY´,UpperCase( ADODataSet.CommandText));
iPosGroupBy:=Pos(´GROUP BY´,UpperCase( ADODataSet.CommandText));
If iPosOrderBy = 0 then
begin
sCmd := ADODataSet.CommandText;
sOrder := ´´;
end
else
begin
if iPosGroupBy = 0 then
begin
sCmd := Copy(ADODataSet.CommandText,0,iPosOrderBy-1);
sOrder := Copy(ADODataSet.CommandText,iPosOrderBy,Length(ADODataSet.CommandText)-iPosOrderBy);
end
else
begin
sCmd := Copy(ADODataSet.CommandText,0,iPosGroupBy-1);
sOrder :=Copy(ADODataSet.CommandText,iPosGroupBy,Length(ADODataSet.CommandText)-iPosOrderBy);
end;
end;
ADODataSet.CommandText:=sCmd;
If Pos(´WHERE´, UpperCase(ADODataSet.CommandText)) = 0 then
ADODataSet.CommandText := ADODataSet.CommandText + ´ WHERE ´ + WhereClause
else
ADODataSet.CommandText := ADODataSet.CommandText + ´ AND ´ + WhereClause;
If sOrder <> ´´ then
ADODataSet.CommandText := ADODataSet.CommandText + sOrder;
end;


Responder

Gostei + 0

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

Aceitar