Nº expediente/año. Reinicio automático de numeración.

He creado una base de dato para expedientes. En el formulario donde los introduzco quiero que aparezca en nº expediente/año (1/2015, 2/2015m 3/2015, etc) y que la numeración se reinicie al año siguiente automáticamento, (1/2016, 2/2016, 3/2016, etc) conservando los registros anteriores su numeración. Tengo el campo numero de expediente (cexpediente) y la fecha de inicio del expediente (finicio). Qué tengo que hacer. Por favor explicar muy claro soy novata. En qué campo tengo que poner el código y qué evento. Por favor, pido muy clara. No sé hacerlo. Gracias. Lo necesitaría para mañana. Os estaré agradecida.

2

2 respuestas

Respuesta
2

Aclárame un par de puntos, para poder aconsejarte exactamente, porque veo muchas opciones posibles para hacerlo:

¿El nº expediente/año irá en otro campo (en ese caso dime cómo se llama) o irá directamente en cexpediente)

¿El número de expediente (cexpediente) lo quieres automático o lo metes tú manualmente?

¿En qué orden metes los datos: primero la fecha y luego el nº de exp. O al revés?,

Si me puedes poner aquí una imagen del diseño de la tabla y del formulario, o un enlace para descargar una copia de tu BD con la tabla y el formulario (no hace falta que tenga datos), mejor.

Te he preparado un mini-ejemplo suponiendo que lo quieres hacer lo más automático posible, es decir, cexpediente se auto-genera después de meter la fecha de inicio (finicio), y que en el campo cexpediente es donde se va a guardar con el formato "num exp/año"

Verás que hay dos tablas y dos formularios (son iguales) la única diferencia es que en la tabla v1 y formulario v1, le doy formato de 5 dígitos al núm expediente (por ej.: 00010/2014), para que busque correctamente el último expediente. En la tabla y el formulario v2, no le doy ese formato, y uso la consulta para extraer el número del campo cexpediente y mostrar en ella ya el último número de cada año, luego en el formulario ya sólo tengo que buscarlo en esa consulta y construir el nuevo.

En ambos formularios el campo cexpediente está bloqueado para que no se pueda editar por error, y el código se genera en el evento "Despues de actualizar" del campo finicio.

El código está ampliamente explicado.

No sé cómo expresarte mi agradecimiento. Muchísimas gracias. Funciona perfectamente. Me has sacado de un gran apuro. Saludos afectuosos des de Sevilla.

Respuesta
1

Que pena que no te pueda mandar el código pero lo tengo en el trabajo. No soy experto pero intentaré explicarte de cabeza como lo hice por si te sirve de ayuda: Para el numero de expediente usé dos campos, uno con el numero secuencial y otro con el año. El expediente lo muestro en el formulario mediante un campo calculado de nº secuencial + "/" + año. Para introducir el siguiente expediente en el registro utilizo el evento doble click de dicho campo. A dicho evento le asocio las siguientes comprobaciones:

Con la función dlookup busco en el campo año de la tabla si existe el año de la fecha (existe=nz(dlookup("campoaño","tabla"," campoaño= year(date)")).

A continuación compruebo el valor de existe: si es cero pues me indica que no hay ningún expediente del año de la fecha por lo que directamente asigno al numero secuencial el valor 1 y al año el valor del año de la fecha.; si el valor de existe es mayor que cero (año de la fecha existente), entonces hago una búsqueda del valor máximo del numero secuencial donde el año sea el actual: máximo= dmax ("numerosecuencial","tabla","campoaño=year(date). comprobado esto asigno al numero del expediente el valor de máximo +1 y al año el valor del año de la fecha..

No puedo darte el código pero la menos espero que cojas mi idea.

¡Gracias! Muchas gracias por tu rápida respuesta. Sveinbjorn El Rojo me mandó una base de datos con un ejemplo fantástico que funciona muy bien a droxbox. Podría probar el tuyo en la próxima. Gracias de nuevo. Siempre hay personas dispuestas a ayudar a otras. Muchos saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas