una de índices

una de índices

Postby MOISES » Thu Sep 06, 2007 3:42 pm

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

Re: una de índices

Postby Manuel Aranda » Thu Sep 06, 2007 4:25 pm

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

Postby Patricio Avalos Aguirre » Thu Sep 06, 2007 4:56 pm

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

Postby MOISES » Thu Sep 06, 2007 4:59 pm

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

Quizas...

Postby derpipu » Thu Sep 06, 2007 5:37 pm

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

Postby MOISES » Thu Sep 06, 2007 6:00 pm

Sí, si ya lo he probado

set index &tempind additive

pero sigue sin ir.
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am

Postby Loren » Fri Sep 07, 2007 8:40 am

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!!
Loren
 
Posts: 479
Joined: Fri Feb 16, 2007 10:29 am
Location: Cadiz - España

Postby MOISES » Fri Sep 07, 2007 10:24 am

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

Postby jacgsoft » Fri Sep 07, 2007 3:27 pm

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

Postby Vital » Fri Sep 07, 2007 3:38 pm

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

Postby wilsongamboa » Fri Sep 07, 2007 4:18 pm

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

Postby MOISES » Fri Sep 07, 2007 4:21 pm

Sí, lo que necesito es crear índices al vuelo. No puedo cerrar la base de datos, ni abrirla en modo exclusivo.

Muchas gracias.
MOISES
 
Posts: 838
Joined: Wed Aug 22, 2007 10:09 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Antonio Linares and 29 guests