Access - No se puede asignar un valor a este objeto

 
Vista:
Imágen de perfil de Martha

No se puede asignar un valor a este objeto

Publicado por Martha (3 intervenciones) el 22/11/2022 20:15:44
Buenas tardes.

Tengo dos tablas, una empleados y otra teléfonos. Cada empleado puede tener un número indeterminado de teléfonos asignados (fijo, móvil, extensión, datos, etc).

El campo pkempleado_id es primary key en la tabla empleados, En la tabla teléfonos este campo está relacionado con fkempleado_id como foreing key, con relación de integridad referencial, actualizar en cascada, eliminar en cascada.

Ahora quiero tener un formulario para rellenar la tabla empleados y otro para rellenar la tabla teléfonos, como formularios relacionados y quiero pasar automáticamente el pkempleado_id como parámetro.

Para ello, he ido al evento click de un botón que me abre el formulario relacionado y he puesto me.pkempleado_id en el parámetro openargs que abre el formulario.

Después, en el evento open del formulario teléfonos he puesto
me.fkempleado_id = me.openargs

Al pulsar el botón me sale el error -214735267 (80020009) en tiempo de ejecución. No se puede asignar un valor a este objeto.

He estado buscando información, Microsoft aconseja en un artículo añadir la librería msadox.dll, que ha añadido por si tenía algo que ver.

Se aceptan sugerencias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

No se puede asignar un valor a este objeto

Publicado por Anonimo (3316 intervenciones) el 22/11/2022 21:17:44
Intentarlo en el evento Load.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Martha

No se puede asignar un valor a este objeto

Publicado por Martha (3 intervenciones) el 28/11/2022 22:49:30
Ahora el error ha cambiado a:

No se puede agragar o cambiar el registro porque se necesita un registro relacionado en la tabla tbl_empleados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No se puede asignar un valor a este objeto

Publicado por Anonimo (3316 intervenciones) el 29/11/2022 01:18:00
En una relación entre tablas con actualización en cascada se cumple:

Si es un formulario con un subformulario: al crear un nuevo registro en el subformulario la clave se asume por lo que no sería necesario asignar el valor.
Al cambiar entre formulario y subformulario (y viceversa) de forma automática se pasa por el evento 'salir del formulario' y el correspondiente guardado.

En formularios abiertos de forma independiente, primero se ha de guardar el registro del principal (el empleado) para que se le puedan asignar registros que asuman la relación.
En este caso (formularios independientes), mientras no se guarda el registro que hace la función de principal el registro no 'existe', la relación no se cumple y no permitirá asignar registros relacionados.

Solución: guardar el registro 'empleado' antes de asignarle teléfonos, esto puede hacerse con DoCmd.RunCommand AcCmdSaveRecord antes de desplazar el foco (o abrir el formulario) y asignarle teléfonos.

No tiene nada que ver con el problema anterior (intentar asignar valores a objetos que aún no existen)

Es el funcionamiento esperado en bases de datos relacionales (independiente de como/donde se almacenen los datos).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Martha

No se puede asignar un valor a este objeto

Publicado por Martha (3 intervenciones) el 30/11/2022 23:23:51
Muchas gracias de nuevo por tu tiempo y tu explicación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar