Duplicidade Na Gravacao dos Dados
14/08/2008
0
Boa Tarde Amigos
Estou utilizando ASP.NET 2.0 e tenho uma rotina de atualizacao de dados, onde a rotina esta sendo executada 2 vezes.
Eu clico no botao enviar (para salvar os dados) e dai eles sao gravados.Quando chego ao End Sub a execucao do programa retorna para o evendo Click desse botao e executa tudo de novo.
Sera que existe alguma propriedade que eu deva configurar?
Postei a rotina abaixo.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Sql As String
Dim cmd As SqlCommand
Dim conexao As SqlConnection
Dim Erro As Integer
Dim IdCadastro As Integer = 0
conexao = New SqlConnection(ConfigurationManager.ConnectionStrings(´timesheetConnectionString´).ConnectionString)
IdCadastro = CboModalidade.SelectedIndex
If IdUsuario = 0 Then
Sql = ´INSERT INTO USERS (USER_NOME,USER_ENDERECO,USER_BAIRRO) ´
Sql = Sql & ´VALUES (´´ & txtNome.Text & ´´,´´
Sql = Sql & txtEndereco.Text & ´´,´´
Sql = Sql & txtBairro.Text & ´´)´
Else
Sql = ´UPDATE USERS ´
Sql += ´ SET USER_NOME=´´ & txtNome.Text & ´´,´
Sql += ´ USER_ENDERECO=´´ & txtEndereco.Text & ´´,´
Sql += ´ USER_BAIRRO =´´ & txtBairro.Text.Trim & ´´,´
Sql += ´ WHERE USER_ID=´ & IdUsuario
End If
conexao.Open()
cmd = New SqlCommand(Sql, conexao)
cmd.ExecuteNonQuery()
Erro = cmd.ExecuteNonQuery()
If Erro > 0 Then
lblMensagem.Visible = True
lblMensagem.Text = ´Dados Atualizados com Sucesso!´
End If
Try
´Determine a query que seleciona o identificador do registro inserido
cmd = New SqlCommand(´SELECT @@IDENTITY´, conexao)
cmd.CommandType = CommandType.Text
´obtem o codigo do pedido que foi incluido na tabela Pedidos
IdCadastro = cmd.ExecuteScalar()
Catch ex As Exception
´lblMensagem.Text = ´Erro ao acessar os dados : ´ & vbCrLf & ex.Message & vbCrLf & ex.InnerException.ToString
Finally
´ xxxxxxxxxxxxxx
End Try
´cmdRel = New SqlCommand(Sql, conexao)
´cmdRel.ExecuteNonQuery()
´conexao.Close()
End Sub
Muito Obrigado
Estou utilizando ASP.NET 2.0 e tenho uma rotina de atualizacao de dados, onde a rotina esta sendo executada 2 vezes.
Eu clico no botao enviar (para salvar os dados) e dai eles sao gravados.Quando chego ao End Sub a execucao do programa retorna para o evendo Click desse botao e executa tudo de novo.
Sera que existe alguma propriedade que eu deva configurar?
Postei a rotina abaixo.
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Sql As String
Dim cmd As SqlCommand
Dim conexao As SqlConnection
Dim Erro As Integer
Dim IdCadastro As Integer = 0
conexao = New SqlConnection(ConfigurationManager.ConnectionStrings(´timesheetConnectionString´).ConnectionString)
IdCadastro = CboModalidade.SelectedIndex
If IdUsuario = 0 Then
Sql = ´INSERT INTO USERS (USER_NOME,USER_ENDERECO,USER_BAIRRO) ´
Sql = Sql & ´VALUES (´´ & txtNome.Text & ´´,´´
Sql = Sql & txtEndereco.Text & ´´,´´
Sql = Sql & txtBairro.Text & ´´)´
Else
Sql = ´UPDATE USERS ´
Sql += ´ SET USER_NOME=´´ & txtNome.Text & ´´,´
Sql += ´ USER_ENDERECO=´´ & txtEndereco.Text & ´´,´
Sql += ´ USER_BAIRRO =´´ & txtBairro.Text.Trim & ´´,´
Sql += ´ WHERE USER_ID=´ & IdUsuario
End If
conexao.Open()
cmd = New SqlCommand(Sql, conexao)
cmd.ExecuteNonQuery()
Erro = cmd.ExecuteNonQuery()
If Erro > 0 Then
lblMensagem.Visible = True
lblMensagem.Text = ´Dados Atualizados com Sucesso!´
End If
Try
´Determine a query que seleciona o identificador do registro inserido
cmd = New SqlCommand(´SELECT @@IDENTITY´, conexao)
cmd.CommandType = CommandType.Text
´obtem o codigo do pedido que foi incluido na tabela Pedidos
IdCadastro = cmd.ExecuteScalar()
Catch ex As Exception
´lblMensagem.Text = ´Erro ao acessar os dados : ´ & vbCrLf & ex.Message & vbCrLf & ex.InnerException.ToString
Finally
´ xxxxxxxxxxxxxx
End Try
´cmdRel = New SqlCommand(Sql, conexao)
´cmdRel.ExecuteNonQuery()
´conexao.Close()
End Sub
Muito Obrigado
Sid.sil
Curtir tópico
+ 0
Responder
Posts
14/08/2008
Ricardo Silva
veio...
vc tem que verificar se é um postBack...
em C# é assim
de imediato isto resolve... porem vc tem que verificar como esta ocorrendo... lembro me que ja passei por isso... na verdade nem sei como resolvi.... apenas fui estudando e qndo me vi ja naum dava mais esse erro...
tenta ai... ou da uma estudada em PostBack axo q e isso
vc tem que verificar se é um postBack...
em C# é assim
if(!IsPostBack){ //Codigo }
de imediato isto resolve... porem vc tem que verificar como esta ocorrendo... lembro me que ja passei por isso... na verdade nem sei como resolvi.... apenas fui estudando e qndo me vi ja naum dava mais esse erro...
tenta ai... ou da uma estudada em PostBack axo q e isso
Responder
14/08/2008
Sid.sil
Obrigado por sua ajuda RicaJedidia
Essa e uma rotina, onde eu executo um Insert e um Update baseado no ID do usuario.Se o ID for ´0´ (usuario nao cadastrado), dou o Insert se diferente executo o Update (usuario ja cadastrado).
Nos exemplos que vi ate agora o PostBack, aparece apenas no Page_Load.Eu posso utiliza em outras rotinas, quantas vezes for necessario.
Obrigado e um Abraco
Essa e uma rotina, onde eu executo um Insert e um Update baseado no ID do usuario.Se o ID for ´0´ (usuario nao cadastrado), dou o Insert se diferente executo o Update (usuario ja cadastrado).
Nos exemplos que vi ate agora o PostBack, aparece apenas no Page_Load.Eu posso utiliza em outras rotinas, quantas vezes for necessario.
Obrigado e um Abraco
Responder
Clique aqui para fazer login e interagir na Comunidade :)