PDA

Ver la Versión Completa : Mostrar datos en DBcombobox


Un abrazo
15-05-2003, 10:49:17
Quiero mostrar todas las filas de una columna llamada idiomas en un DBcombobox y solo me muestra la primera fila.

¿Como prodría hacer que me muestre todas las filas?

Un abrazo...

andres1569
15-05-2003, 15:32:47
Hola:

No lo acabo de entender, o bien la tabla está filtrada, o enlazada como detalle de otra, por lo cual no te aparecen todas las filas.

Prueba de poner un TDBListBox a ver si te ocurre lo mismo.

Un saludo

judoboy
15-05-2003, 16:39:32
A mi me pasa lo mismo, con un TDBListBox, si que funciona, pero yo también quiero utilizar un DBComboBox, y no se como hacerlo.

Y la tabla no esta filtrada ni nada de nada.

delphi.com.ar
15-05-2003, 16:49:55
Yo te recomendaría utilizar un TDBLookupComboBox, en las propiedades ListSource y ListField, asignar el datasource y seleccionar el campo a mostrar. Las propiedades DataSource y DataField, es donde va a guardar este dato seleccionado.

Suerte!

Un abrazo
16-05-2003, 10:41:53
Yo te recomendaría utilizar un TDBLookupComboBox

Pero el problemas es que en el programa cuando despliegas la lista solo sale un registro y un scrollbar vertical pequeño. ¿ Como hago para que me salgan todos los datos al desplegarlo y no tener que darle a la barra vertical?

Un Abraaazo.

gracias a todos por las respuestas.

judoboy
16-05-2003, 12:53:53
Para esto exite una propiedad DropDownRows, donde indicas el número de registros que quieres que te muestre a la vez.

delphi.com.ar
16-05-2003, 17:00:50
Posteado originalmente por Un abrazo
Pero el problemas es que en el programa cuando despliegas la lista solo sale un registro y un scrollbar vertical pequeño.

¿Seguiste los pasos que te indiqué anteriormente cargando los ListSource y ListField?

Ruben_Cu
17-05-2003, 02:23:06
Hola, Otro Para Ti, si he entendido tu pregunta quieres desde una tabla cargar los nombres de los idiomas para poder escogerlos, filtrarlos, etc.
Si es como imagino el DBComboBox no es tu solución está concebido para otra función de ahí que solo veas el primer registro y al desplegar lo veas vacío.
En realidad su función básica es a partir de los valores pre-establecidos en su propiedad Items sustituirlos o introducirlos en el registro corriente de la tabla asociada.
Si tus datos son provenientes de una tabla, cosa que no aclaras, yo prefiero el uso del ComboBox y con un bucle cargar los datos requeridos, esto si es muy simple e incluso si tus idiomas ya están definidos y no te interesa introducir nuevos puedes teclearlos en tiempo de diseño (esto no me gusta rigidiza la aplicación).
Quisiera saber en realidad donde esta tu fuente de datos y quizas te pueda brindar mejor solución.
Si buscas en los históricos encontrarás respuestas de este tema.
Saludos

roman
17-05-2003, 04:08:51
Posteado originalmente por Ruben_Cu
Si tus datos son provenientes de una tabla, cosa que no aclaras, yo prefiero el uso del ComboBox y con un bucle cargar los datos requeridos
¿No es mejor lo que propone delphi.com.ar con el TDBLookupComboBox?

Aún si no desea usarlo para editar un campo en una tabla relacionada puede usarlo prescindiendo de las propiedades DataSource y DataField. El combo se llena automáticamente con los valores de la tabla referenciada por ListSource.

// Saludos

Ruben_Cu
17-05-2003, 06:20:31
Posteado originalmente por roman
¿No es mejor lo que propone delphi.com.ar con el TDBLookupComboBox?

Tienes razón Roman
Creo es menos trabajo y mejor solución la que propone delphi.com.ar si lo que se quiere es ver todos los registros del campo, pero si quisieramos filtrar en la misma tabla y traer al control los valores sin repetirlos entonces no se como hacerlo con el TDBLookupComboBox mientras que con el combobox se pueden cargar valores iguales una sola vez sin que se repitan aunque esten repetidos en los registros.
Creo que depende de lo que se quiera hacer.
Lo que tambien pretendía era dejar claro el común error de pensar que el DBComboBox puede visualizar todos los registros de un campo función que si es valida para el DBLookupComboBox.
Gracias por tu oportuna aclaración.
Saludos

Un abrazo
19-05-2003, 09:53:03
Respecto a la pregunta de si los datos salen de una tabla, pues si, salen de una.

Y ahora me viene otras preguntas que son:

Utilizando el TDBLookupComboBox como consigo mediante el codigo obtener un dato de la lista, es decir, si tengo 3 idiomas en la tabla, y en el TDBLookupComboBox aparecen los tres Ej. Español, Ingles Aleman. ¿Como hago que me aparezca por defecto en el programa el idioma que yo quiera?


Y a Ruben_Cu le queria preguntar, en caso de hacerlo con un ComboBox ¿como obtengo los datos de la tabla para guardarlos en el bucle?

Un Abraaazo.

Angel
19-05-2003, 11:22:18
la solución si no me equivoco es la siguiente.... al menos yo lo tengo resuelto así.

cuando abrais la tabla del lookup debeis iros al último registro. con esto se soluciona el problema.

Es decir, imaginaros que abrís un formulario y al activarlo activais todas las tablas, y la tabla del lookup se llama idiomas, pues bien, el en evento onActivate del formulario debereis escribir:

idiomas.last;

con esto os mostrará todas las opciones en el lookup.

Ya que se no es "muy elegante" porque tiene que recorrer todos los registros, pero de esta forma seguro que se soluciona

roman
19-05-2003, 16:41:56
Posteado originalmente por Un abrazo
Utilizando el TDBLookupComboBox como consigo mediante el codigo obtener un dato de la lista, es decir, si tengo 3 idiomas en la tabla, y en el TDBLookupComboBox aparecen los tres Ej. Español, Ingles Aleman. ¿Como hago que me aparezca por defecto en el programa el idioma que yo quiera?


Utiliza la propiedad KeyValue del DBLookupComboBox. Su valor debe corresponder al KeyField que asignaste al control.

// Saludos

Ruben_Cu
20-05-2003, 01:07:51
Posteado originalmente por Un abrazo
Y a Ruben_Cu le queria preguntar, en caso de hacerlo con un ComboBox ¿como obtengo los datos de la tabla para guardarlos en el bucle?

Con relación a tu pregunta, puedes colocar estos códigos en el evento OnCreate de tu form y tendrías los idiomas al mostrarse el formulario, puedes utilizar la propiedad Sorted a true para que se visualicen en orden alfabético y obtener un valor por defecto con la propiedad ItemIndex, en el ejemplo te mostrará el item número uno o sea el segundo de la lista.
Para ordenar alfabéticamente con el DBLookupComboBox la única forma que conozco es creando índice secundario para el campo Idiomas no es posible en el control.

with TuTabla do
begin
DisableControls; //puede no ser necesario
first;
while not eof do
begin
if (ComboBox1.Items.IndexOf(FieldByName('Idiomas').AsString)=-1)then //en caso que existan registros iguales solo cargaría uno
ComboBox1.Items.Add(FieldByName('Idiomas').AsString);
next;
end;
EnableControls; //puede no ser necesario
end;
ComboBox1.ItemIndex:=1;

Espero que mis comentarios te ayuden
Un abrazo;)

Un abrazo
20-05-2003, 10:18:31
Gracias a tos por responder. Ya me mustra todos las filas en la lista... ahora lo que me falta es poner uno como predefinido.

¿Como seria para que me aparezca en el Edit 'Español' Siempre por defecto?

Un abraazo.

Un abrazo
20-05-2003, 10:33:51
Ya consegui poner el Español por defecto. Gracias a todos.

Un abraaazo.

samcrack
28-03-2008, 15:46:17
Estimado amigo, estube con la misma pregunta de como mostrar una base de datos en un combobox y tu respuesta fue de gran ayuda. Gracias.:)