Problema con Adodc.RecordSource

Te explico mi situación:
Tengo una BD con access que tiene una tabla que se llama Cobros.
Quiero que me carguen en un ComboBox los nombres de la Columna Nombre, pero que no se repitan. De forma que he intentado esto, pero no lo consigo:
BDCobros.RecordSource = "SELECT DISTINCT nombre FROM cobros"
BDCobros.Recordset.MoveFirst
Do While BDCobros.Recordset.EOF
    Combo1. AddItem BDCobros. Recordset. Fields(1)
    BDCobros. Recordset. MoveNext
Loop
Una ayudita, por favor! XDD
1

1 respuesta

Respuesta
1
Lo que pedís yo no se hacerlo desde sql, pero podes hacerlo
con vb6:
BDCobros.RecordSource = "SELECT nombre FROM cobros order by nombre"
BDCobros.Recordset.MoveFirst
Dim Anterior as String
Do While BDCobros.Recordset.EOF
    If BDCobros.Recordset.Fields(1) <> Anterior Then
          Combo1.AddItem BDCobros.Recordset.Fields(1)
          Anterior= BDCobros.Recordset.Fields(1)
    End If
    BDCobros.Recordset.MoveNext
Loop
Gracias por la ayuda, pero no se porque no me carga nada en el ComboBox.
De todas formas con lo de anterior creo que repetiría nombres. Me explico, tu por ejemplo tienes esta lista:
Lucas, Pepe, Lucas, Juan, Paolo.
Según lo anterior en el combo pondría:
Lucas, Pepe, Lucas, Juan, Paolo. xDDD
Porque solo compara con el anterior inmediato.
Al ir a mirar si el 2º Lucas es igual al anterior te diría que es falso, y es normal porque el anterior es Pepe, creo, xDD
De todas formas la sentencia select seria mejor asi:
Select distinct nombre from cobros.
Y lo del order da igual porque el ComboBox tiene la propiedad sorted,xDD
Gracias, seguire intentandolo.
Fíjate que por eso lo ordeno por nombre, para que luego
si hay 2 iguales, estén uno atrás del otro ;)
Hacete un paso a paso y fíjate donde esta el error!
En tu código he encontrado un fallo (una tontería, pero se nota xDD)
En el Do While falta el NOT, que sino no entra. Pero lo he probado
Y la sentencia, no se porque pero no me la ejecuta, entonces en lo que tengo nombre que estén repetidos pero no consecutivos, me los repite en el combo. Mira según el código de arriba (que esta muy bien planteado) pasaría lo siguiente con el campo Nombre:
Estos son los nombres de la BD (por ejemplo)
Pepe
Pepe
Luis
Pepe
--> Como la sentencia no me la ejecuta el combo se queda así:
Pepe, Luis, Pepe.
¿Qué podría fallar?
Muchas gracias de nuevo!
Saludos
Por fin encontré la solución!xDD
Aquí te la pongo:
---> BDCobros.RecordSet.Sort = "nombre" <------
Al final me queda asi el codigo:
BDCobros.Recordset.Sort = "nombre"
BDCobros.Recordset.MoveFirst
Dim Anterior As String
Do While Not BDCobros.Recordset.EOF
    If BDCobros.Recordset.Fields(1) <> Anterior Then
          Combo1.AddItem BDCobros.Recordset.Fields(1)
          Anterior = BDCobros.Recordset.Fields(1)
    End If
    BDCobros.Recordset.MoveNext
Loop
Muchas gracias por todo!
Claro capo, era lo que te decía,
fíjate de ordenarlas por nombre,
cosa que si hay varios iguales, te salgan uno adelante
Del otro jejejeje...
Me alegra haberte ayudado...
Un abrazo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas