Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

SID_SILVA

[Resolvido] Duplicidade Na Gravacao dos Dados

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde,

 

Tá aqui:

 

...

cmd.ExecuteNonQuery()

Erro = cmd.ExecuteNonQuery()

...

 

Você está executando duas vezes a query.

 

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado por sua ajuda roberto182.

 

Mas esse nao e o motivo do erro, ja eliminei uma das linhas.

O que acontece e quando eu chedo ao End Sub a execucao do programa volta para a linha do Button1_Click, como que se eu estivesse executando pela primeira vez.

 

Outro colega sugeriu que eu usasse o PostBack, para verificar se e a primeira passagem pela pagina e se nao for eu saio fora sem fazer nada.

 

Obrigado e um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é algo comum quando usamos o VB e que não acontece no C#, ele cria a referência do click la no HTML e cria a referencia de novo no código VB, retire isto:

Handles Button1.Click
Da sua primeira linha e veja se da certo.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom Dia

 

Puxa era isso mesmo quintelab, funcionou perfeitamente.Eu nao gosto muito de utilizar o C#, digamos que nao fui com a cara dele, pois venho do VB6 e portanto a estrutura em VB.NET e mais familiar para mim.

 

Vendo varios exemplos em Foruns, nas video aulas sobre Net que comprei,apostilas, o C# e usado em grande maioria.Sera que as pessoas tem algo contra o VB, ou sera que e mais facil programar em C#?

 

Eu nao gosto do C# e embora a programacao em VB, va resolver muito provavelmente todos sos meus problemas, certamente terei que aprender o c# a titulo de conhecimento.

 

Obrigado Novamente e ate a proxima duvida, que alias ja esta a caminho.

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

É na verdade muitos preferem o c# por ele vir do C e ser parecido com o Java, é uma linguagem de nível mais baixo, o VB tem muitas facilidades, como a conversão implicita que facilita a vida do programador mas exige mais processamento de sua aplicação. É interessante que conheça ambas as linguagens, só muda um pouco a sintaxe, pois as classes do FrameWork são as mesmas.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Novamente

 

Na verdade eu pensei que o problema estivesse resolvido, porem fui ver agora e ele ainda persiste, pois o Handles Button1.Click que eu havia tirado, simplesmente e colocado de volta automaticamente.

 

E agora, sera que terei que mudar para o C#?

 

Um Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Showww..... me ajudou e muito essa informação.

Realmente eu estava tendo os registros duplicados. Agora zerou.

Obrigado. Também programo me .VB, aliás estou começando com .NET....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.