Hola Saúl:
El distinct, supongo que ya lo sabrás, se aplica a la fila completa, o sea, a la suma de todos los campos.
Por ejemplo, si tenés estos datos:
nota, importe, pdesc , anticipo, total_nota
"nt1", 123.45 , "desc1", 333.4 , 5555.34
"nt1", 123.45 , "desc1", 333.4 , 5555.35
"nt1", 123.45 , "desc1", 333.4 , 5555.36
Como ves, cambia solo un decimal de la última columna; en este caso un select distinct te devolvería los 3 registros, por esa diferencia en un campo.
Para que te devuelva más registros, descartará solamente los duplicados exactos, o sea, donde se repitan los valores en todos los campos del registro.
¿Podrías poner los registros que te salen repetidos?
Algunas observaciones más:
1) Usar referencias a THISFORM dentro de un SQL no es buena práctica y puede darte problemas, es mejor definir una variable privada o local en su lugar.
2) Usar ALLTRIM() en los campos en general impide que puedas optimizar la consulta para utilizar Rushmore, es mejor usar el campo entero o algo como esto:
LOCAL ldAnticipo, ldFecha1, ldFecha2, lcUsuario
ldAnticipo
ldFecha1 = Thisform.text2.value
ldFecha2 = thisform.text3.value
lcUsuario = PADR(thisform.c1.Value, FSIZE("usuario", "entradas") )
SELECT distinct nota, importe, pdesc as porc_desc, anticipo, total as total_nota ;
FROM entradas ;
WHERE anticipo > 0 AND fecha BETWEEN ldFecha1 AND ldFecha2 ;
AND usuario = lcUsuario ;
INTO CURSOR canticipo NOFILTER
Esta consulta luego queda optimizada con un indice por fecha, otro por usuario y otro por anticipo
Saludos.-