Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2007
momo momo is offline
Registrado
 
Registrado: jun 2006
Posts: 9
Poder: 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
  #2  
Antiguo 01-03-2007
pijo pijo is offline
Miembro
 
Registrado: sep 2003
Ubicación: Barcelona, casi
Posts: 56
Poder: 21
pijo Va por buen camino
El problema de que sólo te enseñe un registro lo tienes en el while (creo), tú has escrito:
Cita:
Empezado por momo
Código Delphi [-]
  while qryProduct.Eof do
  begin
   ShowMessage(Format('%s', [
            qryProduct.FieldByName('product_name').AsString ]));
  qryProduct.Next;
  end;
Cuando yo supongo que tendria que ser:
Cita:
Empezado por momo
Código Delphi [-]
  while not qryProduct.Eof do
  begin
   ShowMessage(Format('%s', [
            qryProduct.FieldByName('product_name').AsString ]));
  qryProduct.Next;
  end;
Un consejito, si no tienes que crear campos calculados o lookup te recomendaria que no definieras los campos de la consulta, ya que si no tienes ninguno definido, en el momento de abrir la consulta te los crea dinámicamente según el resultado de la consulta.

ánimos
__________________
Ánimos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ordenar un qry por un campo creado en el Fields Editor vicvil Conexión con bases de datos 1 13-02-2007 16:28:08
agregar en el client data set un fields???????????' jeshu252006 Varios 0 01-12-2006 22:23:39
Auto Search fields en report buider ishtar Impresión 0 18-10-2006 18:40:50
Fields tipo FkLookup de TTable marceloalegre Varios 3 14-07-2005 11:31:49
como ordena delphi los fields de un objeto oworty OOP 3 27-01-2005 15:47:53


La franja horaria es GMT +2. Ahora son las 05:07:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi