Access - El campo activo debe coincidir con la clave de combinación

 
Vista:
sin imagen de perfil
Val: 5
Ha disminuido su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

El campo activo debe coincidir con la clave de combinación

Publicado por David (5 intervenciones) el 26/12/2020 19:24:33
Buenas

He buscado por todas partes, pero no he encontrado ninguna solución.
Voy a ver si me explico bien.
Tengo un formulario de proveedores que depende de la tabla proveedores, y un formulario registro de facturas que se abre con un botón del formulario "proveedores", y que depende de una tabla RegistroFacturas.
Hay 3 campos coincidentes (IdProveedor, Nombre y NumIdentificacion). En la tabla Proveedores, IdProveedor es la clave principal, autonumérico creciente, en la tabla RegistroFacturas es numérico; las tablas están relacionadas uno a varios (uno=Proveedores, varios=RegistroFacturas), con la opción 3 (todos los registros de la tabla varios y solo los coincidentes de la tabla uno), aunque lo he probado con todas las opciones.
La relación entre los formularios es la misma y utiliza de clave el campo IdProveedor.
Cuando hago clic en el botón del formulario de proveedores para abrir el de facturas, tengo este código en el "al activar registro":

Private Sub Form_Current()
If CurrentProject.AllForms("ProveedoresFrm").IsLoaded Then
NumIdent = Forms!ProveedoresFrm!NumIdent
IdProveedor = Forms!ProveedoresFrm!IdProveedor
Nombre = Forms!ProveedoresFrm!Nombre
End If
End Sub

Para que me identifique, de forma automática, los campos coincidentes en los dos registros (Factura y Proveedor).

Pues bien, me sale este error:

"Se ha producido el error '-214735567 (80020009)' en tiempo de ejecución:
El campo activo debe coincidir con la clave de combinación '?' en la tabla que sirve como lado 'uno' de la relación uno a varios. Escriba un registro en la tabla del lado 'uno' con el valor de clave deseado y después realice la entrada con la clave de combinación en la tabla del lado 'varios".

Si le doy a depurar, me indica el error en la línea

IdProveedor = Forms!ProveedoresFrm!IdProveedor

He revisado las relaciones, los campos, las tablas y no encuentro el error.

¿alguien me puede echar una mano?

Muchas gracias por anticipado
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

El campo activo debe coincidir con la clave de combinación

Publicado por Anonimo (2502 intervenciones) el 27/12/2020 00:30:47
Dejando a un lado los formularios.....

Esa relación creada en una consulta ¿funciona?

Normalmente si un formulario (el 1 de la relación) tiene integrado otro (el N en esa relación) esa 'sincronización' es redundante ya que la relación que tienen (y que se puede recrear en una consulta) es algo de lo que 'se encarga Access' sin necesidad de añadir una coma.

Si son dos formularios independientes, la relación se puede recrear simplemente cambiando d forma dinámica el origen de datos del formulario 'N' en la relación (o aplicar un filtro que suele ser mas rápido) o ... simplemente no me he enterado de nada de lo expuesto.

Normalmente una relación exige que los campos que la componen existan en ambas partes (aunque estén ocultos/invisibles).
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
sin imagen de perfil
Val: 5
Ha disminuido su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

El campo activo debe coincidir con la clave de combinación

Publicado por David (5 intervenciones) el 27/12/2020 13:01:01
Hola Anónimo.
Antes de nada agradecerte el interés.
Voy a intentar contestarte por partes, a ver si me explico bien...

- Esa relación creada en una consulta ¿funciona?
No es una relación creada en una consulta, son dos tablas relacionadas uno a varios con l aopción 3 (todos los registros del lado varios y sólo los coincidentes del lado uno). El lado uno es la de Proveedores y el lado varios es la de facturas. Tienen 3 campos en común, IdProveedor, que es clave principal de la tabla y autonumérico en la tabla proveedores, y numérico en la tabla facturas; NumIdent, texto en ambos lados, y Nombre que también es texto en ambos lados.
La relación funciona, creo, pero es cierto que, aunque la columna de NumIdent aparece rellena en la tabla Proveedores, no aparece ese dato en la tabla Facturas; esto mirando los registros directamente en las tablas después de haberlos introducido a través de los formularios.

- La relación entre los formularios que, a priori, son independientes, nace de la llamada desde un botón en el formulario de proveedores (que está relacionado con la tabla proveedores), hacia el formulario de facturas (relacionado con la tabla facturas). La idea es que el formulario de facturas sólo se abra mediante ese botón, es decir, que no se abra desde otro stio o de forma independiente, porque en el "al activar registro" tengo el codigo que te indicaba en la pregunta. La relación entre ambos formularios, entiendo, nace de la relación de las tablas ¿es así?, no lo he hecho de forma manual.

