una de índices

Post Reply
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

una de índices

Post 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
User avatar
Manuel Aranda
Posts: 561
Joined: Wed Oct 19, 2005 8:20 pm
Location: España

Re: una de índices

Post 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
User avatar
Patricio Avalos Aguirre
Posts: 1028
Joined: Fri Oct 07, 2005 1:56 pm
Location: La Serena, Chile
Contact:

Post 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
Saludos
Patricio

__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Post 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
derpipu
Posts: 93
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico
Contact:

Quizas...

Post 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
Luis Fernando Rubio Rubio
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Post by MOISES »

Sí, si ya lo he probado

set index &tempind additive

pero sigue sin ir.
Loren
Posts: 458
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Post 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!!
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Post 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.
User avatar
jacgsoft
Posts: 96
Joined: Fri Nov 24, 2006 9:03 pm
Location: Lima - Peru

Post 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
Vital
Posts: 58
Joined: Mon Nov 06, 2006 6:56 am

Post 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 ?
User avatar
wilsongamboa
Posts: 439
Joined: Wed Oct 19, 2005 6:41 pm
Location: Quito - Ecuador

Post 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
Wilson 'W' Gamboa A
Wilson.josenet@gmail.com
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

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