Como mostrar un campo de una tabla u otro de otra, según último trámite

Ando loco buscando la manera de conseguir que en un formulario continuo se me muestre un campo de una tabla u otro de otra según el último trámite realizado. Me explico mejor:

Tengo estas tablas:

- [FINCAS] con [id_finca], [n_finca], [subfinca], etc.

- [ENLACE_EXPEDIENTES] con [id_finca] y [id_expediente]

- [EXPEDIENTES_ZZ] con [id_expediente_zz], [nombre_expediente_zz], etc

- [EXPEDIENTES_XX] con [id_expediente_xx], [nombre_expediente_xx], etc

Y necesito que en dicho formulario me carguen las fincas de tal forma que si una finca tiene un expediente zz se me muestre el nombre del mismo, pero que si tengo un expediente xx se me muestre el otro..

Creo que es una locura pero necesito hacerlo de esta forma.. Ojalá me podáis ayudar.

1 respuesta

Respuesta
2

En principio puedes hacerlo fácilmente. Eso sí, al no saber como está construido el formulario y no me aclaro con que tabla está hecho( que por cierto, te sobra la tabla de enlace), te pongo un ejemplo. Supongamos que tengo un formulario con los controles Expediente, finca, etc. En el evento Después de actualizar del cuadro de texto Expediente puedes poner

If dcount("*","expedientezz","expediente='" & me.expediente & "'")>=1 then

finca=dlookup("finca","expedientezz","expediente='" & me.expediente & "'")

else

finca=dlookup("finca","expedientexx","expediente='" & me.expediente & "'")

end if

Me explico, una vez que hayas escrito el expediente(que he supuesto que es texto) y pulses Enter, cuenta si hay algún registro en la tabla ExpedientesZZ, que tenga el valor de ese expediente. Si lo hay busca el valor de finca que le corresponda a ese registro, si no lo hay lo busca en la tabla ExpedienteXX.

Si tengo la tabla Una

Y la tabla Otra, donde voy a recordar el valor de expediente 22222

En el formulario, en el cuadro de texto Texto2 escribo

Cuando pulso Enter

Primero ha contado si hay ese expediente en la tabla Una y como no lo hay, muestra el valor de la tabla Otra

If DCount("*", "una", "expediente='" & Me.Texto2 & "'") >= 1 Then
Texto4 = DLookup("yoquese", "una", "expediente='" & Me.Texto2 & "'")
Else
Texto4 = DLookup("yoquese", "otra", "expediente='" & Me.Texto2 & "'")
End If

Buenos días Icue, gracias por la respuesta!

La verdad es que si que necesito la tabla de enlace porque tengo que tener relacion varios a varios entre [fincas] y [expedienteszz], [expedientesxx]

Lo que tu me explicas sería para que, según lo que escribas en un campo te coja un valor de una tabla o otro de otra. Pero realmente lo que necesito es que de un listado que ya tengo, cada vez que abra el formulario se me actualice el campo según la relación que hay en la tabla de enlace. No se si me he explicado bien.. El formulario sería tal que así:

Si tengo mas fincas, aparecen una debajo de otra con su correspondiente propietario y expediente.

En la tabla [enlace_expedientes] tengo lo siguiente:

En la tabla [fincas] esto:

Y en una de expedientes, por ejemplo, esto:

Y en otra de expedientes, esto:

Entonces en el formulario necesito que según la relación en la tabla de enlace, me muestre el campo correspondiente. Ya sea el [nombre_expediente_general] o [nombre_expediente_ma].

Un saludo y gracias por la ayuda Icue.

Permíteme antes hacer un razonamiento. Supongamos que tengo una tabla Fincas con los datos registrales, y sólo otra tabla donde le digo a que expediente( sea herencia, condominio, ventas, etc) pertenece esa finca, con el resto de campos que sea. Personalmente creo que sólo con ellas es suficiente.

En el caso tuyo, he reproducido las tablas, como las has puesto en la imagen, excepto que a la tabla Fincas le he añadido un campo Expediente.

Como no ´se cual es el origen de registros del formulario le he puesto la tabla Fincas. Te lo muestro antes de poner el código

En el evento Al abrir del formulario le he puesto

Dim I As Byte
DoCmd.GoToRecord , , acFirst
For I = 1 To Me.Recordset.RecordCount
Expediente = DLookup("idexpediente", "enlaceexpedientes", " idfinca= dlookup(""idfinca"",""fincas"",""nFINCA = '" & Me.NFinca & "'"")")
DoCmd.GoToRecord , , acNext
Next
DoCmd.GoToRecord , , acFirst

Con lo cual al abrirlo

Buenos días Icue,

Respondiendo a lo primero, cada tabla de expedientes, la tengo que tener así creada por que cada una tiene campos diferentes, los que te muestro son los base pero realmente hay mas.

Continuando con la posible solución que me das; creo que como tengo un formulario para cargar las fincas por zonas, funciona con dos cuadros combinados para elegir la zona y según eso carga los valores en el subformulario, entonces me da error 2105 (No se puede ir al registro especificado) en la siguiente línea:

Lo he puesto de esta forma ya que no haría falta un segundo DLookup al buscar por ID_FINCA que es el valor único.

Un saludo,

Jesús Painceiras.

También decir que necesitaría (únicamente en el caso de que se pudiera) que no mostrase el ID_EXPEDIENTE, sino el nombre del expediente correspondiente.

Creo que es mejor, que si quieres, repito si quieres, mándame una copia con tres o cuatro registros inventados a [email protected] y así le puedo echar un vistazo. Si lo haces, en el asunto del mensaje pon tu alias Jesús, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas