Page 1 of 1

¿Error en la clave del Indice?

Posted: Mon Apr 03, 2006 5:22 pm
by JMFS-D
Estimados compañeros:

No se por que no funciona, el Indice, de mi aplicación:

Code: Select all

INDEX FILE PFMesFac                                          ;
          TAG    MesFactu                                    ;
          ON     UPPER( CMONTH( fechafactu ) ) + codigo    + ;
                 numfactura                                  ;
          UNIQUE                                             ;
          EVAL   ( lPrimerVez := TRUE                      , ;
                    PorcentInd( oDbfFactP, aoMeter[ 5 ] ) )  ;
          OF     oDbfFactP
Como podreis ver, lo que me interesa, es localizar las facturas del mes, para cada proveedor.

Pero, solo me incluye la primera de cada proveedor. Supongamos que hay tres facturas:

Code: Select all

CODIGO   NUMFACTURA      FECHAFACTU
0000001  36              02/20/2006
0000001  5160/1          01/31/2005
0000001  999999          02/28/2006
0000001  LFF2            02/20/2006
Al crear el indice, solo introduce la factura 36. ¿Por que?

Saludos, José Mª

Posted: Tue Apr 04, 2006 9:56 pm
by Armando
José María:

Y si quitas la claúsula UNIQUE ?

Saludos, Armando

Gracias. Seguire haciendo pruebas.

Posted: Wed Apr 05, 2006 7:10 pm
by JMFS-D
¡GARCIAS!, Armando.

Probe a quitar el UNIQUE. Y lo que sucede es que me incluye todos los registros.

¿No se supone, que con UNIQUE, en el indice solo se incluyen, la primera aparición, de lo que indique la clave?

Saludos. José Mª

No hay forma.

Posted: Sun Apr 09, 2006 8:29 pm
by JMFS-D
¿En que estoy equivocado?.

En una Base de Datos, pequeña, no influye. Pero si encima el ordenador es lento.

Mi intención, es barrer solo las facturas de un cierto mes, o meses seleccionados, de un proveedor.

Apreciaré cualquier ayuda. ¡ GRACIAS!, anticipadas.

José Mª

Posted: Mon Apr 10, 2006 8:53 pm
by Willi Quintana
Hola,,, talvez asi?
INDEX FILE PFMesFac ;
TAG MesFactu ;
ON DTOS(fechafactu ) ;
EVAL ( lPrimerVez := TRUE , ;
PorcentInd( oDbfFactP, aoMeter[ 5 ] ) ) ;
OF oDbfFactP
...
...
..
SETSCOPE(cFecha1,cFecha2)
browse()..............// aqui solo te aparecen las facturas que estan entre las fechas

Posted: Mon Apr 10, 2006 8:54 pm
by Willi Quintana
Hola,,, talvez asi?
INDEX FILE PFMesFac ;
TAG MesFactu ;
ON DTOS(fechafactu ) ;
EVAL ( lPrimerVez := TRUE , ;
PorcentInd( oDbfFactP, aoMeter[ 5 ] ) ) ;
OF oDbfFactP
...
...
..
SETSCOPE(cFecha1,cFecha2)
browse()..............// aqui solo te aparecen las facturas que estan entre las fechas cFecha1 y cFecha2

Salu2

Posted: Mon Apr 10, 2006 8:57 pm
by Willi Quintana
Ups,,, olvide esto:

Function SetScope(vCodi,vCodi2)
DEFAULT vCodi := Nil
DEFAULT vCodi2 := Nil
ORDSCOPE(0,Nil) // SET SCOPE TO
ORDSCOPE(1,Nil)
Do Case
Case vCodi = Nil .AND. vCodi2 = Nil
Return nil
Case vCodi2 = Nil .AND. vCodi <> Nil
ORDSCOPE(0,vCodi) // SET SCOPETOP TO vCodi
Case vCodi = Nil .AND. vCodi2 <> Nil
ORDSCOPE(1,vCodi2) //SET SCOPEBOTTOM TO vCodi2
Other
ORDSCOPE(0,vCodi) //SET SCOPE TO vCodi,vCodi2
ORDSCOPE(1,vCodi2)
EndCase
DbGoTop()
Return nil
//------------------------------------------------

¡Conseguido!

Posted: Fri Apr 14, 2006 7:16 pm
by JMFS-D
¡Gracias!, Armando, Willi Quintana, y a todos los que están hay detrás.

Con vuestras respuestas, y bastantes puebas, se ha logrado lo que se perseguía, al menos eso parece:

Code: Select all

INDEX FILE PFMesFac                                          ;
          TAG    MesFactu                                    ;
          ON     UPPER( CMONTH( fechafactu ) ) + codigo    + ;
                 numfactura + DTOS( fechafactu )             ;
          UNIQUE                                             ;
          EVAL   ( lPrimerVez := TRUE                      , ;
                    PorcentInd( oDbfFactP, aoMeter[ 5 ] ) )  ;
          OF     oDbfFactP
Saludos, José Mª