¿Cómo guardo un nvo. Registro en un formulario princip cuyos campos son con valores predeterminados?

Estoy trabajando en un formulario y un subformulario que están relacionados por un campo, el formulario principal tiene 3 campos que se llenan con valores predeterminados, el problema surge cuando lleno el primer registro en el subformulario y después quiero pasar a llenar un segundo registro me muestra el error : "NO SE PUEDE AGREGAR O CAMBIAR EL REGISTRO PORQUE SE NECESITA UN REGISTRO RELACIONADO CON LA TABLA "VENTAS" ". He intentado guardar primero el registro del formulario principal pero no he podido lograrlo.

1 respuesta

Respuesta
1

Ese error suele ocurrir cuando el formulario principal y el subformulario no se pueden sincronizar a través de los campos de la tablas.

Revisa que la tabla del subformulario esté relacionada con la del formulario a través de un campo índice.

En la tabla del formulario el campo tiene que ser indexado y de clave única, en la tabla des subformulario tiene que ser del mismo tipo de dato (excepto si en la tabla padre es autonumérico, que en este caso en la tabla hija debe ser entero largo), indexado y con repeticiones.

Luego has de revisar las relaciones, que los dos campos estén relacionados y que la integridad referencial sea correcta.

Gracias por tu respuesta y disculpa el retrazo. Ya estuve revisando todo lo que me sugeriste y todo lo tengo tal cual como lo indicas, pero aun así no me dió resultado, tuve que hacer una pequeña modificación en el valor de un control que esta en el formulario principal a través del evento "al cargar" para que el nuevo registro del formulario principal se detectara como ya creado y me dejara crear registros en el subformulario. Pero ahora tengo el problema de que quiero borrar el registro creado en el formulario principal, si no hay ningún registro creado en el subformulario, he intentado usar el DoCmd, pero me muestra el error 2046 "LA ACCIÓN O COMANDO "SeleccionarRegistro" NO ESTA DISPONIBLE AHORA", como esta es la primera vez que lo utilizo no sé cómo resolverlo.

Este es el código que estoy utilizando:

Private Sub Form_Close()
Dim cuenta As Integer
Dim qregistro As Integer
cuenta = 0
cuenta = Nz(DSum("[PrecioFinal]", "AltaVentas", "[ConsVenta]=[forms]![CtrlVentas]![NoVenta]"))
If cuenta = 0 Then
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord
End If
End Sub

saludos

Te pido disculpas por el retraso.

El problema que tienes es debido a que las operaciones de seleccionar y borrar registro las estás realizando en el formulario principal, no en el subformulario.

La mejor solución que veo es que utilizaras formularios independientes, es decir, no vinculados a tablas o consultas, cargando los controles desde recordsets, y actualizando las tablas agregando, modificando o eliminando datos por código y lenguaje SQL.

Gracias, intentaré hacer lo que me sugieres y si se me complica te estaré molestando de nuevo.

Gracias por tu atención y tu tiempo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas