Olá gente! Estou iniciando no ASP como auto-didata, e estou tendo algumas dificuldades para editar um registro que existe em um banco de dados.
Ele recupera os dados certinho, porém na hora que ativo a função Alterar, ele mantém os dados antigos. Tanto que eu dei um print pra ele aparecer como estava sendo executada a consulta, e estav com os dados originais, não os alterados!
Alguem pode me indicar onde estou errando?
[codebox]<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="editarUsers.aspx.vb" Inherits="Testes.editarUsers" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR...nsitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Editar usuários</title>
</head>
<body>
<form id="form1" runat="server">
<div>Editar Usuário</div>
<div>Nome: <asp:TextBox ID="txNome" runat="server"></asp:TextBox></div>
<div>Email: <asp:TextBox ID="txEmail" runat="server"></asp:TextBox></div>
<div>Senha: <asp:TextBox ID="txSenha" runat="server"></asp:TextBox></div>
<asp:HiddenField ID="txId" runat="server" />
<hr />
<div><asp:Button id="editar" text="Editar" onclick="Alterar" runat="server"/></div>
</form>
</body>
</html>[/codebox]
[codebox]Imports System
Imports System.Data
Imports System.Data.SqlClient
Partial Public Class editarUsers
Inherits System.Web.UI.Page
'Variáveis
Dim conectar As Conexao = New Conexao()
Dim conexao As SqlConnection
Dim codigo As Integer
Dim com As SqlCommand
Dim sql As String
Dim dr As SqlDataReader
Dim id_user As Integer
Dim nome As String
Dim email As String
Dim senha As String
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If (Request.QueryString(codigo) <> "") Then
'Recupera o valor passado na URL
codigo = Request.QueryString(codigo)
'Recupera os dados da seção
conexao = conectar.Abrir
sql = "SELECT * FROM users WHERE id = " & codigo
com = New SqlCommand(sql, conexao)
dr = com.ExecuteReader()
If (dr.HasRows) Then
dr.Read()
'Atribui os dados aos campos do formulário
txId.Value = dr("id")
txNome.Text = dr("nome")
txEmail.Text = dr("email")
txSenha.Text = dr("senha")
End If
dr.Close()
conexao.Close()
End If
End Sub
Sub Alterar()
Dim nome As String
Dim email As String
Dim senha As String
Dim con As SqlCommand
'Atribui os valores do formulário a variáveis
nome = txNome.Text
email = txEmail.Text
senha = txSenha.Text
conexao = conectar.Abrir
Dim sql As String
Dim linhas As String
sql = "UPDATE users SET nome = '" & nome & "', email = '" & email & "', senha = '" & senha & "' WHERE id = " & codigo
con = New SqlCommand(sql, conexao)
linhas = con.ExecuteNonQuery()
con.Dispose()
If (linhas > 0) Then
'Response.Redirect("ok.aspx?pagina=funfou")
Response.Write(sql)
Else
Response.Redirect("erro.aspx")
End If
conexao.Close()
End Sub
End Class[/codebox]
Não Edita Registros
Started By Maykel Esser, 14/01/2009, 12:55
1 reply to this topic
#1
Posted 14/01/2009, 12:55
Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens!
#2
Posted 17/01/2009, 12:54
O que acontece é que vc esta sempre carregando os dados novamente de uma procurada sobre o processamento de paginas asp.net, o page_load sempre é chamado e vc carrega os dados novamente. Estude tambem o depurador do visual studio que é extremamente util e passo a passso vc vera o que precisa sem a necessidade de imprimir os dados na tela.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)