Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-09-2004
Luis Luis is offline
Miembro
 
Registrado: may 2003
Posts: 40
Poder: 0
Luis Va por buen camino
Auxilio en ComboBox

Hola foro.
Estoy elaborando un reporte en Rave y para ello utilizo un query, de los campos que tengo en el query solo quiero mostrar algunos (nombre,clave,estatus) en un combo para que se pueda seleccionar uno de ellos y ejecutar un filtro, como puedo hacer para llenar el combo con los campos que quiero utilizar para filtrar ?.

Saludos, bye.
Responder Con Cita
  #2  
Antiguo 29-09-2004
Sinaloense Sinaloense is offline
Miembro
 
Registrado: oct 2003
Posts: 139
Poder: 21
Sinaloense Va por buen camino
Necesitas un DBLookUpComboBox, tiene las propiedades ListSource, ListField y KeyField, En el ListSource asocias un DataSource asociado a una tabla o query que contiene las opciones con las que necesitas llenar el combo, en ListField es la lista de opciones que desplegara el combo lo necesitas asociar a un campo de la tabla o query de ListSource, y KeyField, el valor que regresara el DbLookUpComboBox al seleccionarse el campo desplegado, este lo asocias con un campo en el query que sea la clave de algo por ejemplo.
Responder Con Cita
  #3  
Antiguo 29-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Si quieres llenar el combo con el nombre de todos los campos, puedes usar un bucle:

Código Delphi [-]
        for j:= 0 to qry.FieldDefs.Count-1 do
      with qry.FieldDefs.Items[j] do
          combo.items.add(Name);

Realmente no sé si es lo que necesitas ya que dices que solo quieres mostrar algunos, pero no dices que condición deben cumplir para mostrarlo.

Saludos
Responder Con Cita
  #4  
Antiguo 29-09-2004
Luis Luis is offline
Miembro
 
Registrado: may 2003
Posts: 40
Poder: 0
Luis Va por buen camino
Gracias por responder Lepe y Sinaloense, mira el bucle ya lo tengo pero llena el combo con todos los nombres de los campos y lo que quiero es por ejemplo si en mi query existen los campos ClienteID,Nombre,Estatus,Telefono,Direccion,Fax todos estos campos los utilizo para generar el reporte pero en el combo solo quiero mostrar los nombres de los campos ClienteID, Nombre y Estatus me entiendes ahora ?

Manolo.
Responder Con Cita
  #5  
Antiguo 30-09-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Y supongo que quieres hacerlo "automáticamente", es decir, a priori, no sabes los campos que se han de mostrar en el combo; o bien el usuario puede elegirlos.

El resultado que quieres es este:
Código Delphi [-]
  combo.items.add('ClienteID');
  combo.items.add('Nombre');
  combo.items.add('Status');
Pero sin tenerlos que añadir a mano.

Lo que puedes hacer es guardar en alguna tabla, los nombres de los campos que quieres visualizar, y despues cargarlos en tiempo de ejecución.

Te puedes crear una tabla con 2 campos de string, el primero de 50 de ancho y el segundo de 255. de tal forma que quede así:
Código:
tabla frases:
 codigo                                 Descripcion
---------------------              -----------------------------------
VerCampos                         Nombre;ClienteId;Estatus
PreferenciasGuardarIni            True
Ahora solo tienes que "crearte" unas rutinas para leer lo que necesites, Recuerda que todo está guardado como Strings.

Código Delphi [-]
if tablafrases.locate('codigo','VerCampos',[]) then
begin
   x := Tstringlist.create;
  try
     x.Delimitedchar := ';';
     x.DelimitedText := tablafrasesDescripcion.asstring;

     for i:=0 to x.count-1 
       if qry.FindField(x[i]) <>nil then  
// me aseguro que el campo existe en la query, por un fallo de escritura, 
// nos podemos agobiar muuuucho.
      comboFiltro.items.add(x[i])
       else 
         Messagebox('El campo '+ x[i] + ' no existe en la query');
  finally
     x.free;
  end;
end;
Espero haber acertado en la respuesta.
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


La franja horaria es GMT +2. Ahora son las 03:20:12.


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