Ayuda indices

Hola amigo, sabes quiero indexar una tabla ordenarla por fecha y un campo hora, resulta que me dice un error tiene que abrir la tabla en modo exclusivo NO ENTIENDO
Uso :
Se le almacen
index on dtoc(fechaaviso)+horaaviso ;
tag fh
¿Y me sale ese mensaje porque?
¿Hay alguna otra forma de ordenar una tabla sin usar indices o algo?
¿Cuándo usar USE
y cuando SE LE, no se?
Ayudame,
Esta tabla almacen esta en la bd no es tabla libre, y esta relacionada a una grilla mediante la cual se debe de poder modificar esta tabla,
¿No se si usando un cursor se este modificando la tabla del cursor ES ASÍ?
No se ayudame por favor...
Respuesta
1
Em primer lugar, te sale el error debido a que para realizar un indice de datos de una tabla, la tabla se debe abrir en modo exclusivo, así:
Use mitabla in 0 alias mt EXCLUSIVE
SELECT mt
INDEX ON dtoc(fechaaviso)+horaaviso TAG fecha
Listo, esto te evitará el error.
En segundo lugar, si puede realizar una consulta ordenada de tus datos por algún criterio, pero ésto se logra utilizando sintaxis SQL. Así:
SELECT * from miTabla IN CURSOR MT where <mi condición> ORDER BY fechaaviso,horaaviso
Listo se te creará un cursor con el nombre mt, el cual incluye todos los campos de tu tabla ordenada por dos campos y además se pueden realizar filtros a la consulta.

3 respuestas más de otros expertos

Respuesta
1
Lo que pasa es que la tabla esta en uso.
* Example 1
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
INDEX ON company TO complist
CLEAR
DISPLAY STATUS
* Example 2
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
INDEX ON SUBSTR(city,1,5) + SUBSTR(company,1,6) TO citycomp
CLEAR
DISPLAY STATUS
* Example 3
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE Customer && Open customer table
INDEX ON address TAG address
INDEX ON company TAG company OF custcdx
Clear
Display status
Yo uso el comando use así, generalmente en los programas, que cuando abro varias veces me daba el mismo error:
IF ! USED("articulos")
USE articulos SHARE
set filter to existe
Endif
Y select, lo uso para determinar mi tabla padre dentro de un formulario, para tener el control de la tabla maestra, me sirve mucho por ejemplo con grillas con varias tablas.
Respuesta
1
Primero que nada intentas crear un índice sobre una tabla que tienes abierto con SHARED, debes abrirlo con USE Tabla IN 0 EXCLUSIVE
Puedes crear el indice "estructural", en el diseñador de la tabla y para activarlo únicamente usas "SET ORDER TO TAG <indice>"
Respuesta
1
Prueba con lo siguiente.
Se le tabla
set order to campo asc ó
set order to campo desc
Estas instrucciones te ordenaran ascendente o descendentemente la tabla por el campo que tu elijas.
Estos campos deben estar creados en la tabla como index.
Así lo utilizo yo, ojala te sirva.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas