Ir para conteúdo

POWERED BY:

Arquivado

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

cintiadel

[Resolvido] página de atualiação

Recommended Posts

estou desenvolvendo uma pagina de atualização do meu sistema onde ele verifica dados de uma tabela e compara com outra, se já houver o registro ele não fará nada, mas se não houver ele terá que inserir isso sempre vinculado ao campo que elas tem em comum.

mas esta apresentando o seguinte erro: Já existe um DataReader aberto associado a este comando que deve ser fechado primeiro.

Não sei de qual dataReader ele esta dizendo e onde fecha-lo ja tentei diversas vezes, conto com a ajuda de vocês.

Segue o código abaixo:

desde já agradeço

 

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

		Server.ScriptTimeout = 999999

		Dim consei As New Data.SqlClient.SqlConnection("conexao1")
		Dim concount As New Data.SqlClient.SqlConnection("conexao1")
  Dim conweb As New Data.SqlClient.SqlConnection("conexao2")

		Dim j As Integer
		Dim k As Integer
		Dim i As Integer

		Dim hora_inicio As Date = Now
		Dim TOTAL_REGISTROS As Integer

		Dim com_sql_temp As New Data.SqlClient.SqlCommand
		Dim com_sql_conta As New Data.SqlClient.SqlCommand
		Dim com_ins As New Data.SqlClient.SqlCommand
		Dim sql As New Data.SqlClient.SqlCommand

		Dim dr_sei As Data.SqlClient.SqlDataReader
		Dim dr_count As Data.SqlClient.SqlDataReader
		Dim dr_ins As Data.SqlClient.SqlDataReader

		consei.Open()
		com_sql_temp.Connection = consei
		com_sql_temp.CommandTimeout = 0
		com_sql_temp.CommandText = "Select campo1, campo2 from tabela1"
		dr_sei = com_sql_temp.ExecuteReader

		concount.Open()
		com_sql_conta.Connection = concount
		com_sql_conta.CommandText = "Select distinct count(campo1) from tabela1"
		dr_count = com_sql_conta.ExecuteReader
		dr_count.Read()

		TOTAL_REGISTROS = dr_count(0)
		dr_count.Close()
		dr_count = Nothing

		j = 0
		k = 0
		sql.Connection = conweb
		conweb.Open()

		While dr_sei.Read()
			With sql.Parameters
				.Add(New Data.SqlClient.SqlParameter("@campo1", dr_sei("campo1")))
				.Add(New Data.SqlClient.SqlParameter("@campo2", dr_sei("campo2")))
			End With

			com_ins.CommandText = "Select campo1 from tabela2 where campo1='" & dr_sei("campo1") & "'"
			com_ins.Connection = conweb
			dr_ins = com_ins.ExecuteReader

			If dr_ins.HasRows = False Then
				sql.CommandText = "Insert into tabela2(campo1,campo2) values "
				sql.CommandText = sql.CommandText & "(@campo1,@campo2)"
				i = 0
				sql.ExecuteNonQuery()
				i = i + 1
				k = k + 1
				sql.Parameters.Clear()
			End If
		  
			dr_ins.Close()
		End While
		dr_sei.Close()
		consei.Close()
		conweb.Close()
		concount.Close()

	End Sub

End Class

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cíntia, boa tarde! http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

Acredito que apenas você inserir na sua ConnectionString o seguinte parâmetro:

MultipleActiveResultSets=True; ele permite que você utilize numa mesma conexão múltiplos dataReaders.

 

Exemplo:

 

' Em VB.
Using con As New SqlConnection("Server=.\SQLEXPRESS;DataBase=MinhaBase;uid=Usuario;password=MinhaPassword;MultipleAc
tiveResultSets=True;")
	  'Cria as duas batchs de consulta
	  Dim cm0 As new SqlCommand("consulta_0")
	  Dim cm1 As new SqlCommand("consulta_1")

	  ' ---- agregue as consultas aos respectivos dataReaders ----

	 Using dr0 As SqlDataReader = cm0.ExecuteReader() ' Executa a batch consulta_0.
		  While (dr0.Read())
	 
				  ' Fazer alguma coisa 
				  Using dr1 As SqlDataReader = cm1.ExecuteReader() ' Executa a segunda batch, ou seja a consulta_1
					   While dr1.Read()
							   ' Fazer mais alguma coisa.
							   
					   End While
				  End Using
		  End While
	  End Using
End Using

Você poderá ter vários results em uma mesma conexão, descartando no caso sua segunda conexão criada, e eles poderão fazer uma co-relação entre a linha do DataReader dr1 com a linha de resultado do dr0. http://forum.imasters.com.br/public/style_emoticons/default/closedeyes.gif

 

É isso aí, espero que lhe ajude!

 

Caso queira pesquisar mais profundo sobre o assunto: http://forum.imasters.com.br/public/style_emoticons/default/seta.gif http://danielfonsecacastro.spaces.live.com...BDE58D2!231

 

Abraços! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Cíntia, por nada fico feliz por tê-la ajudado! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Tenha uma boa semana. :D

Valeu Juliano pela observação! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

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.