Traspaso datos de un Formulario a otro Formulario

Necesito una pequeña ayuda en un proceso

Intento traspasar datos de un Formulario a otro Formulario a otro a través de estas funciones:

Private Sub Comando7_Click()
Forms![APUNTESCOMPRASGASTOS]![IdGastoCompra] = Forms![MAESTROPROVEEDORESCOMPRAS]![IdGastoCompra]
Forms![APUNTESCOMPRASGASTOS]![Nombre] = Forms![MAESTROPROVEEDORESCOMPRAS]![Nombre]
Forms![APUNTESCOMPRASGASTOS]![TipoApunte] = Forms![MAESTROPROVEEDORESCOMPRAS]![TipoApunte]
Forms![APUNTESCOMPRASGASTOS]![Actividad] = Forms![MAESTROPROVEEDORESCOMPRAS]![Actividad]
DoCmd.Close
End Sub

Mes hace el traspaso perfectamente en el resto de los Campos pero en el momento de pasar este campo [IdGastoCompra] me da error de traspaso. Este campo es Autonumérico y el que identifica el Proveedor.

El error que da es:

Error 2448 en tiempo de ejecución

No se puede asignar un valor a este objeto

Os agradeceria muchisimo si puedieseis darme alguna solucion al problema.

1 respuesta

Respuesta
1

Si IdGastoCompra en el formulario de destino (APUNTESCOMPRASGASTOS) es autonumérico, como el propio nombre indica, es automático, es decir, se genera el sólo cada vez que entras a un nuevo registro. Esto significa que no le puedes asignar tu el valor que quieras.

La solución, cambiarle el tipo de datos de autonumérico a número.

Si IdGastoCompra en el formulario de destino no fuera autonumérico, comprueba que no lo tengas como índice sin permitir duplicados en el diseño de la tabla, aunque no creo que sea este el caso, pues el mensaje de error sería otro.

Hola, como estas. Te explico un poco el funcionamiento.

En un proceso de Compras, he creado un formulario en la que aparacen todos los Proveedores y las busquedas son mas rapidas que a traves de un Cuadro Combinado ya que puedo realizar filtros de seleccion de busqueda.

Lo que trato es seleccionar un Proveedor y que los datos pasen al Formulario de Compras.

Tabla Proveedores: MAESTROCOMPRASYGASTOS

Clave autonumerica : IdGastoCompra

Nombre Proveedor:  Nombre

Tabla Apuntes Compras: APUNTESCOMPRASGASTOS

Contador Lineas (Autonum.): IdApunte

Codigo Proveedor: IdGastoCompra

Lo que se trata es traspasar el valor del Formulario de busquedas [MAESTROCOMPRASYGASTOS] a la Cabecera de apuntes [APUNTESCOMPRASGASTOS].

Los dos campos estan relacionados a traves de [IdGastoCompra]

Pero al ejecutar el traspaso me da el error que he detallado antes:

Error 2448 en tiempo de ejecución

No se puede asignar un valor a este objeto

Solo me ocurre en ese Campo ya que he probrados traspasando otros campos y me los pasa perfectamente y no se a que puede ser debido.

Gracias y un saludo

Comprueba que el campo de destino se llama efectivamente IdGastoCompra (Propiedades->Pestaña Otros->Nombre)

Si no, tendría que ver una copia de tu BD para intentar dar con el problema.

Te puedo preparar si quieres una BD con el proceso que esta fallando para que la vieses.

Puedes enviármela comprimida por correo a:

[email protected]

O si prefieres, subela a dropbox o similar y ponme aquí el enlace de descarga.

El problema es justo el que te comentaba en mi primera respuesta:

Estás intentando pasar los datos del formulario "MAESTROPROVEEDORESCOMPRAS "(que está basado en la tabla (V) MAESTRO COMPRAS Y GASTOS) al formulario "(V) CABECERA APUNTES COMPRAS Y GASTOS"(que está basado en una consulta de varias tablas)

El campo que te da problemas: "IdGastoCompra" lo tienes definido en la tabla ((V) MAESTRO COMPRAS Y GASTOS) como autonumérico, por eso no te deja asignarle un valor.

Si te fijas, en ambos formularios estás trabajando sobre el mismo registro de la misma tabla, lo que no tiene sentido.

La solución sería, y creo que es lo que intentas hacer, modificar el origen de tu cuadro de texto IdGastoCompra del formulario "(V) CABECERA APUNTES COMPRAS Y GASTOS" para que almacene el IdGastoCompra pero de la tabla [(V) CABECERA APUNTES COMPRAS Y GASTOS], poniendo en su origen de control:

[(V) CABECERA APUNTES COMPRAS Y GASTOS].IdGastoCompra

en vez de:

[(V) MAESTRO COMPRAS Y GASTOS].IdGastoCompra

¿Hola cómo estas?.

No se si he entendido bien tu contestación y es exactamente esto lo que debo de poner, aunque creo que no porque me da el error:

Se ha producido el error '2448' en tiempo de ejecución

No se puede asignar el valor a este objeto

Asi es como tengo ahora colocado la rutina de traspaso de un Form al otro Form

Private Sub Comando7_Click()
Forms![(V) CABECERA APUNTES COMPRAS Y GASTOS]![IdGastoCompra] = Forms![(V) CABECERA APUNTES COMPRAS Y GASTOS].IdGastoCompra
'Forms![(V) CABECERA APUNTES COMPRAS Y GASTOS]![Nombre] = Forms![MAESTROPROVEEDORESCOMPRAS]![Nombre]
'Forms![(V) CABECERA APUNTES COMPRAS Y GASTOS]![TipoApunte] = Forms![MAESTROPROVEEDORESCOMPRAS]![TipoApunte]
'Forms![(V) CABECERA APUNTES COMPRAS Y GASTOS]![Actividad] = Forms![MAESTROPROVEEDORESCOMPRAS]![Actividad]

DoCmd.Close
End Sub

Desde el Cuadro Combinado pasa perfectamente los datos seleccionados.

Ya me dices donde esta el error. Gracias. Un saludo

Jose, obviamente no me has entendido:

El código lo tenías bien como estaba, el problema está en el diseño del propio formulario, el el campo de a tabla sobre el que basas el cuadro de texto IdGastoCompra.

Te adjunto dos imágenes, para que veas la diferencia, y vuelve a leer mi respuesta anterior con calma:

Original:

Corregido:

Eso es lo que tienes que cmabiar

Ahora si, funcionando perfectamente.

Como siempre, tus respuestas a mis poreguntas, han sido claras y con una gran efectividad en todas las ayudas que te he pedido.

Muchas gracias por tu atención.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas