Espero alguien pueda orientarme.
En mi aplicacion utilizo los AdoQueries en tiempo de diseño, pero son demasiados, por lo que quisiera cambiar su creación en tiempo de ejecución, lo cual logre, pero el query parece que solo recupera un registro. He aquí mi codigo:
Código Delphi
[-]
var qryProduct: TADOQuery;
dsqryProduct: TDataSource;
Fproduct_name: TStringfield;
begin
Try
qryProduct:= TADOQuery.Create(nil);
dsqryProduct:= TDataSource.Create(nil);
Fproduct_name := TStringField.Create(nil);
With qryProduct do
begin
Connection := datos.conn;
SQL.Clear;
SQL.Add('SELECT pn.product_name ' +
'FROM prods p, prodnames pn ' +
'WHERE p.no_prod_name = pn.no_prod_name ' +
'GROUP BY pn.product_name '+
'ORDER BY pn.product_name ');
end; dsqryProduct.DataSet:= qryProduct;
Fproduct_name.FieldName := 'product_name';
Fproduct_name.DisplayLabel := 'product_name';
Fproduct_name.DataSet := qryProduct;
Fproduct_name.Name := 'product_name';
Fproduct_name.FieldKind := fkData;
whit qryProduct do
begin
Fields.Add(Fproduct_name);
FieldDefs.Update;
Active:= False;
Active:= True;
end;
while qryProduct.Eof do
begin
ShowMessage(Format('%s', [
qryProduct.FieldByName('product_name').AsString ]));
qryProduct.Next;
end;
dbcbAddProduct.DataSource:= dsqryProduct;
dbcbAddProduct.DataField:= 'product_name';
Except
qryProduct.Free;
dsqryProduct.Free;
Raise;
end;