Access - Cómo crear un índice

 
Vista:

Cómo crear un índice

Publicado por Rosy (19 intervenciones) el 17/02/2006 19:32:54
Hola, tengo una tabla Egresos en una BD Access 2000. En la tabla egresos está definido el campo Fecha de Egreso (fecha_egr) de tipo fecha y, desde un programa VB necesito hacer un seek a la tabla pero solo con una parte de la fecha (año y mes) y ubicarme en el primer registro de ese año y mes. Desde luego que tengo que crear un índice en la tabla, pero si ordeno la tabla por fecha de egreso, luego tendria que accesar con la fecha completa y no solo con el año y mes que es lo que me interesa. ¿De qué manera puedo crear el índice de manera que, desde la aplicación, pueda accesarlo sólo con la parte del año y el mes?
Atte,
Rosy
Valparaíso, Chile
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cómo crear un índice

Publicado por Rick Hunter (263 intervenciones) el 17/02/2006 19:45:14
Porque no agregas un campo extra donde guardes el año y mes, y haces una llave compuesta con ese campo y el de la fecha. La otra sería que la busqueda la realizaras con un query, pero esta ultima opción traga muchos recursos de la pc y conforme vayas agregando registros, se iría haciendo mas lenta tu consulta.

Ojala y te sirva.
SAludos!!
Desde Coahuila, Mexico...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias

Publicado por Rosy (19 intervenciones) el 17/02/2006 19:53:00
Hola Rick, la verdad que la solución que tu me das, de agregar dos columnas a la tabla (año y mes) y luego hacer una llave con los dos campos, ya la había pensado pero como estoy recien empezando en Access yo me decía ¡tiene que haber alguna funcion que me permita hacer lo que quiero!! Si hasta en Clipper se puede hacer ¡como en Access no!!! pero parece que NO! Y estoy cambiando la forma de la búsqueda precisamente para cambiar un query que está consumiendo mucho recurso por otro tipo de acceso más rápido ya que la tabla ha crecido demasiado.
Gracias por responder
Rosy
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias

Publicado por Rick Hunter (263 intervenciones) el 20/02/2006 19:13:39
Lo que no sabes es como crear el indice pues, ahi te va la receta de cocina:

Abre la tabla en modo diseño
Busca el icono de la llave en la barra de comandos
Al a derecha de este icono veras otro con un rayo y varias lineas, esta es la opción para crear indices, no selecciones campos.
Al darle click, se abre la pantallita para que crees tus indices, primero el nombre luego seleccionas los campos que formaran tu llave.
Eliges el orden
Cierras la ventanita
Salvas la tabla
y con eso agregas el indice.

Para usarlo al abrir el recordset, le indicas en una linea enseguida:

Set rstusr = dbs.OpenRecordset("USUARIOS", dbOpenTable)
'Aqui abres la tabla de forma normal
rstusr.Index = "MiLlave"
'Aqui abres la llave que formaste

Ojal ay te sirva.
SAludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Gracias de nuevo pero.....

Publicado por Rosy (19 intervenciones) el 21/02/2006 12:55:30
Gracias pero ese no es el problema que tengo, crear índices en access es muy fácil. ¡¡ siempre me pasa lo mismo, no me hago entender!!!!!!

Para crear el indice en access sigo los pasos que tu me indicas, pero el indice se crea con la fecha completa, por ejemplo, en mi caso, necesito crear un indice por el año y mes de la fecha de egreso, el asunto es que access no me permite hacer eso, me crea el índice por la fecha completa aaaa/mm/dd y yo solo quiero una parte de la fecha no la fecha completa. Luego, a través del código podría utilizar la llave "aaaa/mm" y no la fecha completa, la fecha completa no me sirve.

En el humilde Clipper sería:

Select "Egresos"
Index on STR(YEAR(Fec_egreso),4)+STR(MONTH(Fec_egreso),2) TO EGRESO

var_aa = "2006"
var_mm = "02"

DBSEEK( var_aa+var_mm")

DO WHILE var_aa == YEAR(Fec_egreso) .AND. var_mm == MONTH(Fec_egreso)
.
.
intrucciones

ENDDO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar