Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
funcion recursiva para este codigo

necesito reducir este codigo. con una funcion.
el sgt codigo agrupa datos para cargarlos en combobox. para muchos combox con caracteristicas similares.

si alguien me puede ayudar

Código Delphi [-]


procedure TEstadistica.CargarDatosCombox;
begin

 CBDpto.Clear;
 CBDpto.Items.Add('TODOS');
 With DMDatos.IBConsultaSql do Begin
   close;
   Sql.Clear;
   Sql.Add('Select DEPARTAMENTO as Dato From NACIMIENTOS Group By DEPARTAMENTO ');
   Open;
   If RecordCount <> 0 Then Begin
     First;
     While not eof do Begin
       CBDpto.Items.Add(fieldbyname('Dato').AsString);
       Next;
     End;
  End;
 End;
  CBDpto.Text  :='TODOS' ;


//==============================================================================

 CBMunicipio.Clear;
 CBMunicipio.Items.Add('TODOS');
 With DMDatos.IBConsultaSql do Begin
   close;
   Sql.Clear;
   Sql.Add('Select MUNICIPIO as Dato From NACIMIENTOS Group By MUNICIPIO ');
   Open;
   If RecordCount <> 0 Then Begin
     First;
     While not eof do Begin
       CBMunicipio.Items.Add(fieldbyname('Dato').AsString);
       Next;
     End;
  End;
 End;
  CBMunicipio.Text  :='TODOS' ;

//==============================================================================

 CBAreaNacimiento.Clear;
 CBAreaNacimiento.Items.Add('TODOS');
 With DMDatos.IBConsultaSql do Begin
   close;
   Sql.Clear;
   Sql.Add('Select AREA_NACIMIENTO as Dato From NACIMIENTOS Group By AREA_NACIMIENTO ');
   Open;
   If RecordCount <> 0 Then Begin
     First;
     While not eof do Begin
       CBAreaNacimiento.Items.Add(fieldbyname('Dato').AsString);
       Next;
     End;
  End;
 End;
  CBAreaNacimiento.Text  :='TODOS' ;


//============================================================================== y siguen con otros mismos dif campos
end;
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #2  
Antiguo 19-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Tengo un procedure para rellenar combobox, mira si te sirve:

Código Delphi [-]
type TiposCampo = set of TFieldType;

procedure RellenarCombo( DS:TDataSet; tcTiposCampo:TiposCampo; var cbCombo:TComboBox);
Código Delphi [-]
procedure RellenarCombo( DS:TDataSet; tcTiposCampo:TiposCampo; var cbCombo:TComboBox);
(* Rellena los elementos de un combobox con los campos de un dataset cuyos
   tipos estén en la lista que se le pasa *)
var
  iX : integer;
begin
  cbCombo.Items.Clear;
  for iX := 0 to DS.FieldCount - 1 do
    with DS.Fields[iX] do
      if (FieldKind = fkData) and (DataType in tcTiposCampo) then
        cbCombo.Items.AddObject(DisplayLabel, DS.Fields[iX]);
    cbCombo.ItemIndex := 0;
end;
Responder Con Cita
  #3  
Antiguo 20-06-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Código Delphi [-]
procedure TEstadistica.CargarDatosCombox;
begin
 CBDpto.Clear;
 CBDpto.Items.Add('TODOS');
 CBMunicipio.Clear;
 CBMunicipio.Items.Add('TODOS');
 CBAreaNacimiento.Clear;
 CBAreaNacimiento.Items.Add('TODOS');
 With DMDatos.IBConsultaSql do Begin
   close;
   Sql.Text:= 'Select DEPARTAMENTO, MUNICIPIO, AREA_NACIMIENTO '+
              ' From NACIMIENTOS Group By DEPARTAMENTO, MUNICIPIO, AREA_NACIMIENTO ';
   Open;
   If RecordCount <> 0 Then Begin
   While not eof do Begin
   CBDpto.Items.Add(fieldbyname('DEPARTAMENTO').AsString);
   CBMunicipio.Items.Add(fieldbyname('MUNICIPIO').AsString);
   CBAreaNacimiento.Items.Add(fieldbyname('AREA_NACIMIENTO').AsString);
   Next;
   End;
   End;
  End;
  CBDpto.Text  :='TODOS' ;
  CBMunicipio.Text  :='TODOS' ;
  CBAreaNacimiento.Text  :='TODOS' ;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 20-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
gracias Novato Premium
pero ese codigo tambien se me extenderia mucho,. por que son casi 50 combo.
una funcion recursiva si me ayudaria.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #5  
Antiguo 20-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Tengo un procedure para rellenar combobox, mira si te sirve:

Código Delphi [-]
type TiposCampo = set of TFieldType;

