Filtro de Datos en ComboBox

Buenas Ravenn.
Quisiera saber si me puedes ayudar en lo siguiente:
En una BD Tengo una tabla llamada MarcaPC (Donde registro la marca de un Computador).
Marca, modelo
Tengo otra tabla llamada ModeloPC(Donde registro el modelo de un Computador)
Mediante un ComboBox muestro las marcas de PC.
Quisiera mediante otro ComboBox filtrar todos los modelos que correspondan a una misma marca, es decir que solamente me aparezca en el comboBox los modelos de la marca que selecioné en el ComboBox MarcaPC.
Le agradezco me pueda colaborar.

1 Respuesta

Respuesta
1
Tu caso va así:
1. En la tabla marca y en la tabla modelo, pone un campo numérico en donde almacenes un numero de referencia para cada registro (o producto). Para efectos de ejemplo, supongamos que el campo se llama "ID". Por ejemplo, si tienes 10 registros de marcas y 10 de modelos, cada registro tiene un numero o código de identificación. Ese mismo numero debe estar en ambas tablas. Así vas a poder hacer la referencia correcta al hacer el filtro.
Las tablas te deben quedar así: "Marcapc" con los campos id, marca. La tabla "modelopc" con los campos id, modelo.
2. Coloca tus tablas en el entorno de datos de tu form y relacionalas, arrastrando el campo en común (ID) desde la tabla marca y soltalo sobre el campo (ID) de la tabla modelo. **Nota: ambos campos deben ser indices regulares!
3. Coloca 2 combos (combo 1 y combo2). El combo 1 te va a mostrar todos los ID de las marcas y el combo 2 todos los modelos. Aquí es donde estableces el filtro. Anda a la ficha datos de la ventana de propiedades y va asi: para el combo 1, rowsourcetype 6 - fields y en rowsource: marcapc.id     Para el combo 2, rowsourcetype = 6 fields y rowsource = modelopc. Modelo. En el evento Interactivechange del combo1, pone así:
PUBLIC pbcod
nnum1 = VAL(THISFORM.Combo1.Value)
SELECT modelopc
SET FILTER TO modelopc.id = pbcod
THISFORM. Refresh
Y listo! Te debe funcionar. Cualquier cosa, me avisas! :D :D :D
Excelente, he captado a pie de letra la idea, sin embargo obtengo otro resultado no esperado, que es debido a una serie de confusiones que se me presentan y tal vez me puedas orientar en ésto:
1- Tengo 2 tablas:
1.a- MarcaPC (ide, descripción)
1.b- ModeloPC(ide,descripcion)
2- Mediante un ComboBox seleciono la marca de la pc a registrar.
3- En el otro ComboBox quiero que me aparezcan todos los modelos de una marca en común, ésto quiere decir que para una marca yo puedo tener varios modelos.
3.A - ¿Cómo podría almacenar o manejar una marca de pc y sus distintos modelos?, dado que podría tener: Ej.
Marca:
- Toshiba
- Asus
- Sony
- HP
Modelos:
- Satellite C655-SP5019L
- Satellite C655D-SP4131L
- Satellite L655-1E9
... Entonces que si selecciono en el primer ComboBox la marca Toshiba: Me desprenda únicamente los Modelos que corresponden a la Marca Toshiba y así sucesivamente con cada una de las marcas: Qué solamente se desprenda en el ComboBox los modelos correspondientes a esa marca.
Le agradezco la colaboración de antemano.
¿Qué resultados te da el probar la opción que te ofrezcco? o.¿o?
Gracias.
Me da un error que dice:
"Incompatibilidad entre el tipo de operador y el tipo de operando"
- Otro asunto es: El combo1 me muestra el ID de la MarcaPC, yo quiero que me muestre la Marca (Descripción).
Comprendo! Para que te muestre la marca, lo que debes hacer es enlazar el combo al campo de marca de la tabla. El campo debe ser el enlace común (relación) entre las tablas. Y al hacer el filtro, debes cambiar la condición:
PUBLIC pbcod 
nnum1 = ALLTRIM(THISFORM.Combo1.Value) 
SELECT marcapc 
SET FILTER TO marcapc.id = pbcod 
THISFORM. Refresh
Así, estableces el filtro para el campo marca, poniendo disponibles unicamente los registros (modelos) de la marca que buscas! Te había dicho que lo hicieras por id.. pero realmente era porque, en mi humilde opinión, es más practico codificar los productos y así el acceso a ellos mediante filtros o consultas, puede llegar a ser más cómodo! Pero aclaro... es solo mi humilde opinión! Ves! Je je! Si te sigue dando algún problema, avisame para que veamos!
A tus ordenes!
Ravenn! :D :D :D
Me continua dando el error:
"Incompatibilidad entre el tipo de operador y el tipo de operando"
- ¿Es conveniente agregarle un campo que se llame "marca" a la tabla ModeloPC?, dado que se tiene por un lado la Marca y por Otro el Modelo, ¿sin embargo cómo relaciono por marca con por modelo?
Gracias por la colaboración.
- ¿Qué otro mecanismo podría utilizar para este caso?,
Lo que pasa es que en ambas tablas debe haber un campo común que tenga "los mismos datos"! A través de esos campos se establece la relación que te permitirá "llamar" una marca y mostrar sus modelos! Anteriormente, yo te propuse usar un campo numérico de identificación "id". Pero a como dices que requieres hacerlos por "marca", (carácter) entonces si debes tener ese mismo campo en ambas tablas... si no, ¿cómo vas a relacionar los datos? Ves! :) El error de incompatibilidad surge cuando intentas hacer referencia a un campo o valor con un tupo de datos invalido. Revisa tus campos y códigos!
Mira... hagamos esto! Facilitarme una cuenta de correo electrónica para enviarte un ejemplo. O me escribís a mi correo también ([email protected]) Así podrás ver que sencillo es y podrás ver mejor y más fácil como debes proceder! Jaja!
Gracias!.
Salomónica Idea. Ahí te va un e-mail.
Ok! He recibido tu email y te he enviado un ejemplo sencillo para el uso de combos que te prepare!
No olvides cerrar la pregunta y puntuar por favor! Cualquier cosa... por aquí ando je je!
Saludos!
Desde Managua, Nicaragua.
:d :D:D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas