Access - Calcular puntuación

 
Vista:

Calcular puntuación

Publicado por champiñon (5 intervenciones) el 16/10/2006 09:22:40
Dispongo de una tabla con baremos, con la forma siguiente (a modo de ejemplo)
Flexiones ----- Puntuacion
10 4
14 5
16 6
Por otro lado tengo un formulario, en el cual se van introduciendo las marcas. El problema me surge cuando la marca en cuestión no está contenida en la tabla de puntuaciones, por ejemplo, en el caso que propongo, para 12 flexiones. En este caso, debería seleccionar la puntuación inmediata inferior, eso es, 4 puntos.

Cómo puedo hacer esto en Access??????

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Asignar puntuación según baremos para marcas

Publicado por Alejandro (4142 intervenciones) el 26/07/2023 18:59:08
Para asignar una puntuación según los baremos para marcas en Access, puedes utilizar una consulta y una función de dominio en VBA. A continuación, te proporciono una solución paso a paso:

1. Crear una tabla con baremos: Crea una tabla en tu base de datos de Access con los baremos y sus correspondientes puntuaciones. Por ejemplo:

1
2
3
4
5
TablaBaremos:
Flexiones | Puntuacion
10        | 4
14        | 5
16        | 6

2. Crear una función de dominio en VBA: Abre el editor de código VBA haciendo clic en el botón "Visual Basic" en la pestaña "Herramientas de Base de Datos". Luego, selecciona "Insertar" > "Módulo" para agregar un nuevo módulo. En el módulo, crea la siguiente función de dominio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function ObtenerPuntuacion(Flexiones As Integer) As Integer
    Dim strSQL As String
    Dim rs As DAO.Recordset
 
    strSQL = "SELECT TOP 1 Puntuacion FROM TablaBaremos WHERE Flexiones <= " & Flexiones & " ORDER BY Flexiones DESC;"
    Set rs = CurrentDb.OpenRecordset(strSQL)
 
    If Not rs.EOF Then
        ObtenerPuntuacion = rs!Puntuacion
    Else
        ' Asignar una puntuación predeterminada en caso de que no se encuentre un baremo inferior.
        ' ObtenerPuntuacion = PuntuacionPredeterminada
    End If
 
    rs.Close
    Set rs = Nothing
End Function

3. Asignar la puntuación en el formulario: En el formulario donde se introducen las marcas, puedes utilizar la función de dominio "ObtenerPuntuacion" para asignar la puntuación según los baremos. Supongamos que tienes un cuadro de texto llamado "txtFlexiones" y otro cuadro de texto donde deseas mostrar la puntuación llamado "txtPuntuacion". Puedes usar el evento "Después de actualizar" del cuadro de texto "txtFlexiones" para asignar la puntuación automáticamente:

1
2
3
Private Sub txtFlexiones_AfterUpdate()
    Me.txtPuntuacion.Value = ObtenerPuntuacion(Me.txtFlexiones.Value)
End Sub

4. Prueba la funcionalidad: Guarda los cambios en el formulario y realiza pruebas ingresando diferentes valores de flexiones para asegurarte de que la función de dominio asigna correctamente la puntuación según los baremos.

Con esta solución, cuando introduzcas una marca de flexiones en el formulario, se utilizará la función de dominio para buscar el baremo correspondiente y asignar la puntuación inmediata inferior. Si no se encuentra un baremo inferior, puedes agregar una puntuación predeterminada según tus necesidades.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar