Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Hola Rofocale.
Cita:
Hola estoy retomando el ejemplo de hace tiempo.. debido a que estuve ocupado trabajando
ahora lo he probado y no filtra el combobox sigue apareciendome todo en el segundo combobox
espero puedas ayudarme
Y tenés razón, no hacía el filtrado.

Cambié los nombres de los campos de las tablas anteriores, quedaron así:
TABLA CATEGORIAS
CCATEGORIA CHAR(1)
CNOMBRE VARCHAR(20)

TABLA UNIDADES
UCATEGORIA CHAR(1)
UNOMBRE VARCHAR(20)


En mi prueba usé estos datos:
TABLA CATEGORIAS
CAT - NOMB.
-----------------------
A - BEBIDAS
B - LICORES

TABLA UNIDADES
CAT - NOMB.
--------------------
A - GASEOSAS
A - JUGOS
B - VINOS
A - LICUADOS
B - LICORES
B - CHAMPAGNES
A - AGUA MINERAL
B - CERVEZAS


El código Delphi:
Código Delphi [-]
...
procedure TForm1.FiltrarComboBox;
begin
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('SELECT UNOMBRE FROM UNIDADES, CATEGORIAS');
  IBQuery1.SQL.Add('WHERE UCATEGORIA = CCATEGORIA AND UCATEGORIA =');
  IBQuery1.SQL.Add('(SELECT CCATEGORIA FROM CATEGORIAS WHERE CNOMBRE =:NOMB)');
  IBQuery1.ParamByName('NOMB').AsString:= cbCategorias.Text;
  IBQuery1.Open;
  cbUnidades.Clear;
  while not IBQuery1.Eof do
  begin
    cbUnidades.Items.Add(IBQuery1.FieldByName('UNOMBRE').AsString);
    IBQuery1.Next;
  end;
  cbUnidades.ItemIndex:= 0;
  IBQuery1.Close
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  IBQuery1.Close;
  IBQuery1.SQL.Text:= 'SELECT * FROM CATEGORIAS ORDER BY CNOMBRE';
  IBQuery1.Open;
  while not IBQuery1.Eof do
  begin
    cbCategorias.Items.Add(IBQuery1.FieldByName('CNOMBRE').AsString);
    IBQuery1.Next;
  end;
  cbCategorias.ItemIndex:= 0;
  IBQuery1.Close;
  IBQuery1.SQL.Text:= 'SELECT * FROM UNIDADES ORDER BY UNOMBRE';
  IBQuery1.Open;
  while not IBQuery1.Eof do
  begin
    cbUnidades.Items.Add(IBQuery1.FieldByName('UNOMBRE').AsString);
    IBQuery1.Next;
  end;
  cbUnidades.ItemIndex:= 0;
  IBQuery1.Close;
  FiltrarComboBox
end;

procedure TForm1.cbCategoriasChange(Sender: TObject);
begin
  FiltrarComboBox;
end;

Al seleccionar la categoria en cbCategorias filtra el combo cbUnidades acorde a la categoría seleccionada.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 13-05-2011 a las 04:07:18.
Responder Con Cita
  #2  
Antiguo 14-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 17
Rofocale Va por buen camino
no me filtra me siguen apareciendo en el combobox unidades.. los datos de forma triplicada

necesito ayuda
Responder Con Cita
  #3  
Antiguo 14-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Hola Rofocale.

Acabo de probarlo de nuevo y funciona perfectamente.

¿ Estas seguro que asignaste el evento OnChange a cbCategorias y dentro de él llamas a FiltrarComboBox ?

Por otro lado, ¿Reproduciste la totalidad del ejemplo (incluídas las tablas) o sólo copiaste/pegaste sobre tus datos ? por que si es del último modo y los datos difieren bíen podría no funcionar.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-05-2011 a las 16:20:51.
Responder Con Cita
  #4  
Antiguo 14-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Hola de nuevo.

Para disipar toda duda y ante la imposibilidad de enviarte la base de datos te adjunto imágenes del funcionamiento:
BEBIDAS:


LICORES:


Nota: Puse la propiedad del segundo combo a csSimple y lo estiré para una mejor visualización.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 14-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 17
Rofocale Va por buen camino
hola mira en mi table categorias y unidades tengo lo sgte

categorias
----------

clave
nombre
fecha
ccategorias


unidades
-----------
clave
nombre
fecha
nombre2 ( este ultimo es como si fuera en el tuyo ucategorias)



Código Delphi [-]
procedure TfrmArticulos.FiltrarComboBox;
begin
  with dmDatos.qryConsulta do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT u.nombre AS unombre FROM unidades u ,categorias c');
    SQL.Add('WHERE u.nombre2 = c.ccategorias AND u.nombre2 =');
    SQL.Add('(SELECT c.ccategorias FROM categorias c WHERE c.nombre = :nomb)');
    ParamByName('nomb').AsString := cmbCategorias.Text;
    Open;
    cmbUnidadTipo.Clear;
    while not dmDatos.qryConsulta.Eof do
    begin
      cmbUnidadTipo.Properties.Items.Add(FieldByName('unombre').AsString);
      Next;
    end;
    cmbUnidadTipo.ItemIndex:= 0;
    Close
  end;
end;

ah y uso combobox de devexpress seria en el evento propertieschange
Código Delphi [-]
procedure TfrmArticulos.cmbCategoriasPropertiesChange(Sender: TObject);
begin
FiltrarCombobox;
end;
y en el formshow

Código Delphi [-]
begin
   with dmDatos.qryConsulta do
   begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM categorias ' ORDER BY nombre');
    Open;
    while not Eof do
    begin
      cmbCategorias.Properties.Items.Add(FieldByName('nombre').AsString);
   
      Next;
    end;
    cmbCategorias.ItemIndex:= 0;
    Close;
    end;
    with dmDatos.qryConsulta do
    begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT * FROM unidades  ORDER BY nombre');
    Open;
    while not Eof do
    begin
      cmbUnidadTipo.Properties.Items.Add(FieldByName('nombre').AsString);
      
      Next;
    end;
    cmbUnidadTipo.ItemIndex:= 0;
    Close;
  end;
  FiltrarComboBox;
end;

algo debo estar haciendo mal porque porque al seleccionar licores no me filtra y mas bien ya aparecen triplicados todos en el segundo combobox
Responder Con Cita
  #6  
Antiguo 14-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Hola.

Mirá, vamos a simplificar la cosa, renombrá los campos de tus tablas (o crealas nuevamente) para que queden así:

CATEGORIAS
CLAVE_CA
NOMBRE_CA
FECHA_CA
CATEGORIA_CA

UNIDADES
CLAVE_UN
NOMBRE_UN
FECHA_UN
CATEGORIA_UN


Con esos nombres el código Delphi es:
Código Delphi [-]
procedure TForm1.FiltrarComboBox;
begin
  IBQuery1.Close;
  IBQuery1.SQL.Clear;
  IBQuery1.SQL.Add('SELECT NOMBRE_UN FROM UNIDADES, CATEGORIAS ');
  IBQuery1.SQL.Add('WHERE CATEGORIA_UN = CATEGORIA_CA AND CATEGORIA_UN = ');
  IBQuery1.SQL.Add('(SELECT CATEGORIA_CA FROM CATEGORIAS WHERE NOMBRE_CA = :NOMB)');
  IBQuery1.ParamByName('NOMB').AsString:= cbCategorias.Text;
  IBQuery1.Open;
  cbUnidades.Clear;
  while not IBQuery1.Eof do
  begin
    cbUnidades.Items.Add(IBQuery1.FieldByName('NOMBRE_UN').AsString);
    IBQuery1.Next;
  end;
  cbUnidades.ItemIndex:= 0;
  IBQuery1.Close
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  IBQuery1.Close;
  IBQuery1.SQL.Text:= 'SELECT * FROM CATEGORIAS ORDER BY NOMBRE_CA';
  IBQuery1.Open;
  while not IBQuery1.Eof do
  begin
    cbCategorias.Items.Add(IBQuery1.FieldByName('NOMBRE_CA').AsString);
    IBQuery1.Next;
  end;
  cbCategorias.ItemIndex:= 0;
  IBQuery1.Close;
  IBQuery1.SQL.Text:= 'SELECT * FROM UNIDADES ORDER BY NOMBRE_UN';
  IBQuery1.Open;
  while not IBQuery1.Eof do
  begin
    cbUnidades.Items.Add(IBQuery1.FieldByName('NOMBRE_UN').AsString);
    IBQuery1.Next;
  end;
  cbUnidades.ItemIndex:= 0;
  IBQuery1.Close;
  FiltrarComboBox
end;

procedure TForm1.cbCategoriasChange(Sender: TObject);
begin
  FiltrarComboBox
end;

Está probado y al igual que el código anterior funciona correctamente. Siempre que los datos sean coherentes, es decir, si las bebidas sin alcohol son categoría A y las que tienen alcohol B, no guardes 'GASEOSAS' poniendo en el campo CATEGORIA_UN una 'B'.

Fijate que remarque en negrita los campos de la consulta en el código Delphi, debes ponerlos textualmente así. Ya que así están definidos en la declaración de la tabla. (No califiques los campos con C1 y C2, tampoco es necesario el uso de AS)

Resumiendo, si copias textualmente este ejemplo desde la creación de las tablas, te tiene que funcionar.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-05-2011 a las 20:30:10.
Responder Con Cita
  #7  
Antiguo 14-05-2011
Rofocale Rofocale is offline
Miembro
 
Registrado: mar 2010
Posts: 182
Poder: 17
Rofocale Va por buen camino
mis categorias no son A Y B son asi
Código Delphi [-]
categorias                                  unidades

nombre   ccategorias                    nombre             nombre2
bebidas   bebidas                         gaseosa            bebidas
licores     licores                          cerveza             licores
                                                agua mineral      bebidas

ahora el codigo que tu me has puesto que funciona bien en el tuyo no me funciona implementandola a mi base de datos... no puedo renombrar los campos
ya que algunos son utilizados en otras partes del programa para poder seguir creando mas categorias y unidades etc.. pero en resumidas cuentas los campos asi tengan el mismo nombre u otro deberia de funcionar
no se que este mal en mi casa hay problema con lo mio y no se como solucionarlo ya que efectivamente si solo me hago un programa chikito con 2 combobox y la base de datos como me lo has puesto si funciona, no se que hacer
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
ayuda con combobox mdcynsk PHP 2 21-10-2010 15:20:37
Curiosidad While anidado con ADO lpedrazzi Conexión con bases de datos 0 30-11-2007 15:04:54
Query Anidado Ricsato SQL 4 06-11-2006 21:58:26
Ayuda con ComboBox pecosita C++ Builder 2 17-09-2006 02:38:26
Select anidado erika.martinez SQL 2 02-02-2006 12:19:57


La franja horaria es GMT +2. Ahora son las 07:28:56.


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