PDA

Ver la Versión Completa : Datos Combobox que no se repitan


XaSu
09-01-2008, 20:11:39
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
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:

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:

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 (http://www.terawiki.clubdelphi.com/) del club y unos ejemplos que puedes encontrar en la wiki (http://wiki.clubdelphi.com/).

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!