Visual Basic - Lista para combobox

Life is soft - evento anual de software empresarial
 
Vista:

Lista para combobox

Publicado por Andres (16 intervenciones) el 03/04/2006 14:43:30
Hola a todos, ojala me ayuden.
Tengo una bd la cual contiene varias columnas, las dos primeras son "Año" y "Mes".
obviamente el año se puede repetir hasta doce veces, pero no siempre es asi.....
la idea es ingresar los años a una lista para un combobox, pero no los años que se repiten.
Actualmente ya tengo en un array todos los años de la bd pero no he encontrado un metodo que elimine los que se repiten. Ej:

Año: 2001, 2002, 2001, 2005 , 2006, 2000, 2005, 2004, 2003, 2001.

Mi array contiene 10 elementos, pero deberia contener 7 elementos (sin los años que se repiten ) y ademas ordenados cronologicamente.....

AYUDA PLISSSSSSSSSSSSS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Lista para combobox

Publicado por Matías freire (421 intervenciones) el 03/04/2006 15:44:16
Para cargar los los años sólo una vez (o sea, que no se repitan), tienes dos alternativas:

1) Haces una consulta para que te traiga sólo los años y sin repetirse. Ejemplo:
si tu SQL actual es:
SELECT * FROM Mitabla WHERE ...........
tendria que quedar
SELECT DISTINCT Año FROM MiTabla WHERE........ ORDER BY Año
la opcion DISTINCT te traerá un registro por cada año (sin que se repitan). ORDER BY te los ordena Ascendentemente (si después de ORDER BY Año le pones DESC te lo hará descendentemente). En ambos casos el where tiene que ser el mismo, con lo cual esto nos devolverá una recordset de un solo campo con los años (sin que se repitan) y ordenados cronologicamente

2) la otra opción es a la consulta que vos ya tenés hecha, agregarle sólo la parte del ORDER BY, y hacer lo mismo que hiciste hasta ahora (pasar los años a un array) una vez hecho esto, acá te dejo una rutina que pone los elementos del array pasado por parámetro sin que se repitan.

Saludos!!!!

Private Sub CargarCombo(ByVal aArreglo as string)
Dim i As Integer
Dim j As Integer
Dim encontrado As Boolean

For i = 0 To UBound(aArreglo)
encontrado = False
For j = 0 To Combo1.ListCount - 1
Combo1.ListIndex = j
If Combo1.Text = aArreglo(i) Then
encontrado = True
Exit For
End If
Next j

If Not encontrado Then Combo1.AddItem aArreglo(i)
Next i
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar