momo
24-02-2007, 19:20:38
Espero alguien pueda orientarme. :confused:
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:
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
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:
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