Access - Emparejar registros.

 
Vista:

Emparejar registros.

Publicado por Óscar (21 intervenciones) el 14/11/2006 17:52:44
Hola, mi problema es el siguiente;

Quiero hacer un programa basado en un juego de azar, tengo un campo jugador otro que refleja los puntos por jugador, etc y un campo mesa de juego. El problema es que quiero hacer una rutina o proceso que me permita asignar un número de mesa a cada jugador, es decir, que cada mesa tendría dos jugadores o que dos jugadores tendrían el mismo número de mesa.
El número de mesas es variable, es decir, no es un valor fijo ya que depende del número de jugadores y se obtendría como resultado de calcular el número total de jugadores entre dos.

Gracias por la ayuda.
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 número de mesa a jugadores en un juego de azar

Publicado por Alejandro (4142 intervenciones) el 28/07/2023 16:55:02
Para asignar un número de mesa a cada jugador en un juego de azar, puedes utilizar una consulta y código VBA en Access para realizar este proceso de manera dinámica. A continuación, te proporciono una solución paso a paso para lograrlo:

1. Crea una tabla para almacenar la información de los jugadores y sus puntos, y otra tabla para las mesas de juego. Supongamos que tienes una tabla llamada "Jugadores" con los campos "IDJugador", "Nombre", "Puntos" y una tabla llamada "Mesas" con los campos "IDMesa" y "NumeroJugadores".

2. Inserta los registros de los jugadores y sus puntos en la tabla "Jugadores".

3. Crea un formulario o una consulta que te permita ver los jugadores y sus puntos, así como la cantidad de mesas necesarias.

4. En el evento "Al hacer clic" de un botón o en una función VBA, puedes realizar el proceso de asignación de número de mesa a cada jugador. El código VBA será algo como esto:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Public Sub AsignarMesasAJugadores()
    Dim db As DAO.Database
    Dim rsJugadores As DAO.Recordset
    Dim rsMesas As DAO.Recordset
    Dim totalJugadores As Long
    Dim totalMesas As Long
    Dim jugadoresPorMesa As Long
    Dim contador As Long
    Dim mesaActual As Long
 
    On Error GoTo ErrorHandler
 
    Set db = CurrentDb
    Set rsJugadores = db.OpenRecordset("SELECT * FROM Jugadores ORDER BY Puntos DESC")
    Set rsMesas = db.OpenRecordset("SELECT * FROM Mesas")
 
    ' Obtener el total de jugadores y el número de mesas necesarias
    totalJugadores = rsJugadores.RecordCount
    totalMesas = totalJugadores \ 2 ' División entera para obtener la cantidad de mesas necesarias
    jugadoresPorMesa = 2
 
    ' Limpiar el campo "NumeroJugadores" de la tabla "Mesas"
    db.Execute "UPDATE Mesas SET NumeroJugadores = 0"
 
    ' Asignar el número de mesa a cada jugador
    rsJugadores.MoveFirst
    contador = 1
    mesaActual = 1
    Do While Not rsJugadores.EOF
        rsJugadores.Edit
        rsJugadores("MesaDeJuego") = mesaActual
        rsJugadores.Update
 
        rsMesas.MoveFirst
        rsMesas.Move mesaActual - 1
        rsMesas.Edit
        rsMesas("NumeroJugadores") = rsMesas("NumeroJugadores") + 1
        rsMesas.Update
 
        If contador >= jugadoresPorMesa Then
            contador = 1
            mesaActual = mesaActual + 1
        Else
            contador = contador + 1
        End If
 
        rsJugadores.MoveNext
    Loop
 
    MsgBox "Asignación de mesas completada.", vbInformation
 
    rsJugadores.Close
    rsMesas.Close
    Set rsJugadores = Nothing
    Set rsMesas = Nothing
    Set db = Nothing
    Exit Sub
 
ErrorHandler:
    MsgBox "Error al asignar mesas a jugadores: " & Err.Description, vbExclamation
End Sub

5. Llama a la función "AsignarMesasAJugadores" desde el evento "Al hacer clic" de un botón o desde cualquier otro evento que lo requiera.

Con esta solución, la función asignará automáticamente un número de mesa a cada jugador de manera equitativa, asegurándose de que cada mesa tenga dos jugadores. El número total de mesas necesarias se calcula en función del número de jugadores en la tabla "Jugadores", y el campo "NumeroJugadores" en la tabla "Mesas" se actualiza para reflejar la cantidad de jugadores asignados a cada mesa.

Es importante que adaptes el código y las tablas según la estructura y nombres reales de tu base de datos de Access.

Espero que esta solución te sea útil para asignar un número de mesa a cada jugador en tu juego de azar en Access. ¡Buena suerte!
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