Campo calculado en un formulario access de los valores del subformulario

Tengo una tabla llamada "fitx" donde hay los siguientes campos: [Idfitx] [idreferencia] [cantidad] [personal] [hora inicial] [hora final] [situacion]

Tengo una consulta llamada "tiempo" donde calculo la diferencia entre [hora inicial] y [hora final]. Este valor sea llama [minutos]. Incluye también todos los campos de la tabla "fitx"

Los datos los entre desde un formulario llamado "tancar fitx" creado a partir de la tabla "fitx" y con un subformulario "tiempo subform" creado a partir de la consulta "tiempo" donde se muestran todos los valores donde [idreferencia] sean iguales a [idreferencia] del formulario

Me gustaría que cuando cambio el valor [situación]=3 en el formulario me calcule en un campo (lo llamaré "actividad") del formulario lo siguiente:

Si en el subformulario hay algún registro que tenga el campo [cantidad] vacio el valor del campo "actividad" sea la suma de todos los valores [minutos] que hay en el subformulario dividido por la suma de todos los valores [cantidad]. En caso de que no haya ningún registro que tenga el campo [cantidad] vacío el valor del campo "actividad" debe ser [minutos]/[cantidad]

A ver si me puedes ayudar ya que llevo varios días dándole vueltas y no lo consigo resolver

1 Respuesta

Respuesta
1

¿Me puedes enviar la estructura de las tablas del formulario y del subformulario?

Para darte el ejemplo del código que debes poner en el evento "después de actualizar" del campo situacion.

Perdona mi ignorancia pero como mando la estructura?

Gracias

Si quieres solamente escribe el nombre de la tabla y el nombre de sus campos.

formulario: tancar fitx

consulta origen: fitx

Campos: [Idfitx] [idreferencia] [cantidad] [personal] [hora inicial] [hora final] [situación]


Subformulario: tiempo

Consulta origen: tiempo

Campos: [personal][hora inicial] [hora final] [minutos] [idreferencia] [situación] [actividad] [cantidad]

Hola,

Espero que te sirva esta información.

Muchísimas gracias

'Puedes usar este ejemplo de código en el evento "después de actualizar" del campo

"situación", solamente escribe la formula que mencionas y reemplaza el texto "tu formula"

Dim rs as recordset
Dim Db as database
Dim xActividad as single
Dim SrtSQL as string
Set db=dbengine(0)(0)
If situación = 3 then
strSQL=“Select sum(minutos) as Tmin, sum(Cantidad) as Tcan”
strsql=strsql & “ From tiempo”
set rs=db.openrecordset(strSQL)
if rs.recordcount >0 then
if isnull(rs!tcant) then
Actividad= tu formula
else
Actividad = tu formula
end if
end if
End if

Hola,

Lo he estado probando (he cambiado los nombres de las tablas y campos pero he puesto los nuevos nombres) me da un error en el punto Set rs = Db.OpenRecordset(strSQL)


Puedes ayudarme?

Te mano la instrucción tal cual la he puesto

Muchas gracias de antemano

Private Sub situacio_partida_AfterUpdate()
Dim rs As Recordset
Dim Db As Database
Dim xactivitat_fitxatge As Single
Dim SrtSQL As String
Set Db = DBEngine(0)(0)
If situacio_partida <> "Muntatge" Then
strSQL = "Select sum(minuts_partida) as Tmin, sum(Unitats) as Tcan"
strSQL = strsql & "From FixtatgesACTIVITAT"
Set rs = Db.OpenRecordset(strSQL)
If rs.RecordCount > 0 Then
If IsNull(rs!tcant) Then
Actividad = 1 + 1
Else
Actividad = 2 + 2
End If
End If
End If
End Sub

Debes checar que tus nombres de campo y tablas estén correctos. Me doy cuenta que antes de "From debe tener un espacio. Para revisar tu instrucción que se encuentra en la variable strSQL, al momento que te mande algún error puedes ver el contenido del código dando CTRL+G y escribiendo ? strsql y el enter.

Hola de nuevo

He añadido el espacio y ahora el error es distinto... me da un mensaje que dice:

Se ha producido el error '3061' en tiempo de ejecución: Pocos parámetros. Se esperaba 1.

Ojalá puedas ayudarme

Un millón de gracias de nuevo

Si quieres mándame tu Base de datos para ver tu error. [email protected]

Es un error de sintaxis (solo revísalo). No olvides cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas