![]() |
Añadir elementos sin repetir
Hola, yo relleno un ComboBox, con elementos de una tabla, de la siguiente manera:
Pero por ejemplo, tengo servicios con el mismo nombre, pero con otros valores de campo diferentes, como ser: (CAMPOS) SERVICIO VARIABLE (VALORES) "Limpieza" "Alfombra" "Limpieza" "Cortina" "Limpieza" ...etc.... Yo lo que hago es a su vez, rellenar otro ComboBox, con los valores de VARIABLE segun el SERVICIO seleccionado, y me funciona perfectamente. Mi pregunta es la siguiente: - Como puedo agregar elementos a un ComboBox sin que estos se repitan si son iguales??? Por ejemplo si hay un servicio "Limpieza" con 10 variables, quiero que se agregue solamente uno solo "Limpieza" puesto a que en el otro ComboBox ya estoy cargando sus variables. El segundo ComboBox lo relleno de la siguiente manera, sin ningun problema:
Realmente no se como hacer para agregar un elemento sin que se repita si hay 2 o mas con el mismo nombre, estuve intentado cosas, pero por ahi me muestra la mitad, algunos los repite, otros ni los muestra.... en fin Si alguien me puede dar una mano se lo agradecere. Saludos y Gracias |
Puede que diga una tontera pero:
¿En la consulta que lanzas para llenar el combo de los servicios tienes la clausura DISTINCT? Ahora, no dices en que base de datos estás trabajando... EDITO: Me confunde tu código. Por lo que veo, en tu primer código lo que haces es llenar los servicios en el combobox2. Pero en el código siguiente estás consultando los servicios que concidan con el texto seleccionado de dicho combo. A mi modo de entender, tu código dice una cosa pero tu escrito dice otra: Cita:
Saludos, |
algo asi use en su momento...
hola, al menos en teoria lo que debes hacer es antes de introducir el elemento chequeando que no este y si es asi introducirlo....
yo haria una function llamada buscar en combo
luego antes de introducir el elemento haria algo asi
Espero que te sirva.... Saludos.... |
Hola
Si no me equivoco este anda perfectamente es para dos listbox, no debería haber problemas en aplicarlo a un combobox. Saludos |
Cita:
Saludos |
Pues como te dije, en la consulta deberías poner la clausura DISTINCT. Con esto no devolvería los repetidos.
Tan solo deberías hacer:
un SQL como esto:
Saludos, |
Yo lo haría asi, asumiendo que Edit1 es el componente que usaras para introducir datos a ese ComboBox1:
|
Esto me pasa por no leer bien la cuestión y andar de nuevo con mis prisas, si sigue el consejo de Delphius sera mas eficiente pues el sql traerá los datos sin repetirlos...
Mi ejemplo te sirve por ejemplo, en caso de que estuvieras alimentando los datos desde un Edit o algo por el estilo. |
Cita:
pero me salta: List Index out of bounds(3) Saludos |
SOLUCIONADO
Lo solucioné, el error estaba en la sintaxis SQL, ya que justamemte en la tabla servicios, tenia dos campos, uno servicio y el otro servicios, y los consulte invertidos, eso era todo. Por las demas respuestas estan muy buenas y me son de mucha utilidad, ya que no siempre relleno con datos de una base de datos. Archivado. Saludos y Gracias |
Hola
No me di cuenta que estabas trabajando con bases de datos, disculpame por enviar código que no es lo que necesitabas. Me alegra que hayas solucionado el problema. Saludos |
otra forma de llenar el combobox a partir de un clientdataset
no quiero decir que las formas anteriores de solucionarlo no son validas, solo quiero aportar una forma diferente de hacerlo,
llegue hasta aqui buscando como llenar un combobox desde un clientdataset, no me apetece hacer otra consulta sql con distinct porque estoy partiendo del hecho que ya tengo la informacion en un clientdataset, solo quiero que el combobox coincida con la informacion del clientdataset que estoy mostrando en un grid este es mi codigo
la informacon consultada son pocos registros, no mas de 50, de esta manera evito enviar otra consulta por separada al servidor sql |
Para que pones a Prepared := True el query?
Otra cosa, TStrings ya implementa esta funcionalidad, y es configurable mediante las propiedades Duplicates y CaseSensitive Por otro lado la solucion es apta para cualquier TStrings, el ComboBox tiene poco que ver aca |
La franja horaria es GMT +2. Ahora son las 00:39: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