Comparar registros de una lista y establecer condiciones
hola disculpa lo tarde en responder he pasado todo este tiempo tratando de construir el codigo pero no lo he logrado
le explico:
Public Sub cargarParticipantes1()
Try
Call Conexion.Conectar()
Dim datos As DataTable
Dim adaptador As MySqlDataAdapter
Dim consulta As String
consulta = ("select keycodigo,codtorneo,nombreapellido,codestado,estado,(juegos_ganados-juegos_perdidos) as juegos_jugados,juegos_ganados,juegos_perdidos,puntos_favor,puntos_contra,(puntos_favor-puntos_contra) as average,is_asignacion_mesa from participantes where codtorneo=1 and is_asignacion_mesa=0 order by codestado,nombreapellido asc")
adaptador = New MySqlDataAdapter(consulta, Conexion.Conexion)
datos = New DataTable
adaptador.Fill(datos)
DataGridView1.DataSource = datos
'PARA ORGANIZAR EL DGV DE ACUERDO AL TAMAÑO DE LOS DATOS
DataGridView1.Columns("keycodigo").Width = 50
DataGridView1.Columns("keycodigo").HeaderText = "Codigo"
DataGridView1.Columns("keycodigo").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView1.Columns("codtorneo").Visible = False
DataGridView1.Columns("nombreapellido").Width = 200
DataGridView1.Columns("nombreapellido").HeaderText = "Nombre y Apellido"
DataGridView1.Columns("nombreapellido").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView1.Columns("codestado").Visible = False
DataGridView1.Columns("estado").Width = 130
DataGridView1.Columns("estado").HeaderText = "Estado"
DataGridView1.Columns("estado").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView1.Columns("juegos_jugados").Visible = False
DataGridView1.Columns("juegos_ganados").Visible = False
DataGridView1.Columns("puntos_favor").Visible = False
DataGridView1.Columns("juegos_perdidos").Visible = False
DataGridView1.Columns("puntos_contra").Visible = False
DataGridView1.Columns("average").Visible = False
DataGridView1.Columns("is_asignacion_mesa").Visible = False
GroupBox1.Text = "Participantes: " & DataGridView1.RowCount
With DataGridView1
'Para que el dgvfh sea solo lectura
.ReadOnly = True
'Para seleccionar todo, pero en este caso solo la fila a buscar
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
'Evitamos que seleccionen varias filas al mismo tiempo
.MultiSelect = True
'Evitamos que se agregue la última fila(Fila vacía)
.AllowUserToAddRows = False
'Para que el datagridview cargue sin ninguna fila seleccionada
.SelectedRows(0).Cells(0).Value.ToString()
'Evitamos que se cambie el tamaño de las filas
.RowTemplate.Resizable = False
'Ocultamos el ancabezado de las filas
.RowHeadersVisible = False
End With
Catch ex As Exception
End Try
End Sub
en ese codigo lleno el DGV
Public Sub cargarMesasCreadas()
Try
Call Conexion.Conectar()
Dim datos As DataTable
Dim adaptador As MySqlDataAdapter
Dim consulta As String
consulta = ("select keycodigo,codtorneo,mesa,ronda,codestado_pa1,estado_pa1,codpa1,pa1,codestado_pa2,estado_pa2,codpa2,pa2,codestado_pb1,estado_pb1,codpb1,pb1,codestado_pb2,estado_pb2,codpb2,pb2,cod_combinacion_pareja_a1a2,cod_combinacion_pareja_a2a1,cod_combinacion_pareja_b1b2,cod_combinacion_pareja_b2b1,is_mesa_llena from juegos where codtorneo=1 order by mesa asc")
adaptador = New MySqlDataAdapter(consulta, Conexion.Conexion)
datos = New DataTable
adaptador.Fill(datos)
DataGridView3.DataSource = datos
'PARA ORGANIZAR EL DGV DE ACUERDO AL TAMAÑO DE LOS DATOS
DataGridView3.Columns("keycodigo").Visible = False
DataGridView3.Columns("codtorneo").Visible = False
DataGridView3.Columns("mesa").Width = 40
DataGridView3.Columns("mesa").HeaderText = "Mesa"
DataGridView3.Columns("mesa").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
DataGridView3.Columns("ronda").Visible = False
DataGridView3.Columns("codestado_pa1").Visible = False
DataGridView3.Columns("estado_pa1").Visible = False
DataGridView3.Columns("codpa1").Visible = False
DataGridView3.Columns("pa1").Width = 100
DataGridView3.Columns("pa1").HeaderText = "JA1"
DataGridView3.Columns("pa1").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView3.Columns("codestado_pa2").Visible = False
DataGridView3.Columns("estado_pa2").Visible = False
DataGridView3.Columns("codpa2").Visible = False
DataGridView3.Columns("pa2").Width = 100
DataGridView3.Columns("pa2").HeaderText = "JA2"
DataGridView3.Columns("pa2").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView3.Columns("codestado_pb1").Visible = False
DataGridView3.Columns("estado_pb1").Visible = False
DataGridView3.Columns("codpb1").Visible = False
DataGridView3.Columns("pb1").Width = 100
DataGridView3.Columns("pb1").HeaderText = "JB1"
DataGridView3.Columns("pb1").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView3.Columns("codestado_pb2").Visible = False
DataGridView3.Columns("estado_pb2").Visible = False
DataGridView3.Columns("codpb2").Visible = False
DataGridView3.Columns("pb2").Width = 100
DataGridView3.Columns("pb2").HeaderText = "JB2"
DataGridView3.Columns("pb2").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
DataGridView3.Columns("cod_combinacion_pareja_a1a2").Visible = False
DataGridView3.Columns("cod_combinacion_pareja_a2a1").Visible = False
DataGridView3.Columns("cod_combinacion_pareja_b1b2").Visible = False
DataGridView3.Columns("cod_combinacion_pareja_b2b1").Visible = False
DataGridView3.Columns("is_mesa_llena").Visible = False
GroupBox2.Text = "Mesas: " & DataGridView3.RowCount
With DataGridView3
'Para que el dgvfh sea solo lectura
.ReadOnly = True
'Para seleccionar todo, pero en este caso solo la fila a buscar
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
'Evitamos que seleccionen varias filas al mismo tiempo
.MultiSelect = True
'Evitamos que se agregue la última fila(Fila vacía)
.AllowUserToAddRows = False
'Para que el datagridview cargue sin ninguna fila seleccionada
.SelectedRows(0).Cells(0).Value.ToString()
'Evitamos que se cambie el tamaño de las filas
.RowTemplate.Resizable = False
'Ocultamos el ancabezado de las filas
.RowHeadersVisible = False
End With
Catch ex As Exception
End Try
End Sub
en este otro estan la 27 mesas creadas
explico porque son 27, una mesa de domino se compone por 4 jugadores, 2 parejas, pareja A y pareja B, son 106 jugadores serian 26,5 mesas es decir 26 mesas con 4 jugadores y 1 con 2 jugadores, no importa porque esa mesa donde estan solo 2 jugadores ya ganarian automaticamente
a cada mesa debo asignar 4 jugadores, con ciertas condiciones: un jugador de la pareja A no deben ser de la misma ciudad de los jugadores de la pareja B, no se si me explico bien, que rosa esta en la pareja A y maria este en la pareja B y sean de la misma ciudad y esten en la misma mesa
esa asignacion debe ocurrir 10 o 12 veces mas es decir por ronda, 10, 12 o N cantidad de rondas, luego de la primera aplica otra condicion, las parejas no pueden repetirse, es decir si maria y rosa jugaron de parejas en la misma ronda para las restantes no pueden ser nuevamente parejas pero si jugar en contra que maria sea de la pareja A y rosa de la pareja B
luego de la primera ronda se organiza la tabla de posiciones de mayor a menor, los que hayas ganados arriba y de ahi los que van perdiendo, partiendo de ese orden su organiza la siguiente ronda es decir lo que van ganando o mayor puntaje jugarian en las primeras mesas, de tener 3 o 4 o mas jugadores de la misma ciudad de primeros en la tabla de posiciones entonces se oganizarian en parejas en la mesa 1 y los demas para las demas mesas
en los bloques del codigo fuente estan los datos que extraigo para informacion, si necesita mas detalle con gusto se los dare.
muchas gracias por la ayuda