Array
(
)

Duplicidade Na Gravacao dos Dados

Sid.sil
   - 14 ago 2008

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

Ricardo Silva
   - 14 ago 2008

veio...
vc tem que verificar se é um postBack...

em C# é assim
#Código

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

Sid.sil
   - 14 ago 2008

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