Cómo actualizar campos automáticamente - Access

Tengo un formulario asociado a una tabla, llamados ambos OBR. Entre todos los campos me quiero centrar en tres, los cuales están relacionados con otra tabla llamada EMPRESAS. Los campos a centrarnos son "empresa"; "code" y "patronal". Esto quiere decir que cada empresa tiene un code y un número de patronal únicos para cada empresa.

Lo que quiero hacer es que a la hora de rellenar el formulario, yo seleccione o escriba el nombre de una empresa y automáticamente se actualicen (o rellenen) el code y el patronal con sus números correspondientes.

Esta es la tabla EMPRESAS

Y este el formulario OBR

Lo que quiero que en empresa al seleccionar por ejemplo CM CONTA CB se me pongan en code 730 y en patronal 11/1111111/11.

Sé hacerlo con 2 campos solo. Pero con 3 no me sale.

Respuesta
1

RESUELTO
Al final de tanto probar he conseguido resolverlo. Dejo por aquí la solución por si a alguien, tan falto de conocimientos en este sector como yo, le hiciese falta y además que no sé borrar la pregunta.
Resulta que en los 3 campos tenia señalado 2 campos solos, iguales en empresa y code y desigual con patronal. He puesto los 3 campos necesarios en cada uno de los campos y con el mismo orden. Y el código ha quedado así:

Private Sub CODE_BeforeUpdate(Cancel As Integer)
Me.EMPRESA = Me.CODE.Column(2)
End Sub
 
Private Sub EMPRESA_BeforeUpdate(Cancel As Integer)
Me.CODE = Me.EMPRESA.Column(0)
Me.NPA = Me.EMPRESA.Column(1)
End Sub
 
Private Sub NPA_BeforeUpdate(Cancel As Integer)
Me.EMPRESA = Me.NPA.Column(2)
End Sub

Y ya funciona perfecto.

Ahora tengo otro problema.

En la tabla OBR me aparecen cambiados los campos EMPRESA y PATRONAL

No sé que he hecho pero ya está [b]SOLUCIONADO[/b]

1 respuesta más de otro experto

Respuesta
1

Ya me dirás donde están, pero no consigo ver los controles Code y Patronal. Puedes hacerlo de dos formas. En el evento Después de actualizar del combinado Empresa crear un procedimiento de evento y entre Private Sub y End Sub poner

Code=dlookup("code","empresas","empresa='" & me.empresa & "'")

Patronel=dlookup("Patronal","empresas","empresa='" & me.empresa & "'")

O también convertir el combinado Empresas en uno con las tres columnas (empresa, code y patronal) y en su propiedades-formato-Número de columnas 3 y en Ancho de las columnas

5;0;0

Así las dos últimas te quedan como "ocultas". Entonces poner el código anterior como

Code="" & empresa.column(1) & ""

Patronal="" & empresa.column(2) & ""

Antes no pude ponerlo. Mi método de hacerlo con 2 campos es seleccionar el campo en el origen de la fila. Y en evento antes de actualizar poner me.campo = me.campo.columna().

Con los campos empresa y code me lo hace perfecto. El problema está entre empresa y patronal, que al seleccionar la empresa solo cambia el code y en patronal pone el mismo número que el code, al seleccionar patronal si me cambia la empresa, pero quiero que sea la empresa la que cambie todo.

Este es el código que tengo en uso

Private Sub CODE_BeforeUpdate(Cancel As Integer)
Me.EMPRESA = Me.CODE.Column(1)
End Sub
 
Private Sub EMPRESA_BeforeUpdate(Cancel As Integer)
Me.CODE = Me.EMPRESA.Column(0)
Me.NPA = Me.EMPRESA.Column(0)
End Sub
 
Private Sub NPA_BeforeUpdate(Cancel As Integer)
Me.EMPRESA = Me.NPA.Column(1)
End Sub

Funciona bien de ambas formas. Mira, si tengo la tabla Empresas

Te pongo un formulario para las tres posibilidades de Dlooukp

A la izquierda, tanto si elijo una cosa u otra me "rellena" los cuadros de texto. Los cuadros combinados se llaman Elegir... y el código sería

Private Sub ElegirCod_BeforeUpdate(Cancel As Integer)
EmpresaCod = DLookup("nombreempresa", "empresas", "codempresa=" & Me.ElegirCod & "")
PatronalCod = DLookup("numeropatronal", "empresas", "codempresa=" & Me.ElegirCod & "")
End Sub
Private Sub ElegirNombre_BeforeUpdate(Cancel As Integer) '
CodEmpresa = DLookup("codempresa", "empresas", "nombreempresa='" & Me.ElegirNombre & "'")
PatronalEmpresa = DLookup("numeropatronal", "empresas", "nombreempresa='" & Me.ElegirNombre & "'")
End Sub
Private Sub ElegirPatronal_BeforeUpdate(Cancel As Integer)
EmpresaPatronal = DLookup("nombreempresa", "empresas", "numeropatronal='" & Me.ElegirPatronal & "'")
CodPatronal = DLookup("codempresa", "empresas", "numeropatronal='" & Me.ElegirPatronal & "'")
End Sub

He tenido que variar los nombres de los cuadros de texto porque no se puede repetir nombres.

En el caso de la derecha, el combinado tiene tres columnas, pero sólo se muestra la columna 0, la dependiente, y en este caso el código es

Private Sub ElegirCodBis_BeforeUpdate(Cancel as Integer)
EmpresaBis = ElegirCodBis.Column(1)
PatronalBis = ElegirCodBis.Column(2)
End Sub

Los otros sería igual, cambiando los valores

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas