PDA

Ver la Versión Completa : dbcombobox no muestra los valores encontrados por un query


Ramon Mendoza
18-01-2010, 19:49:46
Hola. Espero puedan ayudarme con este problema, estoy muy nene en esto de la programación y necesito de su ayuda.

Tengo una BD de access(hecha a partir de un excel) en la cual el campo 'REGION' tiene repetida muchas veces las 8 regiones (digamos q unas 900 veces cada una), por lo tanto puse un sqlquery y por medio de esta poder filtrarlos, ('Select distinct region From 2001 order by region'); conecte un dbgrid y un combobox al datasource del query, en el dbgrid si se muestran las 8 regiones pero en el dbcombobox no, sólo me muestra la primer region, alguien podria decirme porque pasa esto??? y como puedo solucionarlo????


Gracias.

rgstuamigo
18-01-2010, 20:22:27
Hola. Espero puedan ayudarme con este problema, estoy muy nene en esto de la programación y necesito de su ayuda.

Tengo una BD de access(hecha a partir de un excel) en la cual el campo 'REGION' tiene repetida muchas veces las 8 regiones (digamos q unas 900 veces cada una), por lo tanto puse un sqlquery y por medio de esta poder filtrarlos, ('Select distinct region From 2001 order by region'); conecte un dbgrid y un combobox al datasource del query, en el dbgrid si se muestran las 8 regiones pero en el dbcombobox no, sólo me muestra la primer region, alguien podria decirme porque pasa esto??? y como puedo solucionarlo????


Gracias.
Hola amigo Ramon Mendoza, bien venido al club, como eres nuevo por aqui te recomiendo(si no lo has hecho) leer la guia de estilo (http://www.clubdelphi.com/foros/guiaestilo.php) para conocer ciertas normas o reglas del foro.
Sobre tu problema, te comento que el componente DBComboBox , no trabaja asi, como tú estas esperando y creo que una leida a la ayuda de Delphi te va despejar la duda.
En realidad el componente DBComboBox actúa semejante a un DBEdit, ¿pero cual es la diferencia?:confused: diras, tú, lo que pasa es que el DBComboBox puede utilizarse para selecionar los datos(previamente cargados) y asi evitarse escribir como es normalmente en un DBEdit, es ahi la diferencia ;).
Eso es bueno para optimizar la carga de datos y para hacerle mas facil el manejo al usuario, de esa manera el usuario solo seleciona un item(al editar o insertar) que se encuentra en el DBcombobox.;)
La carga de los item, debes hacerlo manualmente.
Si tienes dudas, te recomiendo(como te dije anteriormente) leer la Ayuda de Delphi.
Saludos...:)

Ramon Mendoza
18-01-2010, 21:01:17
Ya las leí y creo q me exprese de una manera correcta, dime tu si no es así para tratar de hacerlo en futuras consultas.

Y con respecto a mi problema busque y busque y encontre una solucion que adapte a mis necesidades.

While not modulodedatos.Query2001.Eof do
Begin
dbComboBox1.Items.Add(modulodedatos.query2001.FieldByName('Region').AsString);
modulodedatos.query2001.Next;
End;


Saludos y gracias nuevamente.

Chris
18-01-2010, 21:08:40
La explicación catedrática dada por rgstuamigo es muy valida. El componente que tú necesitas se llama TDBLookupCombobox. Lee la ayuda de Delphi para aprender como funciona este control. Lo que lo diferencia a éste control de TDBCombobox es que el primero carga los varoles de un TDatasource automáticamente y puede mostrar el valor, por ejemplo del campo NOMBRE y guardar en tu tabla el valor del campo ID. De esta forma es más amigable hacia el usuario final.

Por otro lado, a pesar de ser muy útil, yo no suelo usar ni recomiendo usar el componente del que estoy hablando, pues me parece una implementación mediocre y poco usable/intuitiva de lo que es un TCombobox