Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Datos Combobox que no se repitan (https://www.clubdelphi.com/foros/showthread.php?t=52078)

XaSu 09-01-2008 20:11:39

Datos Combobox que no se repitan
 
Holap!

tengo un pequeño problema (según yo... , espero que si :D), eh buscado y eh encontrado varios hilos de combobox pero ninguno hasta el momento sobre el problema que tengo,

bueno les cuento tengo una tabla llamada cargas (en access) dentro de ella tengo un campo llamado fecha, estas fechas puede que se repitan, de echo se repiten algunas, en mi programa tengo un combobox en el cual al apretar un boton X, la idea que este combobox se complete con las fechas de la tabla antes nombrada, cargas, me resulta todo bien, pero necesito que al llenar este combobox no se repitan las fechas, como puedo hacerlo :confused:


de ante mano muchas gracias


XaSu!

cHackAll 09-01-2008 20:30:20

Código Delphi [-]
 if ComboBox1.Items.IndexOf(fecha) = -1 then
  ComboBox1.AddItem(fecha, nil);

Donde fecha es el nombre d euna variable que contiene la "fecha" en string.

Saludos

XaSu 09-01-2008 21:01:14

me funciono bien.

muchas gracias a ti y a los que hacen de este foro un gran sitio para los que estamos recién aprendiendo este lenguaje.


XaSu!

Delphius 10-01-2008 02:05:03

Hola XaSu,
La otra opción a considerar es que en vez de usar un TTable emplees un TQuery. Con este componente puedes lanzar una consulta de este tipo:

Código SQL [-]
select distinct fecha from tu_tabla

Tengo que admitir que no recuerdo bien en este momento si Access permite la cláusula distinct. Al menos en SQL Server funciona... no recuerdo si en Access. La idea es de antemano extraer los datos y dejar al motor que se encargue de la tarea sucia: eliminar los repetidos.

Ya sólo lo que debes hacer es recorrer el conjunto de registros de el DataSource e ir agregandolos al ComboBox.

O, si no deseas hacerlo de ese modo puedes optar por emplear un StringList y llenarlo con el contenido del campo adecuado. Pero claro, para que esto funcione debes tener seteado lo siguiente:

Código Delphi [-]
Lista := TStringList.Create;
Lista.Sorted := true; //que estén ordenados... requisito indispensable.
Lista.Duplicates := dupIgnore; // que ignore los duplicados

... aqui llenas el TStringList...

// Asociamos el contenido del stringlist al combo...
ComboBox1.Items.Assign(Lista);

// y por último liberamos el TStringList;

Lista.Free;

En lo personal prefiero la opción del TQuery. Me parece que es la más flexible y sencilla de llevar a cabo. Yo me baso en la idea de que si de antemano podemos limitar el contenido a mostrar... pues hacerlo.

Y si recién estás aprendiendo... Te recomiendo la lectura de el libro (pdf) La Cara Oculta de Delphi 4, disponible en el FTP del club y unos ejemplos que puedes encontrar en la wiki.

Espero que se entienda la idea.

Saludos,

XaSu 10-01-2008 12:55:43

igual muchas gracias Delphius, pero ya tenia un poco de código, solo me faltaba para que no se repitieran las fechas, así que le puse el código que puso cHackAll y me funciono altiro.


y sip, soy nuevo en este lenguaje y sobre el libro la cara oculta de delphi 4 lo eh estado leyendo.

igual gracias


XaSu!


La franja horaria es GMT +2. Ahora son las 11:25:02.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi