FoxPro/Visual FoxPro - Problemas al crear indices

 
Vista:

Problemas al crear indices

Publicado por YETICA (13 intervenciones) el 08/11/2007 19:50:51
HOLA A TODOS Y GRACIAS ANTICIPADAS
ME DA UN ERROR EN UN PROGRAMA PARA CREAR LOS FICHEROS INDICES DE LAS TABLAS DE UN SISTEMA. SUCEDE Q CUANDO CORRO LA APLICACION DESDE AFUERA, O SEA, EL .EXE DA ERROR Y DICE Q LA TABLA NO ESTA ABIERTA EN MODO EXCLUSIVO ... COSA Q NO ES CIERTA PQ SI LA ABRO EN EXCLUSIVE....

*** Reindexar las tablas del Sistema
LOCAL ErrorFinal
ErrorFinal=.F.
SET SAFETY OFF
SiNo=MESSAGEBOX('Se cerrarán todas las Tablas abiertas'+CHR(13)+' ¿ Está seguro ?',4+48+0,'¡¡¡ Alerta !!!')
IF SiNo=7 && NO
RETURN
ENDIF
CLOSE TABLES ALL
CLOSE INDEX

cExclusive=SET('EXCLUSIVE')

*** Tabla: SalNeto.DBF
IF FILE(DirectorioActual+'\SalNeto.DBF')
IF FILE(DirectorioActual+'\SalNeto.CDX')
DELETE FILE DirectorioActual+'\SalNeto.CDX'
ENDIF
USE (DirectorioActual+'\SalNeto.DBF') IN 0 EXCLUSIVE
SELECT SalNeto
IF ISEXCLUSIVE( )
WAIT WINDOW NOWAIT ' Reindexando: SalNeto.DBF '

***HASTA AQUI TODO CORRE OK INCLUSO ENTRA POR AQUI, O SEA Q ESTA ABIERTA LA TABLA EN MODO EXCLUSIVO, PERO AL LLEGAR AL ***COMANDO SIGUIENTE ... DA ERROR

INDEX ON ALLTRIM(area)+ALLTRIM(exp) TAG AREAEXP
INDEX ON ALLTRIM(area) TAG AREA
INDEX ON VAL(ALLTRIM(area)) TAG NUMAREA
INDEX ON ALLTRIM(exp) TAG EXPED UNIQUE
INDEX ON ci TAG CI
* REINDEX
ELSE
WAIT WINDOW 'La Tabla SalNeto.DBF no se abrió para uso exclusivo'
ENDIF
USE
ELSE
MESSAGEBOX(' Configuración del Sistema INADECUADA'+CHR(13)+' NO EXISTE el fichero '+DirectorioActual+'\SalNeto.DBF',16,'ERROR !!!')
ErrorFinal=.T.
ENDIF
.............

POR FAVOR ALQUIEN PODRIA SUGERIRME ALGUNA AYUDA ????
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas al crear indices

Publicado por Plinio (7841 intervenciones) el 08/11/2007 20:34:19
Visual FoxPro 9.0 SP2
ISEXCLUSIVE( ) Function
See Also Example
Collapse All Expand All Language Filter: All Language Filter: Multiple Language Filter: Visual Basic Language Filter: C# Language Filter: C++ Language Filter: J# Language Returns true (.T.) if a table or database is opened for exclusive use; otherwise, returns false (.F.).


ISEXCLUSIVE([cTableAlias | nWorkArea | cDatabaseName [, nType]])

Parameters
cTableAlias
Specifies the alias of the table for which the exclusive use status is returned. Visual FoxPro generates an error message if you specify a table alias that doesn't exist.

nWorkArea
Specifies the work area of the table for which the exclusive use status is returned. ISEXCLUSIVE( ) returns false (.F.) if a table isn't open in the work area you specify.

cDatabaseName
Specifies the name of the database for which the exclusive use status is returned.

nType
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Problemas al crear indices

Publicado por Ernesto Hernandez (4623 intervenciones) el 08/11/2007 20:39:01
mi no entender .. pero ya vi para que sirve
;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al crear indices

Publicado por Plinio (7841 intervenciones) el 08/11/2007 20:45:28
Pues entendiste.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al crear indices

Publicado por Plinio (7841 intervenciones) el 08/11/2007 20:39:06
-Yo prefiero usar DELETE TAG ALL para borrar los indices.
- Talvez la tabla esta abierta en otra sesion de datos. Por si acaso usas Session de datos privada (ver la propiedad datasession en algun formulario) ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Problemas al crear indices

Publicado por Ernesto Hernandez (4623 intervenciones) el 08/11/2007 20:45:50
IF ISEXCLUSIVE( "SalNeto") ya probaste asi ?

si no te convendria asignar un alias a tu tabla

Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al crear indices

Publicado por Plinio (7841 intervenciones) el 08/11/2007 20:54:02
SELECT SalNeto
IF ISEXCLUSIVE( )

es lo mismo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Problemas al crear indices

Publicado por Ernesto Hernandez (4623 intervenciones) el 08/11/2007 20:58:45
pero si la tabla que quiero checar no es la que esta seleccionada en ese momento ??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas al crear indices

Publicado por Plinio (7841 intervenciones) el 08/11/2007 21:33:21
Me refiero al caso de el. Como el lo tiene debe de funcionar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

SIGO con problemas al crear indices

Publicado por YETICA (13 intervenciones) el 09/11/2007 16:48:26
MIL GRACIAS Y AGRADECIDA ESTOY POR SUS RESPUESTAS PERO ME SIGUE DANDO ERROR AL CORRER EL EJECUTABLE (.EXE)
YA UTILICE EL DELETE TAG ALL Y ME DICE Q DEBO ABRIR EL FILE EN MODO EXCLUSIVO, COSA Q HAGO CON ANTERIORIDAD COMO MUESTRO AQUI

CLOSE TABLES ALL
CLOSE INDEX

*** Tabla: SalNeto.DBF
IF FILE(DirectorioActual+'\SalNeto.DBF')
USE (DirectorioActual+'\SalNeto.DBF') IN 0 EXCLUSIVE
SELECT SalNeto
IF ISEXCLUSIVE('SalNeto')
DELETE TAG ALL

*** DELETE TAG ALL ME DA ERROR Q DEBO ABRIR EL FILE EN MODO EXCLUSIVO

*** LOS INDEX ON DAN EL ERROR Q EL FILE ES DE SOLO LECTURA COSA Q NO ES CIERTA

INDEX ON ALLTRIM(area)+ALLTRIM(exp) TAG AREAEXP
INDEX ON ALLTRIM(area) TAG AREA
INDEX ON VAL(ALLTRIM(area)) TAG NUMAREA
INDEX ON ALLTRIM(exp) TAG EXPED UNIQUE
INDEX ON VAL(ALLTRIM(exp)) TAG NUMEXP
INDEX ON ci TAG CI
ELSE
WAIT WINDOW 'La Tabla SalNeto.DBF no se abrió para uso exclusivo'
ENDIF
USE
ELSE
MESSAGEBOX(' Configuración del Sistema INADECUADA'+CHR(13)+' NO EXISTE el fichero '+DirectorioActual+'\SalNeto.DBF',16,'ERROR !!!')
ErrorFinal=.T.
ENDIF

QUE PUEDO HACER ????
Q ES UNA SESION PRIVADA DE DATOS ???
ALGUIEN PUEDE AYUDARME ??? ESTA RUTINA LA HE CORRIDO EN MULTIPLES PROGRAMAS ANTERIORES Y NUNCA ME HABIA DADO ESTE PROBLEMA ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar