Problemas al generar Indices
Posted: Thu Nov 01, 2007 1:46 am
Saludos a todos los colegas de foro:
Haber si a alguien le ha pasado lo siguiente:
La mayoria de nosotros tenemos en nuestras aplicaciones alguna funcion que permite compactar y regenerar indices y vizualizar el progreso con un meter, antes en 16bits todo trabajaba de maravillas desde una pc en red o en una pc local, ahora con 32bits me genera el siguiente error:
Descripción del Error:
___________________________________________________
Error DBCMD/2001
Area de trabajo no usada: ORDCREATE
Llamadas al Stack:
___________________________________________________
Llamado desde ORDCREATE(0)
Llamado desde METER(1177)
Llamado desde (b)INDEXA(140)
Llamado desde (b)TDIALOG:TDIALOG(85)
Llamado desde TDIALOG:DISPLAY(0)
Estas son las funciones con que trabajo, no se si lo estoy implementando mal o si algo se me esta pasando:
(Asumo que ya estan Compactadas con ZAP las bases de Datos y eliminados los archivos indices..)
//------------------------//
FUNCTION PackBF()
LOCAL oMeter1, oPackDBase
LOCAL lSalir:= .F.
DEFINE DIALOG oPackDBase RESOURCE "OPTIMIZA" Title "Organizando Información" OF oPackDBase
oMeter1 = TProgress():Redefine( 200, oPackDBase )
oPackDBase:lHelpIcon:= .F.
bDialogTask := { || Indexa(oMeter1) }
ACTIVATE DIALOG oPackDBase CENTERED VALID (lSalir) ON PAINT EVAL(bDialogTask)
RETURN nil
//------------------------//
STATIC FUNCTION METER(oMeter)
IF !FILE(".\CLIENTES.CDX")
SET UNIQUE OFF
DBUSEAREA(.T., "DBFCDX",".\CLIENTES.DBF", "CLIENTES",.T.,.F.)
IF !NETERR()
SYSREFRESH()
PreIndex( oMeter, nRec, "CLIENTES" )
INDEX ON STRZERO( IdCliente, 10 ) TAG IdCliente FOR ! DELETED() EVAL( oMeter:SETPOS( nRec++ ), SYSREFRESH() ) <--(Aki Falla)
Postindex(nRec)
nRec := 0
SYSREFRESH()
PreIndex( oMeter, nRec, "CLIENTES" )
INDEX ON UPPER(NomClient) TAG NomClient FOR ! DELETED() EVAL( oMeter:SETPOS( nRec++ ), SYSREFRESH() ) <--(Aki Falla)
Postindex(nRec)
nRec := 0
DBSELECTAREA("CLIENTES")
DBCLOSEAREA("CLIENTES")
ENDIF
ENDIF
//------------------------//
STATIC FUNCTION PreIndex( oMeter, nRec, cAlias )
oMeter:SetRange( 0, (cAlias)->( LASTREC() ))
nRec := 0
oMeter:SETPOS(nRec)
SYSREFRESH()
RETURN nRec
//------------------------//
STATIC FUNCTION Postindex(nRec)
oMeter:SETPOS(nRec++)
SYSREFRESH()
RETURN nil
El fallo se produce en la linea donde esta el comando:
INDEX ON ..
_ de la Base de Datos CLIENTES son:
IdCliente Numerico 10
NomClient Caracter 20
Y tambien esta enlazadas las librerias para generar indices DBFCDX
Agradecería toda la ayuda que fuera posible y tambien nuevas propuestas para generar indices..
Saludos..
Haber si a alguien le ha pasado lo siguiente:
La mayoria de nosotros tenemos en nuestras aplicaciones alguna funcion que permite compactar y regenerar indices y vizualizar el progreso con un meter, antes en 16bits todo trabajaba de maravillas desde una pc en red o en una pc local, ahora con 32bits me genera el siguiente error:
Descripción del Error:
___________________________________________________
Error DBCMD/2001
Area de trabajo no usada: ORDCREATE
Llamadas al Stack:
___________________________________________________
Llamado desde ORDCREATE(0)
Llamado desde METER(1177)
Llamado desde (b)INDEXA(140)
Llamado desde (b)TDIALOG:TDIALOG(85)
Llamado desde TDIALOG:DISPLAY(0)
Estas son las funciones con que trabajo, no se si lo estoy implementando mal o si algo se me esta pasando:
(Asumo que ya estan Compactadas con ZAP las bases de Datos y eliminados los archivos indices..)
//------------------------//
FUNCTION PackBF()
LOCAL oMeter1, oPackDBase
LOCAL lSalir:= .F.
DEFINE DIALOG oPackDBase RESOURCE "OPTIMIZA" Title "Organizando Información" OF oPackDBase
oMeter1 = TProgress():Redefine( 200, oPackDBase )
oPackDBase:lHelpIcon:= .F.
bDialogTask := { || Indexa(oMeter1) }
ACTIVATE DIALOG oPackDBase CENTERED VALID (lSalir) ON PAINT EVAL(bDialogTask)
RETURN nil
//------------------------//
STATIC FUNCTION METER(oMeter)
IF !FILE(".\CLIENTES.CDX")
SET UNIQUE OFF
DBUSEAREA(.T., "DBFCDX",".\CLIENTES.DBF", "CLIENTES",.T.,.F.)
IF !NETERR()
SYSREFRESH()
PreIndex( oMeter, nRec, "CLIENTES" )
INDEX ON STRZERO( IdCliente, 10 ) TAG IdCliente FOR ! DELETED() EVAL( oMeter:SETPOS( nRec++ ), SYSREFRESH() ) <--(Aki Falla)
Postindex(nRec)
nRec := 0
SYSREFRESH()
PreIndex( oMeter, nRec, "CLIENTES" )
INDEX ON UPPER(NomClient) TAG NomClient FOR ! DELETED() EVAL( oMeter:SETPOS( nRec++ ), SYSREFRESH() ) <--(Aki Falla)
Postindex(nRec)
nRec := 0
DBSELECTAREA("CLIENTES")
DBCLOSEAREA("CLIENTES")
ENDIF
ENDIF
//------------------------//
STATIC FUNCTION PreIndex( oMeter, nRec, cAlias )
oMeter:SetRange( 0, (cAlias)->( LASTREC() ))
nRec := 0
oMeter:SETPOS(nRec)
SYSREFRESH()
RETURN nRec
//------------------------//
STATIC FUNCTION Postindex(nRec)
oMeter:SETPOS(nRec++)
SYSREFRESH()
RETURN nil
El fallo se produce en la linea donde esta el comando:
INDEX ON ..
_ de la Base de Datos CLIENTES son:
IdCliente Numerico 10
NomClient Caracter 20
Y tambien esta enlazadas las librerias para generar indices DBFCDX
Agradecería toda la ayuda que fuera posible y tambien nuevas propuestas para generar indices..
Saludos..