FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour una de índices
Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM

una de índices

Posted: Thu Sep 06, 2007 03: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

Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM

Re: una de índices

Posted: Thu Sep 06, 2007 04: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
Un saludo,

Manuel



xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Posts: 1074
Joined: Fri Oct 07, 2005 01:56 PM

una de índices

Posted: Thu Sep 06, 2007 04: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
Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM

una de índices

Posted: Thu Sep 06, 2007 04: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

Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Posts: 94
Joined: Tue Mar 28, 2006 04:09 PM

Quizas...

Posted: Thu Sep 06, 2007 05: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
Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM

una de índices

Posted: Thu Sep 06, 2007 06:00 PM

Sí, si ya lo he probado

set index &tempind additive

pero sigue sin ir.

Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Posts: 479
Joined: Fri Feb 16, 2007 10:29 AM

una de índices

Posted: Fri Sep 07, 2007 08: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!!

Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM

una de índices

Posted: 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.

Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40
Posts: 114
Joined: Fri Nov 24, 2006 09:03 PM

una de índices

Posted: Fri Sep 07, 2007 03: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

Posts: 58
Joined: Mon Nov 06, 2006 06:56 AM

una de índices

Posted: Fri Sep 07, 2007 03: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 ?

Posts: 670
Joined: Wed Oct 19, 2005 06:41 PM

una de índices

Posted: Fri Sep 07, 2007 04: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
Posts: 838
Joined: Wed Aug 22, 2007 10:09 AM

una de índices

Posted: Fri Sep 07, 2007 04: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.

Saludos / Regards,



FWH 20.04, Harbour 3.2.0 dev (r1909261630) y BCC 7.40

Continue the discussion