Consecutivos en consultas..

Hola amallolm... Me sirvió mucho el módulo para exportación a archivo texto.. En la consulta que exporto tengo un campo numérico que debe tener un consecutivo que hace parte de un rango que me autorizan. ... Es decir... Si el campo es número de remesa... Y me autorizan un rango del 172576 al 30000 cada registro de la consulta debe ir teniendo ese consecutivo automáticamente.. También te comento que la consulta es condicional.. Según criterios que intruduje en un campo... Así que no todos los registros de la tabla tendrán ese consecutivo, solamente los de la consulta...
Se debe ir asignando un número a cada registro de la consulta y cuando se vuelva a ejecutar debe seguir dicho consecutivo.. Y si es mucho pedir que el mismo programa avise cuando se están acabando los números del rango para autorizar otro... Cuando dicho rango se acabe y me autoricen otro .. Cómo se ingresaría.. Y si por algún motivo la consulta no muestra algunos datos por error de digitación.. Cómo sería para que al volverla a ejecutar sin que siga la numeración sino que tome de nuevo los que se tomaron en la consulta equivocada.. Y si es mucho pedir.. Me gustaría que en la tabla quedaran grabados los números asignados... Para informes y consultas posteriores
Gracias anticipadamente... Sé que me podrás ayudar
1

1 respuesta

Respuesta
1
Tu pregunta es bastante compleja y larga de contestar pero vamos a empezar.
Después de haber leído minuciosamente tu pregunta se me ocurre lo siguiente:
a. Para poder definir el rango, debería haber una tabla de rangos (TContadores), dónde yo pondría cómo mínimo los siguientes campos:
RangoInicial - Valor inicial del rango
RangoFinal - Valor final del rango
ContadorActual - Valor, dentro del rango, en el que se encuentra el contador actualmente.
b. Deberá haber en tú menú de opciones dos opciones de consulta:
1. Edición de la consulta. Esta opción deberá actualizar los contadores de los registros que aparezcan en la consulta.
2. Reedición de la consulta. Esta opción NO deberá actualizar los contadores, simplemente deberá tomar el número de registro que se ha guardado cuándo se realizó la consulta por primera vez.
c. La consulta no podrá ser una consulta como tal, sino que deberá (si quieres conservar el número de registro para consultas posteriores) actualizar una tabla (TMiConsulta) dónde deberá haber cómo mínimo la información que identifique el registro en la consulta así cómo el número de registro que se le ha asignado.
Para la 'Edición' tu código podría ser similar al siguiente:
Dim lngContActual as Long
Dim lngUltContador as Long
Dim rsMiConsultas as Recordset
Dim rsAux as Recordset
Dim strSQL as String
lngContActual = Val( DLookUp("[ContadorActual]","[TContadores]"))
lngUltContador = Val(DLookUp("[RangoFinal]","[TContadores]"))
strSQL = "SELECT * FROM TMiConsulta"
Set rsMiConsulta = CurrentDB.OpenRecordSet(strSQL)
strSQL = "SELECT * FROM ...." ' Tu consulta
Set rsAux = CurrentDB.Openrecordset(strSQL)
Do while not rsAux.EOF
lngContActual = lngContActual + 1
if lngUltContador < lngContActual then
rsMiConsulta.AddNew
rsMiConsulta.Fields("IdRegistroConsulta")=rsAux.Fields("Clave")
rsMiConsulta.Fields("Contador")=lngContActual
rsMiConsulta.Update
end if
rsAux.MoveNext
loop
if (lngUltContador-30) <lngContActual then
msgbox "Quedan menos de 30 números para finalizar el rango"
end if
rsAux.Close
rsMiConsulta.Close
Set rsAux = Nothing
Set rsMiConsulta = Nothing
En la 'Reedición sólo tendrías que limitarte a mostrar el campo dónde está el contador.
Para volver a realizar la consulta con un número de registro determinado (si se hubiera producido un error) bastaría con que modificaras el valor del campo 'ContadorActual' de la tabla 'TContadores'.
Creo que más o menos lo que me pides se podría solucionar así, aunque eso sí, necesitaras unas cuantas horas para implementarlo en tu aplicación, pues ya ves que no es nada sencillo.
Antoni, te agradezco tu ayuda, traté de incorporar el módulo a una base de datos de prueba pero no sé qué estoy haciendo mal porque no funciona.. te envió una muestra y si me puedes devolver el archivo corregido te lo agradecería inmensamente.
Gracias de nuevo.. (La verdad no conozco casi nada códigos de Visual basic y creo que ese es el problema, trato de aplicarle lógica al asunto y por eso necesito ayuda)
Te he mandado el ejemplo que me has pasado corregido. Espero que te sirva. En el mensaje de correo, te doy un poco más de explicación.
>Gracias por tu gran amabilidad y ayuda Antoni.. resulta que la consulta me
>Funciona perfectamente si dejo criterios fijos.. te darás cuenta que en el
>Campo transportadora en la consulta dejo fijo el número 2, pero necesito
>Ingresar la fecha manualmente, cuando ingreso este criterio al ejecutar la
>Consulta me sale el error.. me podrías ayudar..
Te
>Envío
>El archivo con la modificación que le hice y el error que saca., gracias
Te acabo de mandar la solución a tu duda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas