Insertar registros de un formulario

Estoy desarrollando un liquidador de impuestos en access y vba en términos generales la idea es digitar la cedula de un tercero en un cuadro conmbinado y a través de este se valida si esta creada la cedula en caso de no estarlo se lanza un formulario de creación del tercero se crean los datos y luego a través de un botón de liquidación se pasa a otro formulario a realizar la liquidación, cargando los datos del tercero(nombre dirección teléfono periodo liquidación) el inconveniente que tengo es que direcciono los datos del preformulario del tercero al formulario de liquidación y pasan bien pero cuando paso a grabar los datos de la liquidación me dice que no tengo datos en la cedula y en el periodo de liquidación que son las llaves principales y que debo digitar la información para estos campos, como puedo actualizar los campos de la base de datos con los campos referenciados en el formulario inicial, hice la prueba de digitarlos directamente sin referencialos y funciona bien ..:( pero no es la idea

Al hablar de direccionar me refieron a a través del generador de expresiones en los campos del formulario de liquidación enruto las variables del formulario de validación del tercero .

Formularios![frm_buscatercero]![txtnomcliente]   =  origen de control

2 respuestas

Respuesta
2

No acabo de entender tu explicación, pero intuyo que el problema está en que a esos dos cuadros de texto que mencionas le has puesto como origen de control un vínculo a otro formulario, con lo que automáticamente se convierten en controles independientes y por tanto, dejan de estar vinculados a la tabla sobre la que haces el formulario, y por eso te salta ese "error" (o te pide que los digites...)

La solución es muy fácil, y tienes varias alternativas:

1º/ Le pasas los valores por código: en el evento que veas más adecuado (por ejemplo al cargar, al abrir, en un botón...) le pones:

Me.NombreControl=Forms!frm_buscatercero!txtnomcliente   

Con lo que va en cursiva con los nombres del formulario y cuadro de texto de los que quieres pasar los datos.

2º/ Añades un nuevo cuadro de texto oculto (vinculado a la tabla) y le pasas el valor se4gún lo que se explica en este ejemplo: http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/60-guardar-campo-calculado-en-tabla

Respuesta
2

No sé si lo he entendido. Vamos a suponer que tengo una tabla Una con una serie de clientes

Me ha parecido entender que tienes un formulario con un combinado donde escribes el nombre de un cliente y que si no está...

Escribo Pepe Lopez en el combinado al que yo he llamado Elegir

Y me avisa que no lo tengo en la tabla, que si quiero darlo de alta. Si le digo si, se abre el formulario Una en vista diálogo para que rellene sus datos

En cuanto cierro el formulario Una, automáticamente se abre el otro, ya con sus datos

El código del evento Al no estar en lista y el de Después de actualizar el valor del combinado Elegir es

Private Sub Elegir_AfterUpdate()
DoCmd.OpenForm "ventas", , , , acFormAdd, acDialog
End Sub
Private Sub Elegir_NotInList(NewData As String, Response As Integer)
Dim clientenuevo As Integer, título As String, mensaje As Integer
título = "El cliente que ha escrito no está en la lista"
mensaje = vbYesNo + vbDefaultButton1
clientenuevo = MsgBox("¿Desea agregar este cliente a la lista ?", mensaje, título)
    If clientenuevo = vbYes Then
    DoCmd.RunCommand acCmdUndo
DoCmd.OpenForm "una", acNormal, "", "", acAdd, acDialog
Response = acDataErrAdded
End If
End Sub

Y el código del evento Al activar registro del formulario Ventas es

Private Sub Form_Current()
If Me.NewRecord Then
FechaVenta = Date
If CurrentProject.AllForms("formulario5").IsLoaded Then
IdCliente = Forms!formulario5!Elegir
Pais = DLookup("pais", "una", "idcliente=" & Me.IdCliente & "")
End If
End If
End Sub

Y no necesitas ningún botón, ya que el evento Al no estar en lista es anterior al evento Después de actualizar.

¡Gracias! Por la información estaría bien la solución que planteas es solo que adicional al código del tercero debo digitar el año que se va llevar acabo la liquidación y luego si enlazar el formulario de la liquidación trayendo los datos del cliente,, pero me has dado una gran idea con el código que me has proporcionado agradezco mucho tu colaboración

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas