Page 1 of 1
una de índices
Posted: Thu Sep 06, 2007 3:42 pm
by MOISES
Hola:
Tengo una base de datos previamente indexada y abierta:
select 1
use usuarios index usuarios shared
me gustaria cambiar el índice para hacer un listado y luego restaurar al índice anterior. Me falla la restauración al índice anterior, que no me sale.
He probado con set index &tempindex additive y luego set order to 1 pero me sigue cogiendo el indice nuevo.
Por favor, os agradecería que me digáis cómo se hace. Un millón de gracias.
Un saludo
Re: una de índices
Posted: Thu Sep 06, 2007 4:25 pm
by Manuel Aranda
Hola Moisés:
Local nOrdenFactura:=FACTURA->(IndexOrd()) //Guarda el índice actual
FACTURA->(DbSetOrder(2)) // Cambia al índice número 2
.........
.........
FACTURA->(DbSetOrder(nOrdenFactura))//Restaura el índice inicial
Saludos,
Manuel
MOISES wrote:Hola:
Tengo una base de datos previamente indexada y abierta:
select 1
use usuarios index usuarios shared
me gustaria cambiar el índice para hacer un listado y luego restaurar al índice anterior. Me falla la restauración al índice anterior, que no me sale.
He probado con set index &tempindex additive y luego set order to 1 pero me sigue cogiendo el indice nuevo.
Por favor, os agradecería que me digáis cómo se hace. Un millón de gracias.
Un saludo
Posted: Thu Sep 06, 2007 4:56 pm
by Patricio Avalos Aguirre
Puedes usar tambien OrdSetfocus
cFocu := Alias->( OrdSetFocus() ) // guarda indice
alias->( OrdSetFocus( "tag2" ) )
blblblblb
alias->( OrdSetFocus( cFocu ) ) //restauramos el indice....
espero que te sirva
Posted: Thu Sep 06, 2007 4:59 pm
by MOISES
Hola:
Muchas gracias por responderme. Perdón, se trata de un índice temporal que creo antes de usar el listado.
hago un set index to &tempfile
lo que me has dicho también lo he probado y nada. Vuelve siempre al índice temporal que he creado.
Un saludo
Quizas...
Posted: Thu Sep 06, 2007 5:37 pm
by derpipu
No me ha pasado, pero creo haber visto en la ayuda de clipper, algo acerca de un Additive o algo asi..
porque no lo checas...
http://www.ousob.com/ng/53guide/
Saludos
Posted: Thu Sep 06, 2007 6:00 pm
by MOISES
Sí, si ya lo he probado
set index &tempind additive
pero sigue sin ir.
Posted: Fri Sep 07, 2007 8:40 am
by Loren
Debes hacer lo siguiente:
1.- primero abre la DBF en modo exclusivo
2.- creas el NTX temporal correspondiente
3.- abres la DBF en modo compartido con los 2 NTX
4.- utilizas la orden: set order to 1 o 2 en función de tus necesidades
es decir...
use usuarios exclusive
index on campo to otroNTX
use
use usuarios index usuarios,otrontx SHARED
set order to 2
.....
....
set order to 1
...
y listo el pollo!!
Posted: Fri Sep 07, 2007 10:24 am
by MOISES
El problema es que NO puedo abrir la base en exclusive. Si no, claro que sería más fácil, pero no puedo cerrar la base ni abrirla en exclusive.
Posted: Fri Sep 07, 2007 3:27 pm
by jacgsoft
Por lo que entiendo tu tabla tiene 2 Indices
Si es asi solo abrelo con los 2 indices y luego usa Set Order To
Use tabla Shared
Set Index To Indice1, Indice2
Set Order To 2 // usas el indice 2.
Set Order To 1 // regresas al indice 1.
y listo
Posted: Fri Sep 07, 2007 3:38 pm
by Vital
Por lo que entiendo es que su tabla tiene un solo indice
Crear un indice al vuelo, utilizarlo y despues regresar al indice inicial
Es correcto ?
Ahora porque no le pones 2 indice a tu tabla para no estar creando indices al vuelo ?
Posted: Fri Sep 07, 2007 4:18 pm
by wilsongamboa
Moises yo lo haria asi
Use tabla Shared
index on Campodetutabla to (cNtx) //indice temporal
tabla->( dbclosearea() )
Use tabla index Indice1, Indice2 Shared
Set Index To 1 // o set index to 2
OJO durante la base este abierta con el indice temporal NO PUEDES AUMENTAR no modificar registros porque no se actualizarian los indices, y si eso es lo que necesitas deberias hacer asi
Use tabla Shared
index on Campodetutabla to cNtx //indice temporal
tabla->( dbclosearea() )
Use tabla index Indice1, Indice2, cNtx Shared
Set Index To 1 // o set index to 2 (// o set index to 3
aqui si ya podrias aumentar o editar registros, al final cierras la tabla y eliminas el indice temporal
dbclosearea()
ferase( cNtx )
espero te sirva
Saludos
Posted: Fri Sep 07, 2007 4:21 pm
by MOISES
Sí, lo que necesito es crear índices al vuelo. No puedo cerrar la base de datos, ni abrirla en modo exclusivo.
Muchas gracias.