¿Error en la clave del Indice?

Post Reply
JMFS-D
Posts: 40
Joined: Thu Jan 12, 2006 5:10 pm

¿Error en la clave del Indice?

Post 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ª
Last edited by JMFS-D on Fri Apr 14, 2006 7:24 pm, edited 1 time in total.
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Post by Armando »

José María:

Y si quitas la claúsula UNIQUE ?

Saludos, Armando
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
JMFS-D
Posts: 40
Joined: Thu Jan 12, 2006 5:10 pm

Gracias. Seguire haciendo pruebas.

Post 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ª
JMFS-D
Posts: 40
Joined: Thu Jan 12, 2006 5:10 pm

No hay forma.

Post 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ª
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post 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
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post 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
User avatar
Willi Quintana
Posts: 859
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú
Contact:

Post 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
//------------------------------------------------
JMFS-D
Posts: 40
Joined: Thu Jan 12, 2006 5:10 pm

¡Conseguido!

Post 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ª
Post Reply