procedure RellenarCombo( DS:TDataSet; tcTiposCampo:TiposCampo; var cbCombo:TComboBox);
Código Delphi [-]
procedure RellenarCombo( DS:TDataSet; tcTiposCampo:TiposCampo; var cbCombo:TComboBox);
(* Rellena los elementos de un combobox con los campos de un dataset cuyos
   tipos estén en la lista que se le pasa *)
var
  iX : integer;
begin
  cbCombo.Items.Clear;
  for iX := 0 to DS.FieldCount - 1 do
    with DS.Fields[iX] do
      if (FieldKind = fkData) and (DataType in tcTiposCampo) then
        cbCombo.Items.AddObject(DisplayLabel, DS.Fields[iX]);
    cbCombo.ItemIndex := 0;
end;
unideclrade identifiquer TFieldType y DisplayLabel.
me sale este error
__________________
Enseñar es la virtud de un sabio.

Última edición por ingabraham fecha: 20-06-2011 a las 16:42:32.
Responder Con Cita
  #6  
Antiguo 20-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
Código Delphi [-]

use  IBQuery;



procedure RellenarCombo( DS:TIBQuery; var cbCombo:TComboBox);
var
  iX : integer;
begin
 cbCombo.Items.Clear;
 cbCombo.Items.Add('TODOS');
 If DS.Recordcount <> 0 then
  begin
      DS.First;
      While not DS.eof do
      Begin
        cbCombo.Items.Add(DS.Fields[iX].AsString);
        DS.Next;
       end;
  end;

    cbCombo.ItemIndex := 0;
end;



   DMDatos.ConsultaSql('Select DEPARTAMENTO as Dato From NACIMIENTOS Group By DEPARTAMENTO ');
   RellenarCombo(DMDatos.IBConsultaSql,CBDpto);

listo, pal k le sirva
__________________
Enseñar es la virtud de un sabio.

Última edición por ingabraham fecha: 20-06-2011 a las 17:17:37.
Responder Con Cita
  #7  
Antiguo 20-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
unideclrade identifiquer TFieldType y DisplayLabel.
me sale este error
Hola.

En este hilo tuviste la misma duda. Nuevamente tenes que incluir la unit DB.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #8  
Antiguo 20-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Hola.
En este hilo tuviste la misma duda. Nuevamente tenes que incluir la unit DB.
Saludos.
Pues sí, a veces se olvidan esos detalles, son tantas cosas
Responder Con Cita
  #9  
Antiguo 21-06-2011
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Dandole una vuelta el tema podria ser así..

Consulta

[delphi]
Código Delphi [-]
procedure RellenarCombo( DS:TIBQuery; AFieldname:String; var cbCombo:TComboBox);
var
  iX : integer;
begin
     cbCombo.Items.Clear;
     cbCombo.Items.Text:= DS.FieldByName(AFieldName).AsString;

    cbCombo.ItemIndex := 0;
end;


   DMDatos.ConsultaSql('SELECT ''TODOS''||ASCII_CHAR(13)||LIST(DEPARTAMENTO,ASCII_CHAR(13)) as DATO FROM (SELECT DISTINCT DEPARTAMENTO FROM NACIMIENTOS))');

   RellenarCombo(DMDatos.IBConsultaSql,'DATO',CBDpto);

Pues eso nada mas...

Este codigo hace uso de la funccion LIST que es de Firebird... Si es otro DBMS creo que no serviria...

Última edición por cloayza fecha: 21-06-2011 a las 03:30:05. Razón: Corrección
Responder Con Cita
  #10  
Antiguo 21-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
k barbaridad de codigo, nunk habia visto esto. gracias cuando pueda lo probare y analizare. me interesa sabes este tipo de comandos.
__________________
Enseñar es la virtud de un sabio.
Responder Con Cita
  #11  
Antiguo 21-06-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Que componentes utilizas para hacer la conexión a Firebird? Si utilizas FIBPlus hay una función en los componentes que te puede ayudar mucho en la tarea. Pero además necesitarás utilizar la función LIST incluida en Firebird 2.1 o superior.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #12  
Antiguo 21-06-2011
Avatar de ingabraham
ingabraham ingabraham is offline
Miembro
 
Registrado: ago 2007
Posts: 614
Poder: 17
ingabraham Va por buen camino
ib, ibdatabase y ibtransaction. fb 2.0
__________________
Enseñar es la virtud de un sabio.
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
Qué tiene de malo este código para cargar una imagen a access con ado ? Master23 Varios 8 17-07-2010 03:05:24
Función recursiva en un TreeView [Gunman] OOP 11 07-06-2010 03:53:51
Una ayudita, para este codigo ingabraham OOP 14 17-08-2007 01:22:48
Para que demonios sirve este código marcoszorrilla Varios 16 07-12-2005 14:51:35
Funcion Recursiva Aztaroth Varios 5 09-09-2004 18:37:19


La franja horaria es GMT +2. Ahora son las 12:48:37.


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