Dar número de Expediente en Acess

a tod@s. Os cuento mi problema. Estoy trabajando en una base de datos Access en la que hay una tabla llamada 'Ayuntamientos' que tiene dos campos:

-Idayuntamiento que es secuencial

-Ayuntamiento, que recoge el nombre del ayuntamiento. Supongamos que tiene ahora mismo tres ayuntamientos: 'Madrid', 'Barcelona' y 'Valencia'.

En otra tabla llamada 'TipodeExpediente' tengo los siguientes campos:

-Idcodigo que es secuencial

-Ayuntamiento, que recoge el nombre del ayuntamiento

-Actuacion, que recoge el tipo de actuacion, en este caso 'Autopista' y 'Aeropuerto'

Lo que quiero armar ahora es un formulario que me extraiga los ayuntamientos de la tabla 'Ayuntamientos' para que yo seleccione el que desee a través de un desplegable. Y una vez seleccionado cualquiera de esos tres ayuntamientos, me recorra la tabla 'TipodeExpediente' para que me vea que tipo de actuación tiene asociado y me arroje en un campo nuevo de ese formulario, un código.

Me explico: Supongamos que yo en ese desplegable de ese formulario elijo el ayuntamiento 'Madrid'. Si ese ayuntamiento tiene asociado en la tabla 'TipodeExpediente' la actuacion 'Aeropuerto', que me arroje un código que esté codificado así: Madrid001AE, donde Madrid es el nombre del Ayuntamiento, 001 es un secuencial y AE es la actuación.

De tal modo que si yo, una vez grabado ese registro, entro nuevamente en ese formulario y selecciono ahora el ayuntamiento de Valencia por ejemplo, y Valencia tuviera asociada la actuación 'Autopista', el resultado del código fuera VA002AU, VA de Valencia, 002 porque es el secuencial (el 001 se le asignó a Madrid) y AU es la actuación.

Por último si eligiera Barcelona y Barcelona no estuviera en la tabla 'TipodeExpediente', el resultado fuera BA003NE, BA de barcelona, 003 el secuencial y NE de 'No Existe'.

No sé si me he explicado. ¿Es posible?

1 respuesta

Respuesta

No sé si lo he entendido bien, pero por si fuera así

Si tengo la tabla TipoExpediente

Y el formulario, donde he elegido Madrid y luego Cartagena, que sí están en la tabla, y ahora elijo Barcelona que no está

Cuando la elijo

Si ahora elijo Valencia que sí está

no sé si era eso( lo de Au es por Autopista) y el 004 es el correlativo

También está la tabla Ayuntamientos tal como dijiste que era, con Idayuntamiento y ayuntamiento. El código del evento Después de actualizar del combinado ayuntamiento del formulario es

Private Sub Ayuntamiento_AfterUpdate()
If Nz(DCount("*", "tipoexpediente", "ayuntamiento='" & Me.Ayuntamiento & "'")) = 0 Then
Codigo = Ayuntamiento & Format(Nz(DCount("*", "tabla1")) + 1, "000") & "NE"
Else
Dim s As String
s = Left(DLookup("actuacion", "tipoexpediente", "ayuntamiento='" & Me.Ayuntamiento & "'"), 2)
Codigo = Ayuntamiento & Format(Nz(DCount("*", "tabla1")) + 1, "000") & s
End If
End Sub

Genial. Muchísimas gracias. No pensé que fuera posible. Visto que es posible, vamos a complicar un poco más la cosa.

Introduzcamos una tabla inicial más que llamaremos Proyecto. En esa tabla proyecto hay solo dos valores: "Autopista" y "Aeropuerto".

Imaginemos que en la tabla Ayuntamiento, además de los campos Ayuntamiento y Actuación hay otro campo más es Habitantes. Así, cuando yo en el desplegable inicial elijo el Ayuntamiento, me muestra el campo Habitantes asociado a ese Ayuntamiento. A su vez, se me habilita un nuevo campo llamado Municipio en el que yo escribiré el valor que quiera. Y además, en otro desplegable elegiré una de las dos opciones de la tabla "Proyecto".

Por ejemplo, si yo elijo "Madrid" me mostrará en el campo 'Habitantes' el número de habitantes que tiene Madrid en la tabla 'Ayuntamientos' y se me habilita a su vez otro campo llamado Municipio donde yo escribo por ejemplo "Mostoles" y en el desplegable elijo como proyecto "Autopista".

En la tabla Tipo de Expediente habría también un campo llamado Municipio en el que habría una serie de municipios asociado a cada ayuntamiento que esté en esa tabla (que recordemos pueden no ser todos). Es decir, Madrid puede tener en la tabla 'Tipo de Expediente' en el campo Municipio un valor 'Mostoles', otro valor 'Alcobendas' y otro valor 'Getafe'.

La función debería comprobar no ya que Madrid está en la tabla Tipo de Expediente como ponía en el ejemplo inicial sino que, además, el Municipio que yo haya escrito una vez seleccionado Madrid (recordemos que el campo Municipio lo tecleo yo una vez elegido el ayuntamiento) está también en la tabla Tipo de Expediente y comprobar el tipo de Actuación que se lleva a cabo. De tal modo que las premisas para la codificación serían las siguientes:

- Si yo del desplegable de la tabla 'Proyecto' he elegido "Autopista" el código comenzaría por AUT. Si he elegido "Aeropuerto" comenzaría por AER.

- A continuación vendría el secuencial del que hablábamos en el ejemplo inicial: 001 para el primero, 002 para el segundo, etc...

- A continuación una "/" seguida del año por ejemplo: "/20"

- Y por último (y creo que esto es lo verdaderamente complicado), el sistema tendrá que validar que si Madrid y Móstoles están en la tabla "Tipo de Expediente"; si llevan asociados la misma actuación que hemos elegido en el desplegable y si, además, el número de habitantes de la tabla inicial no supera los 2000. De cumplirse estos parámetros, las dos letras finales del código serían TD. En este caso, la codificación si se cumplen todas las premisas sería algo así:

AUT001/20TD

Pero si fallara alguno de los parámetros (es decir, o que Madrid no estuviera en la tabla "Tipo de Expedientes" y por consecuencia tampoco el municipio; que Madrid estuviera pero el Municipio en cuestión no; que estando Madrid y el municipio, el número de habitantes fuera superior a 2000 o bien que cumpliéndose que está Madrid, el municipio y el número de habitantes es inferior a 2000, la actuación asociada en la tabla "Tipo de Expediente" no fuera "Autopista" sino que fuera "Aeropuerto") entonces la codificación sería así:

AUT001/20LA

No sé si me he explicado y si todos estos condicionantes son posibles. Muchas gracias por tu atención

Vamos a ver, poder se puede hacer de todo. Lo que no me parece bien es que empieces con una pregunta, te pongo la solución y luego resulta que la realidad es que no se parece en nada a lo que habías preguntado. ¿Por qué no empezáis preguntando lo que realmente se quiere o necesita?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas