Ver Mensaje Individual
  #1  
Antiguo 24-02-2007
momo momo is offline
Registrado
 
Registrado: jun 2006
Posts: 9
Reputación: 0
momo Va por buen camino
TQuery con Fields dinamicos

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; // with
  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; //Try

Última edición por roman fecha: 24-02-2007 a las 19:24:03. Razón: Agregar etiqueta [delphi] para mejor legibilidad
Responder Con Cita