none
Usuario RRS feed

  • Pregunta

  • Hola, quisiera saber algo, tengo usuario guardado en una base de datos y cuando responde una pregunta correcta quiero que sus puntos se vayan sumando pero no se como se hace y que además sepa quien es el que está respondiendo porque a los puntos se los da al ultimo usuario registrado en la BD y no al que está respondiendo las preguntas.

    Ayuda, pls.

    • Cambiado Enrique M. Montejo jueves, 16 de noviembre de 2017 17:50 Pregunta relacionada con el acceso a datos con MySQL.
    domingo, 12 de noviembre de 2017 4:59

Todas las respuestas

  • Hola:

    Cuando se "entra" en la aplicacion, se guarda el usuario que entra.
    Los puntos se le dan al usuario guardado.
    Si no muestras como lo estas haciendo y las estructuras de las tablas implicadas, es dificil que se pueda solucionar el tema

    Un saludo desde Bilbo
    Carlos

    domingo, 12 de noviembre de 2017 7:34
  • En esta se guardan los puntajes

    En esta los usuarios registrados

    Esto es para registrarse

    Imports MySql.Data.MySqlClient
    Public Class Login
        Dim adaptador As New MySqlDataAdapter
        Dim conexion As New MySqlConnection
        Dim datos As New DataSet
    
        Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
    
        End Sub
    
        Private Sub Login_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Try
                conexion.ConnectionString = ("server=localhost;user=root;password=;database=proyecto")
                conexion.Open()
    
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim consulta As String
            Dim lista As Byte
            If TextBox1.Text <> "" And TextBox2.Text <> "" Then
                consulta = "SELECT * FROM usuario WHERE Nick='" & TextBox1.Text & "' and contrasenia='" & TextBox2.Text & "'"
                adaptador = New MySqlDataAdapter(consulta, conexion)
                datos = New DataSet
                adaptador.Fill(datos, "usuario")
                lista = datos.Tables("usuario").Rows.Count
            End If
            If lista <> 0 Then
                Dim a As New Form1
                a.Show()
                Me.Finalize()
    
    
    
            Else
                MsgBox("Usuario o Contraseña Incorrecta")
            End If
    
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            End
    
    
    
    
    
        End Sub
    
        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    
        End Sub
    
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Dim a As New Form1
            a.Show()
            Me.Finalize()
        End Sub
    
        Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
            Dim a As New Form5
            a.Show()
            Me.Finalize()
        End Sub
    
        Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
            If CheckBox1.Checked = True Then
                TextBox2.PasswordChar = ""
            ElseIf CheckBox1.Checked = False Then
                TextBox2.PasswordChar = "*"
            End If
    
        End Sub
    End Class
    Este es el Login

    Imports System.Windows.Forms Imports MySql.Data.MySqlClient Public Class Form5 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim usuario As New DataTable Dim responde As New DataTable Dim DS As New DataSet Dim conexion As New MySqlConnection conexion = New MySql.Data.MySqlClient.MySqlConnection conexion.ConnectionString = "host=localhost;user=root;password=;database=Proyecto" Dim insertar As New MySqlDataAdapter("insert into usuario(Nick,Contrasenia) values ('" & TextBox1.Text & "','" & TextBox4.Text & "')", conexion) Try insertar.Fill(usuario) MessageBox.Show("Registro exitoso") TextBox1.Clear() TextBox4.Clear() Catch ex As Exception MessageBox.Show("Error registro") TextBox1.Clear() TextBox4.Clear() Finally End Try Me.DialogResult = System.Windows.Forms.DialogResult.OK End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click End End Sub Private Sub Form5_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim a As New Login a.Show() Me.Finalize() End Sub End Class

    Y con esto se responde las preguntas y se guarda el puntaje, espero que esto sea suficiente para ayudarme.

    Imports MySql.Data.MySqlClient Public Class Form9 Dim conexion As New MySqlConnection Dim comando As New MySqlCommand Dim RadioButtonArray(3) As RadioButton Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) End Sub Private Sub Form9_Load(sender As Object, e As EventArgs) Handles TextBox1.TextChanged, MyBase.Load SetControlArray() conexion = New MySqlConnection conexion.ConnectionString = ("server=localhost;user=root;password=;database=proyecto") Dim reader As MySqlDataReader Try conexion.Open() Dim consulta As String consulta = "Select * from proyecto.preguntas where id_pregunta='1' and tipo='Estadística'" comando = New MySqlCommand(consulta, conexion) reader = comando.ExecuteReader While reader.Read Dim pregunta As String pregunta = reader.GetString("pregunta") TextBox1.Text = pregunta End While conexion.Close() Catch ex As MySqlException MsgBox(ex.Message) Finally conexion.Dispose() End Try Try conexion.Open() Dim consulta As String consulta = "Select * from proyecto.respuestas where numrespuesta='1'" comando = New MySqlCommand(consulta, conexion) reader = comando.ExecuteReader While reader.Read Dim respuesta As String respuesta = reader.GetString("respuesta") RadioButton1.Text = respuesta End While conexion.Close() Catch ex As MySqlException MsgBox(ex.Message) Finally conexion.Dispose() End Try Try conexion.Open() Dim consulta As String consulta = "Select * from proyecto.respuestas where numrespuesta='2'" comando = New MySqlCommand(consulta, conexion) reader = comando.ExecuteReader While reader.Read Dim respuesta As String respuesta = reader.GetString("respuesta") RadioButton2.Text = respuesta End While conexion.Close() Catch ex As MySqlException MsgBox(ex.Message) Finally conexion.Dispose() End Try Try conexion.Open() Dim consulta As String consulta = "Select * from proyecto.respuestas where numrespuesta='3'" comando = New MySqlCommand(consulta, conexion) reader = comando.ExecuteReader While reader.Read Dim respuesta As String respuesta = reader.GetString("respuesta") RadioButton3.Text = respuesta End While conexion.Close() Catch ex As MySqlException MsgBox(ex.Message) Finally conexion.Dispose() End Try End Sub Sub SetControlArray() RadioButtonArray(1) = RadioButton1 RadioButtonArray(2) = RadioButton2 RadioButtonArray(3) = RadioButton3 End Sub Private Sub CompruebaRespuesta(NumeroRespuestaCorrecta As Integer) conexion = New MySqlConnection conexion.ConnectionString = ("server=localhost;user=root;password=;database=proyecto") Dim reader As MySqlDataReader Try conexion.Open() Dim consulta As String consulta = "Select Nick from usuario" comando = New MySqlCommand(consulta, conexion) reader = comando.ExecuteReader While reader.Read Dim Nick As String Nick = reader.GetString("Nick") TextBox2.Text = Nick End While conexion.Close() Catch ex As MySqlException MsgBox(ex.Message) Finally conexion.Dispose() End Try Try conexion.Open() Dim consulta As String consulta = "Select Historial from responde" comando = New MySqlCommand(consulta, conexion) reader = comando.ExecuteReader While reader.Read Dim Historial As String Historial = reader.GetString("Historial") TextBox4.Text = Historial End While conexion.Close() Catch ex As MySqlException MsgBox(ex.Message) Finally conexion.Dispose() End Try If RadioButtonArray(NumeroRespuestaCorrecta).Checked Then MsgBox("Respesta Correcta") Dim consulta As String Dim con As Integer = 0 con = con + 100 TextBox3.Text = con Dim usuario As New DataTable Dim DS As New DataSet Dim conexion As New MySqlConnection conexion = New MySql.Data.MySqlClient.MySqlConnection conexion.ConnectionString = "host=localhost;user=root;password=;database=Proyecto" Dim insertar As New MySqlDataAdapter("insert into responde(Nick,Historial) values ('" & TextBox2.Text & "','" & TextBox3.Text & "')", conexion) Try insertar.Fill(usuario) Catch ex As Exception MessageBox.Show("Error registro") Finally End Try Dim a As New Form10 a.Show() Me.Finalize() Else MsgBox("Respuesta Incorrecta") End If End Sub Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged End Sub Private Sub GroupBox1_Enter(sender As Object, e As EventArgs) Handles GroupBox1.Enter End Sub Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim NumeroRespuestaCorrecta As Integer = 2 CompruebaRespuesta(2) End Sub Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged End Sub Private Sub TextBox3_TextChanged(sender As Object, e As EventArgs) Handles TextBox3.TextChanged End Sub Private Sub TextBox4_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextChanged End Sub End Class



    domingo, 12 de noviembre de 2017 8:27
  • Hola, la razón de que se registren los puntos para el ultimo usuario es que le asigna al textbox2 el resultado de tu consulta fila por fila y al final queda obviamente asignado el ultimo usuario registrado, La solución que te doy seria que agregues un modulo en tu proyecto y ahí Declares una variable publica para el Nick.

    Module Module1

    Public Nick as String

    End Module

    Luego en el Form Login al capturar los datos del usuario le asignado el valor del nick a la variable publica, así:

    If lista<>0 Then

    Nick=TextBox1.Text

    Dim a As New Form1

    a.Show()

    Me.Finalize

    End If

    Y en el Formulario Form9, dentro de CompruebaRespuesta al insertar la respuesta seria asi :

    Dim insertar As New MysqlDataAdapter("insert into responde(nick,historial)  values('" + Nick +"','" + con + "')",conexión)

    lunes, 13 de noviembre de 2017 21:25