- Tu tercer planteamiento no lo entiendo muy bien, no se a qué te refires con "cambiar de forma dinámica el origen de los datos" o con "aplicar un filtro"

- En la relación existen, como te comentaba, 3 campos coincidentes, uno de ellos (IdProveedor) es clave principal en la tabla del lado uno (Proveedores), los otros 2 son texto en ambos lados. Aunque me llama la atención que, siendo coincidentes y existiendo la relación, no se reflejen los datos de estos 2 campos en la tabla de Facturas (lado varios de la relación) una vez introducidos en la tabla Proveedores, ¿es normal?

En fin... no se si me explicado bien.

Ya me comentarás.

Muchas gracias por tu aportación y un abrazo
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

El campo activo debe coincidir con la clave de combinación

Publicado por Anonimo (2502 intervenciones) el 27/12/2020 18:42:20
Lo primero es que mi pregunta implicaba un poco de trabajo por parte del que tiene el problema (es una metodología útil para resolver problemas).

Las relaciones se pueden emular en las consultas, una vez emuladas se puede verificar lo que admite la relación que se pretende analizar.
Conclusión: se tenia que haber creado una consulta (y aprender de sus resultados, tanto hoy como mañana).

Si la relación funciona de forma correcta, su aplicación practica es construir un formulario (el principal) y dentro de el otro formulario.

En el principal la tabla de los '1' y en el de 'adentro' la de los 'N', Access respetara la relación y de forma automática se encarga de sincronizarlos.

Sospecho que se proviene de otro entorno y ello no permite ver con claridad que arboles forma el bosque.

Si se trata de mantener a los formularios sin relación formal (una relación creada en Access) se esta perdiendo el verdadero valor de Access, lo que se pretende se puede hacer en cualquier entorno (asociar dinámicamente diferentes conjuntos) y la pregunta que surge a continuación es: ¿tiene sentido utilizar un entorno relacional si no se van a utilizar sus herramientas de relación?.

Una relación consistente no precisa mas que un identificador que permita la unicidad, no suele ser necesario duplicar sus contenidos, esto es:

Si se distingue a un cliente con un ID o a una mercancía con un código (su ID) basta ese ID para obtener el resto de los datos, no se precisa duplicar valores repitiendo el nombre o la descripción del articulo, si se pueden guardar datos útiles (el precio puntual, los descuentos, los impuestos o los conceptos que permitan su trazabilidad).

Lo de 'cambiar de forma dinámica' el origen de datos, se aproxima a lo que se intenta sin éxito, obtener en un objeto formulario libre e independiente, algo relacionado con otro objeto formulario tan libere e independiente como el anterior, pero ... utilizando las herramientas y el poder del entorno de trabajo (Access).
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

El campo activo debe coincidir con la clave de combinación

Publicado por David (5 intervenciones) el 28/12/2020 19:03:24
Es la segunda vez que tengo un encontronazo de este tipo contigo, ¿qué te pasa?, en serio ¿qué te pasa? ¿Tienes una almorrana que no te deja vivir (ni hoy ni mañana)? ¿Te has metido un palo largo por donde los dos sabemos y andas más estirado que la paga de Navidad en casa del obrero? O ¿simplemente es que naciste con esa soberbia y prepotencia del que cree tener el conocimiento absoluto?
Pensaba hacerte un escrito cargado de ironía y sarcasmo a la altura de tu petulancia, pero sólo voy a hacer un llamamiento al foro (al que pido disculpas si molesto) con un chiste del gran Eugenio que me viene al pelo:

“Un excursionista, víctima de un resbalón cuando camina por la montaña, cae por un precipicio. En el último momento, consigue agarrarse a una rama, al borde mismo de la roca. Pataleando en un inmenso vacío, empieza a gritar, con voz angustiada: «¿Hay alguien por ahí que pueda ayudarme?». Tras unos cuantos gritos, una voz de resonancia sobrenatural contesta: «Soy tu Creador y vengo a auxiliarte. Abre las manos y déjate caer. No te preocupes, yo extenderé para ti un manto protector y te depositaré con cuidado, sano y salvo, en tierra». Enmudece el excursionista durante unos segundos, y luego vuelve a gritar con desesperación: «¿Hay alguien más?».”

Pues eso.. ¿Hay alguien más?
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

El campo activo debe coincidir con la clave de combinación

Publicado por Anonimo (2502 intervenciones) el 29/12/2020 01:37:00
Veras: el único problema que hay, es que no aceptas que alguien pueda tener mayor experiencia que tu, dedícale un poco de tiempo a la meditación y un mucho a la lectura (y gracias por preocuparte por mi salud).
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