![]() |
ayuda combobox anidado
hola a todos.. espero que esten bien... tengo una nueva pregunta jeje
tengo dos combobox:
lo que quiero hacer es que si en el combobox esta puesto bebidas solo me muestre en el 2do combobox cervezas, jugos y no toda la lista y si es licores: cervezas, vino la info la saco de una BD hecha en firebird gracias espero me puedan ayudar otra vez cuidense |
Hola Rofocale.
Una forma podría ser:
Saludos. :) |
Hola
Necesitas un campo tipo asi con solo definir el tipo saldra lo que necesitas. Saludos |
si las categorias en los combobox crecen osea les inserto mas, el codigo seria enorme.. otra forma de hacerlo si es que en cada combobox hubiera unas 60 categorias ?
gracias |
Cita:
¡ No quiero ni imaginar 60 items en cada ComboBox con ese código... cinco días tecleando!!! :D Me parece que si la lista puede crecer de forma indefinida, es más fácil hacer las inserciones, relaciones y mantenimiento usando dos TDataSet. Saludos. :) |
lo se.. solo que estoy practicando y queria una forma de anidar 2 combobox con codigo pero de una mejor manera de la que se muestra arriba porque el codigo se agrandaria demasiado si en un combobox se listara items
|
Pues como te dice ecfisa,tendrás que hacerte dos tablas, maestro y otra detalle, en la primera pondrás las familias de bebidas y en la segunda rellenaras la bebida con la familia a la que pertenece, entonces enlazas estas tablas con un adoquery1 a un dblookcombobox, por ejemplo, y cuando selecciones la familia en el primero que te filtre en el segundo las bebidas que pertenecen a esa familia.
Un saludo. |
de esta manera utilizo el codigo para cargar leer los datos desde la base de datos y cargarlos a los combobox.. ahora quiero filtrar de la tabla categoria que hay bebidas y licores y en la tabla unidades hay cervezas,jugos,vinos,gaseosas
se que es una manera facil como me han dicho haciendo un maestro/detalle.. pero estoy practicando y lo estoy haciendo con codigo.. utilizo combobox en vez de dbcombobox y bueno no se como poder hacer el anidamiento mediante codigo alguna idea ? gracias
|
Hola Rofocale.
No pusiste la estructura de los datos, así que voy a tratar de inferir ... Supongamos que declaraste:
Y tenes ingresado: TBCATEGORIAS ------------ A BEBIDAS B LICORES TBUNIDADES ---------- A GASEOSAS A JUGOS B VINOS B LICORES A LICUADOS B AGUARDIENTES Siendo cbCategorias y cbUnidades de tipo TComboBox, una forma de hacerlo puede ser:
Saludos. :) |
Filtro
|
siendo
]
|
alguien que pueda saber por ahi como puedo filtrar los datos de 2 combobox ? mediante codigo tal como menciono arriba ?
gracias de antemano |
Hola Rofocale.
Cita:
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:
Al seleccionar la categoria en cbCategorias filtra el combo cbUnidades acorde a la categoría seleccionada. Saludos. |
no me filtra :( me siguen apareciendo en el combobox unidades.. los datos de forma triplicada
necesito ayuda :( |
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. |
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. |
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)
ah y uso combobox de devexpress seria en el evento propertieschange y en el formshow
algo debo estar haciendo mal porque porque al seleccionar licores no me filtra y mas bien ya aparecen triplicados todos en el segundo combobox :( |
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:
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. |
mis categorias no son A Y B son asi
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 :( |
Hola Rofocale.
Modifique los nombres de campos en las tablas que utilicé en la prueba por los que pusiste en tu mensaje. Esta consulta funciona correctamente:
Saludos. |
hola eficsa gracias por ponerle empeño para ver si me funciona pero hasta ahora me sigue duplicando los items ese codigo si lo quito aparece nombre todo osea
ahora si lo vuelvo a poner sale asi
alguna idea que haya hecho mal en mi programa para que no me filtre ? gracias |
Hola Rofocale.
Cita:
Como no me es viable enviarte el código de ejemplo con la BD de Firebird, tuve la ingrata tarea de pasarlo a Paradox :mad:. Tál como esperaba funciona correctamente. Te va a servir para que puedas controlar los datos ingresados en las tablas, cosa que hasta ahora no podías. Tal vez así puedas encontrar donde está el problema. Para probarlo create una carpeta temporal, descomprimí el archivo .zip allí (fuentes y tablas), y ejecutalo. Un saludo. |
eficsa debido a que no hice esto desde un principio no podia saber que era lo que fallaba... y lo que falla hasta ahora son los combobox de devexpress, los quite y puse los combobox normales y estos me filtran perfectamente...
a que se debera :S |
una pregunta debido a este filtrado como te digo ahora funciona bien con los combobox normales me filtra los datos de mi base de datos..
ahora te explico es un formulario pequeño el que tengo donde lleno unos datos en unos edit sobre bebidas galletas etc.. de una tienda y mediante los combobox los selecciono por categorias y los guardo ahora a la hora de si quiero modificar el articulo lo selecciono pongo modicar me muestra todos los datos en los edit a excepcion de los combobox siempre aparecen en blanco alguna opcion para que tambien me aparecesa en los combobox al momento de recuperar los datos bebidas gaseosa ? gracias |
Hola.
En algún punto de tu código deberás indicarle al combo donde debe situarse, algo como:
Nota: El ejemplo es para darte una idea como poner en el ComboBox el item actualmente seleccionado en un DataSet. Ignoro el nombre del DataSet y del campo; así como también la organización del código. Saludos. |
hola tambien lo hago similar
y funcionaba perfecto antes de que se filtrar cuando todo estaba sin filtrar este al recuperar los datos se mostraban perfectamente.. ahora probando cada linea del filtrado
ahora con el filtrado no tengo mucha idea de como hacer que tambien se muestre la posicion guardada cuando lo recupero para modificarlo gracias |
Cita:
No entiendo muy bién la situación. Es decir no veo la relación de la consulta que hemos venido trantando que sólo te devuelve el campo NOMBRE de la tabla UNIDADES para llenar un ComboBox y la asignacion de los valores de los campos a los Edits. Tal vez si explicaras un poco más como traes los datos para que sean asignados a los Edits y como realizás la modificación... Saludos. |
con esto recuperaba los edits y combobox.. ahora con el filtrado se recupera todos los edits normal pero los combobox no se muestra lo recuperado solo salen limpios.. como para seleccionar y elegir de nuevo.. aunque claro las posiciones estan guardadas solo que no se muestran.. si le quito el filtrado si se muestran normal |
Hola.
Supongo que podrías encapsular la carga de los combos dentro de un procedimiento:
Luego al principio del procedimiento RecuperaDatosBusq, podrías hacer: Creo que debería funcionar. Pero vas a tener que probarlo vos, yo no tengo modo de comprobarlo. Saludos. |
hola eficsa solo recupera el primer combobox el segundo el de unidades sale en blanco :S
|
Hola Rofocale.
Con tanta ida y venida de código se me olvidó borrar una línea ... :o Probá quitando la última línea de código del procedimiento CargarComboBox:
Saludos. |
Hola
Y yo pense que tenia paciencia. Amigo, eres un santo (San ecfisa), lo que no aseguro es que seas virgen y mártir :D:D Saludos |
si le quito ya no filtra aparecen repetidos todos :S
|
Cita:
Saludos.:) |
Amigo Rofocale, creo que ahora vas a tener que empezar a hacer un seguimiento del código...
No quiero que me terminen canonizando (o peor aún ) ... :) Saludos. |
caral entro y malogro mi aprovechamiento hacia ti jeje :p
gracias eficsa de todas maneras me ayudaste en lo que realmente queria que funcionara el filtrado con el codigo que me pusiste.. ya ire viendo que es lo que falla gracias |
Hola Rofocale.
En realidad no tiene nada que ver la intervención del amigo Caral, es que no puedo continuar con las pruebas ya que se involucran otras tablas y datos a los cuales obviamente no puedo acceder... Y no hay problema por que nos aprovechen mientras tengamos un poco de tiempo libre, estamos aquí por gusto. ;) Un saludo.:) |
La franja horaria es GMT +2. Ahora son las 05:57:43. |
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