No dices si vas a ser una persona la que haga la entrevista a cada, vamos a llamarle Empleado de uno en uno. Si sólo se le va a hacer una única vez( voy a suponer que es así). Si lo que quieres es imprimir muchas hojas de ese estilo para repartirlas. Voy a suponer que llamas a alguien a tu despacho y le haces una entrevista una única vez. Tampoco dices como vas a "marcar" la casilla, voy a suponer que con una x, pero podría ser una casilla de verificación.
Tengo la tabla Factores( que sólo he puesto unos cuantos, el resto ya la terminarías tu)
Tengo una tabla Entrevistas con los campos Identrevista, nombre, fecha, función y puntaje y otra tabla DetalleEntrevista con Identrevista, para relacionarlo con el anterior, A, B, C, D, E
Con estas dos últimas hago un formulario con subformulario
Cuando escribo un nombre y quiero pasar a Fecha, por ejemplo, primero comprueba que a esa persona no se le ha hecho ya la entrevista. Si fuera así, te saldría un mensaje como
Al aceptar el cursor se quedaría en nombre para que lo cambiaras. Sigamos. Si comprueba que a esa persona no se le había hecho una entrevista antes, automáticamente
Rellenas la fecha y la función. El control puntaje está bloqueado para que nadie pueda cambiarlo y a medida que vas poniendo X en las casillas, en Puntaje te va poniendo la suma de sus valores
Marcas una casilla y al pulsar enter o ir a otro
De forma que te quedaría como(sin terminar)
¿Qué quieres que esto se imprima? Bastaría con crear un informe con el diseño que quieras y en este formulario ponerle un botón y que te imprima, o bien este registro en particular o que te imprima todos. Eso lo tienes que decidir tu.
Si quieres, repito, si quieres, como ya lo tengo hecho, mándame un mensaje(sólo el mensaje) a [email protected] y te la mando. Si lo haces, en el asunto del mensaje pon tu alias Vanesa, ya que si no sé quien me escribe ni los abro.
Por cierto, el código del formulario es
Private Sub Nombre_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.SetWarnings False
DoCmd.RunSQL "insert into detalleentrevista select factor from factores"
DoCmd.RunSQL "update detalleentrevista set identrevista=" & Me.IdEntrevista & ""
Me!DetalleEntrevista.Form.Requery
End Sub
Private Sub Nombre_BeforeUpdate(Cancel As Integer)
If DCount("*", "entrevistas", "nombre like '" & Me.Nombre & "'") >= 1 Then
MsgBox "Esa persona ya ha sido entrevistada", vbOKOnly + vbExclamation, "La culpa es de Vanesa"
DoCmd.CancelEvent
End If
End Sub
Y el código del subformulario es
Private Sub A_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!Puntaje = DCount("a", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0 + DCount("b", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.25 + DCount("c", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.5 + DCount("d", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.75 + DCount("e", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 1
End Sub
Private Sub B_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!Puntaje = DCount("a", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0 + DCount("b", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.25 + DCount("c", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.5 + DCount("d", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.75 + DCount("e", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 1
End Sub
Private Sub C_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!Puntaje = DCount("a", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0 + DCount("b", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.25 + DCount("c", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.5 + DCount("d", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.75 + DCount("e", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 1
End Sub
Private Sub D_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!Puntaje = DCount("a", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0 + DCount("b", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.25 + DCount("c", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.5 + DCount("d", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.75 + DCount("e", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 1
End Sub
Private Sub E_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Me.Parent!Puntaje = DCount("a", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0 + DCount("b", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.25 + DCount("c", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.5 + DCount("d", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 0.75 + DCount("e", "detalleentrevista", "identrevista=" & Me.IdEntrevista & "") * 1
End Sub
Parece largo, pero todo es cosa de Copiar y Pegar