![]() |
Ayuda con ComboBox
Hola, primero que todo decir que he buscado algo en el foro relacionado y de momento no he encontrado nada.
Tengo una tabla ej. Paises con idPais (integer) y Pais (nvarchar) Cuando voy a crear una ficha nueva de un usuario desplego en la forma un ComboBox (nada de controles DB) y leo todos los paises y se lo asigno a los items de ese combobox. Resumiendo, me queda un combobox con todos los paises. Ahora, a la hora de crear el registro en la tabla clientes, esta tiene un campo que se llama idPais. Alli debo poner el id del pais seleccionado en el combobox. Para eso normalmente yo busco en la tabla el nombre del pais y saco su Id y se lo asigno al cliente, muy bien. Pero hay un problema, en caso de que halla 2 paises iguales (sean abiertos porque esto me sirve para otras tablas que si tienen nombres de articulos iguales pero no son los mismos) a la hora de buscar el pais puede que asigne al usuario el pais erroneo, no se si me entienden. Pudiera poner en los items del combobox la cadena ej xx- Espana, y a la hora de poner el idPais al cliente buscar la xx y asignar ese valor, pero no me gusta que en el combobox esten los id. Mi pregunta (al fin), puedo poner como especie de un campo oculto en los items del combobox a la hora de asignarlos de tal forma que yo sepa cuando escojo españa que es el id 72???? Espero haberme echo entender y muchas gracias. saludos |
Hola paladincubano, yo utilizaría un StringList para llenar los Id.
En el momento en que llenas los datos en tu ComboBox
Ahora en el momento que quieras recuperar el codigo, solo sería acceder al StringList en la posición en la que esta tu ComboBox.
Pero también puedes utilizar un BDLookUpComboBox. Saluditos |
Ya gracias por tu ayuda y lo rapido en contestar. Pero ya habia pensado en hacer eso, de echo, lo habia implementado en algunos casos que necesitaba con mucha frecuencia. Pero no se, mucho trabajo, por eso preguntaba si habia alguna forma de hacerlo directamente en el combobox con InsertObject o algo asi. Si no hay otra forma de hacerlo, pues bueno, siempre queda eas que dices que por supuesto es mejor que la que yo implemento a veces que es buscar el nombre en la base de datos y sacar el id (cuando no se repiten datos).
de todas formas gracias de nuevo. |
Puedes usar una rutina genérica:
ya sólo tienes que llamar a esta rutina con ... o usar un DBLookUpCombobox, (aunque no tendrá todas las funcionalidades, pero bueno. Saludos |
Vale, encontre lo que buscaba.
http://www.clubdelphi.com/foros/show...light=combobox gracias por todo. Edito: Por si a alguien le sirve mas explicito el codigo es: ComboBox1.Items.AddObject(DM.Query1['Pais'],TObject(Integer(DM.Query1['idPais']))); y para sacar el id es: Index:= Integer(ComboBox1.Items.Objects[ComboBox1.ItemIndex]); |
La franja horaria es GMT +2. Ahora son las 00:44:12. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi