Como pasar el valor de un formulario a una tabla en el subformulario

Tengo una tabla "Poliza", que contiene un campo de Fecha. En el formulario de captura, que llamo Cap Póliza" se calcula el valor del mes y se actualiza el campo "mes" con las dos instrucciones siguientes:

Private Sub Fecha_AfterUpdate()
Call Calcmth
End Sub

Public Sub Calcmth()
Dim vmes As Double
vmes = Nz(Me.TxtMes.Value, 0)
Me.Mes.Value = vmes
End Sub

La tabla "Poliza" está relacionada con otra tabla llamada "Partidas", que también contiene el campo "Mes". Deseo que en el subformulario, para cada registro que se capture en la tabla partidas, se ponga automáticamente el valor del mes que se calculó en la forma principal.

1 Respuesta

Respuesta
1

Creo que te complicas mucho la vida, Si tienes un cuadro de texto, al que llamaremos fechacompra, con un valor, por ejemplo 20/09/2020, basta con que en sus propiedades-eventos-después de actualizar pongas

Mes=Month([fechacompra]) y te pondrá un 9(numérico)

ó

mes=format([fechacompra],"mm") te pondrá 09 (texto)

ó

mes=format([fechacompra],"mmm") te pondrá Sep

ó

mes=format([fechacompra],"mmmm") te pondrá Septiembre.

Para que en un cuadro de texto (TextA)de un subformulario te aparezca el valor de otro cuadro de texto(TextF), basta con poner en sus propiedades como valor predeterminado el cuadro de texto del formulario, o si lo prefieres en código, poner en sus propiedades-eventos-al recibir el enfoque, o en el evento al activar el registro del subformulario

If me.newrecord then

textA=me.parent!textf

end if

Cuando hace referencia a un control en Access, si no le dices nada en contra, ya sobreentiende que te refieres a su valor, por eso sobra lo de value. La función Nz si no le dice nada más, transforma directamente los nulos en ceros, por eso, si pones

vmes=Nz([mes]) es suficiente

Por otro lado, si los meses son números enteros, es decir, 1, 2, 3 ¿Para que defines Vmes como double? ¿Para qué quieres los decimales?, basta con ponerlo como Vmes as byte

Buenos días Julián, 

Mil gracias por tu respuesta. Deseo que el valor calculado del número de mes en el formulario, que actualiza correctamente la tabla "Poliza", se actualize tambien en el campo "mes" de cada registro que se capture en el subformulario que actualiza la tabla "Partidas". Que me recomiendas hacer?

No me han comunicado la pregunta. Esta página se va a la mierda.

Ya te dije que depende de que valor de mes quieres que te ponga, en el ejemplo le he puesto que lo ponga como nombre del mes. Cuando en el formulario Compras, he puesto la fecha de compra

Al poner el cursor en el cuadro de texto Mes del subformulario

En este caso, en el evento Al recibir el enfoque del cuadro de texto Mes del subformulario le he puesto

If isnull([mes]) then

mes=format(me.parent!fechacompra,"mmmm")

end if

Pero como te decía puede ser cualquier expresión

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas