none
UPDATE nao esta funcionando como deveria. RRS feed

  • Pergunta

  • Fala pessoal, eu estou tentando usar o UPDATE mas não ta dando certo. Não da nenhum erro, mas simplesmente não faz nada.

    Private Sub PEditar()
            Using con As OleDbConnection = GetConnection()
                Try
                    con.Open()
                    Dim sql As String = "UPDATE usuarios SET usuario=?,senha=?,grupo=? WHERE Codigo=?"
                    Dim cmd As OleDbCommand = New OleDbCommand(sql, con)
    
                    cmd.Parameters.Add(New OleDb.OleDbParameter("@Codigo", Codigo))
                    cmd.Parameters.Add(New OleDb.OleDbParameter("@usuario", TextBoxUSUARIOC.Text))
                    cmd.Parameters.Add(New OleDb.OleDbParameter("@senha", TextBoxSENHA2.Text))
                    cmd.Parameters.Add(New OleDb.OleDbParameter("@grupo", ComboBoxGRUPOC.Text))
                    cmd.ExecuteNonQuery()
                    MsgBox("Usuario editado com sucesso!")
                Catch ex As Exception
                    MsgBox("Ocorreu um erro ao tentar editar o usuario." & ex.Message, MsgBoxStyle.Information)
                Finally
                    con.Close()
                End Try
            End Using
        End Sub

    Ai quando o usuario clicar no botão de EDITAR pergunta o "Codigo" e executa a função:

        Private Sub ButtonEDITAR_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonEDITAR.Click
            Dim Resposta As String
            Resposta = ""
            Codigo = ""
            Do While Codigo = "" And IsNumeric(Codigo) = False
                Resposta = MsgBox("Digite um codigo de usuario valido!", MsgBoxStyle.OkCancel)
                If Resposta = vbOK Then
                    Codigo = InputBox("Digite o codigo de usuario:")
                End If
            Loop
            If ValidarCampos() = False Then
                Exit Sub
            ElseIf ValidarSenha = "No1" Then
                MsgBox("As senhas não correspodem.")
            ElseIf ValidarSenha = "No2" Then
                MsgBox("A senha deve ter no minimo 5 letras.")
            ElseIf ValidarSenha = "No3" Then
                MsgBox("Digite uma senha!")
            Else
                PEditar()
            End If
        End Sub
    Oque tem de errado pra não da certo??

    sábado, 3 de setembro de 2016 00:48

Respostas

  • "Oque tem de errado pra não da certo??"

    A ordem dos parametros. Como voce usa '?' entao o oledb usa a ordem de entrada dos parametros.

    Veja, seu sql é esse:

    UPDATE usuarios SET usuario=?,senha=?,grupo=? WHERE Codigo=?

    seus parametros sao definidos assim:

                 1   cmd.Parameters.Add(New OleDb.OleDbParameter("@Codigo", Codigo))
                 2   cmd.Parameters.Add(New OleDb.OleDbParameter("@usuario", TextBoxUSUARIOC.Text))
                 3   cmd.Parameters.Add(New OleDb.OleDbParameter("@senha", TextBoxSENHA2.Text))
                 4   cmd.Parameters.Add(New OleDb.OleDbParameter("@grupo", ComboBoxGRUPOC.Text))

    Entao o seu sql enviado ao banco fica assim:

    UPDATE usuarios SET usuario=@Codigo,senha=@usuario,grupo=@senha WHERE Codigo=@grupo

    Para que funcione corretamente seus parametros tem que ser definidos assim:

    cmd.Parameters.Add(New OleDb.OleDbParameter("@usuario", TextBoxUSUARIOC.Text))
    cmd.Parameters.Add(New OleDb.OleDbParameter("@senha", TextBoxSENHA2.Text))
    cmd.Parameters.Add(New OleDb.OleDbParameter("@grupo", ComboBoxGRUPOC.Text))
    cmd.Parameters.Add(New OleDb.OleDbParameter("@Codigo", Codigo))

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sábado, 3 de setembro de 2016 11:44
    Moderador

Todas as Respostas

  • "Oque tem de errado pra não da certo??"

    A ordem dos parametros. Como voce usa '?' entao o oledb usa a ordem de entrada dos parametros.

    Veja, seu sql é esse:

    UPDATE usuarios SET usuario=?,senha=?,grupo=? WHERE Codigo=?

    seus parametros sao definidos assim:

                 1   cmd.Parameters.Add(New OleDb.OleDbParameter("@Codigo", Codigo))
                 2   cmd.Parameters.Add(New OleDb.OleDbParameter("@usuario", TextBoxUSUARIOC.Text))
                 3   cmd.Parameters.Add(New OleDb.OleDbParameter("@senha", TextBoxSENHA2.Text))
                 4   cmd.Parameters.Add(New OleDb.OleDbParameter("@grupo", ComboBoxGRUPOC.Text))

    Entao o seu sql enviado ao banco fica assim:

    UPDATE usuarios SET usuario=@Codigo,senha=@usuario,grupo=@senha WHERE Codigo=@grupo

    Para que funcione corretamente seus parametros tem que ser definidos assim:

    cmd.Parameters.Add(New OleDb.OleDbParameter("@usuario", TextBoxUSUARIOC.Text))
    cmd.Parameters.Add(New OleDb.OleDbParameter("@senha", TextBoxSENHA2.Text))
    cmd.Parameters.Add(New OleDb.OleDbParameter("@grupo", ComboBoxGRUPOC.Text))
    cmd.Parameters.Add(New OleDb.OleDbParameter("@Codigo", Codigo))

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    sábado, 3 de setembro de 2016 11:44
    Moderador
  • Bom dia,

    Devido a falta de resposta do usuário
    essa thread está sendo fechada.
    Se o problema ainda estiver ocorrendo,
    favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 6 de setembro de 2016 12:09
    Moderador