Access - Valor entre dos registros

 
Vista:

Valor entre dos registros

Publicado por champiñon (5 intervenciones) el 10/10/2006 11:16:55
Os planteo la siguiente duda...Tengo, por un lado, un formulario en el que se introducen marcas (0:12:30, 0:16:45, etc..) junto con sus correspondientes campos de "Puntuacion" (según la marca conseguida,claro). Por otro lado tengo una tabla en la que están almacenado el baremo (0:10:00->30 | 0:10:15->28 | 0:10:30->25, etc...) y en base a la cual, un corredor con 0:09:34, por ejemplo, le correspondería 30 y, a otro con 0:10:12, le correspondería 28 puntos. La metodología sería comparar el tiempo obtenido con los registros y, una vez encontradas las cotas, elegir la puntuación de la inferior.
Y...todo esto...cómo lo puedo hacer en código???????????

PD-> He visto algunos ejemplos (con menos "cotas") a golpe de código, pero necesito que los baremos estén en tabla porque debo permitir la opción de modificarlos.
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

Calcular puntuación de marcas según Baremo en tabla

Publicado por Alejandro (4142 intervenciones) el 26/07/2023 17:23:00
Para calcular la puntuación de las marcas según el baremo almacenado en una tabla en Access, puedes utilizar código VBA (Visual Basic for Applications) en el evento que desees, como un botón o un evento del formulario. Aquí te presento un ejemplo de cómo hacerlo:

1. Abre el formulario en el modo de diseño y asegúrate de que los campos de "Marca" y "Puntuación" estén correctamente vinculados a la tabla correspondiente.

2. Agrega un botón o crea el evento donde desees que se realice el cálculo de puntuación.

3. Abre el editor de código VBA haciendo clic en el botón "Visual Basic" en la pestaña "Herramientas de Base de Datos".

4. En el editor de código, agrega el siguiente código dentro del evento que desees:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub btnCalcularPuntuacion_Click()
    Dim marca As Date
    Dim puntuacion As Integer
 
    marca = Me.txtMarca.Value ' Aquí asumimos que el nombre del campo de marca es "txtMarca". Cambia el nombre si es diferente.
 
    ' Consulta para obtener la puntuación según la marca en la tabla "Baremo"
    Dim strSQL As String
    strSQL = "SELECT TOP 1 Puntuacion FROM Baremo WHERE Tiempo <= #" & Format(marca, "hh:mm:ss") & "# ORDER BY Tiempo DESC;"
 
    ' Ejecutar la consulta
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset(strSQL)
 
    ' Obtener la puntuación
    If Not rs.EOF Then
        puntuacion = rs!Puntuacion
        rs.Close
    Else
        ' Si no se encuentra una cota inferior, asignar una puntuación predeterminada o mostrar un mensaje de error.
        ' puntuacion = ValorPredeterminado
        ' MsgBox "No se encontró un baremo para esta marca."
        ' Exit Sub
    End If
 
    ' Asignar la puntuación al campo correspondiente en el formulario
    Me.txtPuntuacion.Value = puntuacion ' Aquí asumimos que el nombre del campo de puntuación es "txtPuntuacion". Cambia el nombre si es diferente.
End Sub

5. Cierra el editor de código.

6. Guarda el formulario y prueba el cálculo de puntuación haciendo clic en el botón que hayas creado o activando el evento correspondiente.

Este código buscará en la tabla "Baremo" la puntuación correspondiente a la marca introducida en el formulario y la asignará al campo de "Puntuación" en el mismo formulario. La consulta utilizada buscará la cota inferior más cercana y devolverá la puntuación correspondiente a esa marca. Si no se encuentra una cota inferior, puedes agregar un valor predeterminado o mostrar un mensaje de error según tus necesidades. Además, asegúrate de cambiar los nombres de los campos y la tabla según corresponda en tu base de datos.
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