Ir para conteúdo

POWERED BY:

Arquivado

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

cintiadel

jogando dados de uma base para outra

Recommended Posts

preciso criar páginas de atualizações de uma base em asp net.

nela eu seleciono dados da base1 , deleto tudo que esta na base2, e insiro os dados da base1 na base2.

e disparo um email com:

- total de registros encontrados

- total de registros transmitidos

- hora inicio da atualizacao

- hora fim da atualizacao

 

 

no asp ele faz isso em blocos de 100 com while, o q torna mais rapido

usando While i <= 100, como faria em asp net???

 

exemplo como essa:

<!--#include file="database.asp"-->
<%
'On Error Resume Next
Sub manda_email(mensagem2)
set mail = Server.CreateObject("CDONTS.NewMail")
	mail.from = "email"
	mail.to = "email"
	mail.Subject = "Atualização dos Alunos"
	mail.BodyFormat = 0
	mail.MailFormat = 0
	mail.body = mensagem2
	mail.send
set mail = nothing
End Sub

server.scripttimeout = 999999

HORA_INICIO =NOW()

SQL_TEMP= "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "
SQL_CONTA = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"

Set Aluno = dbAlunosLocal.Execute(SQL_TEMP)
Set conta_Aluno = dbAlunosLocal.Execute(SQL_CONTA)

TOTAL_REGISTROS = CONTA_ALUNO(0)
CONTA_ALUNO.CLOSE

SET CONTA_ALUNO = NOTHING

dbAlunosRemoto.Execute("Delete from tabela")

j=0
k=0

While Not Aluno.EOF
response.write(aluno("codigo") & "<br>")
response.Flush()
	   SQL = "INSERT INTO alunosatuais"
	   SQL = SQL & "(codigo"
	   SQL = SQL & ",nome"
	   SQL = SQL & ",sigla"
	   SQL = SQL & ",sit"
	   SQL = SQL & ",local1"
	   SQL = SQL & ",bairro"
	   SQL = SQL & ",aass"
	   SQL = SQL & ",dtmat"
	   SQL = SQL & ",data"
	   SQL = SQL & ",diapgto"
	   SQL = SQL & ",se_tipo_diapgto)"
	   SQL = SQL & "	 VALUES "
I=0
while i <= 100
	if not (aluno.EOF) then
	  SQL = SQL & "('" & aluno("codigo") & "'"
	NOME = REPLACE(ALUNO("NOME"),"'"," ")
	SQL = SQL & ",'" & NOME & "'"
	  sigla = "NA"
	SQL = SQL & ",'" & sigla & "'"
	  SQL = SQL & ",'" & aluno("sit") & "'"
endereco = REPLACE(ALUNO("LOCAL1"),"'"," ")
	endereco = replace(endereco,","," ")
	SQL = SQL & ",'" & endereco & "'"
	  BAIRRO = REPLACE(aluno("bairro"),"'"," ")
	SQL = SQL & ",'" & BAIRRO & "'"
	  SQL = SQL & ",'" & aluno("aass")& "'"
	temp_dtmat = split(aluno("dtmat"),"/")
	dia_mat = temp_dtmat(0)
	mes_mat = temp_dtmat(1)
	ano_mat = temp_dtmat(2)
	dtmat = ano_mat & "-" & mes_mat & "-" & dia_mat
temp_dt = split(aluno("data"),"/")

	if not aluno("data") = null then
dia = temp_dt(0)
mes = temp_dt(1)
	ano = temp_dt(2)
	data = ano & "-" & mes & "-" & dia
	else
		data = year(now()) & "-" & month(now()) & "-" & day(now())
	end if
	
SQL = SQL & ",'" & data & "'"
	  SQL = SQL & ",0"
	  SQL = SQL & "," & aluno("diapgto") 

	if i = 100 then 
		SQL = SQL & ",'" & aluno("se_tipo_diapgto") & "')"
	else
		SQL = SQL & ",'" & aluno("se_tipo_diapgto") & "'),"
	  end if 
End if
i=i+1
		k=k+1
	if not (aluno.EOF) then
		aluno.movenext
	else
		SQL = Left(SQL,(len(sql)-1))
		dbAlunosRemoto.execute(SQL)
		HORA_FIM = NOW()
		MENSAGEM = "TOTAL DE REGISTROS ENCONTRADOS:" & TOTAL_REGISTROS & "<BR>"
		MENSAGEM= MENSAGEM & "TOTAL DE REGISTROS TRANSMITIDOS:" &  (k - 1)& "<BR>"
		MENSAGEM = MENSAGEM & "HORA INICIO:" & HORA_INICIO & "<BR>"
		MENSAGEM = MENSAGEM & "HORA FIM:" & HORA_FIM & "<BR>"
		call manda_email(mensagem)
		Response.Write(mensagem)
		Response.End()
	end if
	wend
	dbAlunosRemoto.execute(SQL)
	j=j+1
wend
HORA_FIM = DATE() & "-" & NOW()
MENSAGEM = "TOTAL DE REGISTROS ENCONTRADOS:" & TOTAL_REGISTROS & "<BR>"
MENSAGEM= MENSAGEM & "TOTAL DE REGISTROS TRANSMITIDOS:" & (k-1) & "<BR>"
MENSAGEM = MENSAGEM & "HORA INICIO:" & HORA_INICIO & "<BR>"
MENSAGEM = MENSAGEM & "HORA FIM:" & HORA_FIM & "<BR>"
call manda_email(MENSAGEM)
Response.Write(mensagem)
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode utilizar a mesma lógica, acho que não terá problemas.

 

Abraços..

ate ai tudo bem, mas n to conseguindo reescrever o codigo em asp net

pode me ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como disse o oenning...tenta a mesma lgica...

 

ve se funciona esse

ta igual ao seu quase

 

Ps...asp.net nao tem include

 

Cria uma classe conexao e chama ela na pagina

 

Public Class Class1
	Sub manda_email(ByVal mensagem2)
		mail = Server.CreateObject("CDONTS.NewMail")
		mail.from = "email"
		mail.to = "email"
		mail.Subject = "Atualização dos Alunos"
		mail.BodyFormat = 0
		mail.MailFormat = 0
		mail.body = mensagem2
		mail.send()
		mail = Nothing
	End Sub
	Public Sub TransfereDados()
		<!--#include file="database.asp"-->

		server.scripttimeout = 999999

		HORA_INICIO = NOW()

		SQL_TEMP = "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "
		SQL_CONTA = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"

		Aluno = dbAlunosLocal.Execute(SQL_TEMP)
		conta_Aluno = dbAlunosLocal.Execute(SQL_CONTA)

		TOTAL_REGISTROS = CONTA_ALUNO(0)
		CONTA_ALUNO.CLOSE()

		CONTA_ALUNO = Nothing

		dbAlunosRemoto.Execute("Delete from tabela")

		j = 0
		k = 0

		While Not Aluno.EOF
			response.write(aluno("codigo") & "<br>")
			response.Flush()
			SQL = "INSERT INTO alunosatuais"
			SQL = SQL & "(codigo"
			SQL = SQL & ",nome"
			SQL = SQL & ",sigla"
			SQL = SQL & ",sit"
			SQL = SQL & ",local1"
			SQL = SQL & ",bairro"
			SQL = SQL & ",aass"
			SQL = SQL & ",dtmat"
			SQL = SQL & ",data"
			SQL = SQL & ",diapgto"
			SQL = SQL & ",se_tipo_diapgto)"
			SQL = SQL & "	 VALUES "
			I = 0
			While i <= 100
				If Not (aluno.EOF) Then
					SQL = SQL & "('" & aluno("codigo") & "'"
					NOME = REPLACE(ALUNO("NOME"), "'", " ")
					SQL = SQL & ",'" & NOME & "'"
					sigla = "NA"
					SQL = SQL & ",'" & sigla & "'"
					SQL = SQL & ",'" & aluno("sit") & "'"
					endereco = REPLACE(ALUNO("LOCAL1"), "'", " ")
					endereco = replace(endereco, ",", " ")
					SQL = SQL & ",'" & endereco & "'"
					BAIRRO = REPLACE(aluno("bairro"), "'", " ")
					SQL = SQL & ",'" & BAIRRO & "'"
					SQL = SQL & ",'" & aluno("aass") & "'"
					temp_dtmat = split(aluno("dtmat"), "/")
					dia_mat = temp_dtmat(0)
					mes_mat = temp_dtmat(1)
					ano_mat = temp_dtmat(2)
					dtmat = ano_mat & "-" & mes_mat & "-" & dia_mat
					temp_dt = split(aluno("data"), "/")

					If Not aluno("data") = null Then
						dia = temp_dt(0)
						mes = temp_dt(1)
						ano = temp_dt(2)
						data = ano & "-" & mes & "-" & dia
					Else
						data = year(now()) & "-" & month(now()) & "-" & day(now())
					End If

					SQL = SQL & ",'" & data & "'"
					SQL = SQL & ",0"
					SQL = SQL & "," & aluno("diapgto")

					If i = 100 Then
						SQL = SQL & ",'" & aluno("se_tipo_diapgto") & "')"
					Else
						SQL = SQL & ",'" & aluno("se_tipo_diapgto") & "'),"
					End If
				End If
				i = i + 1
				k = k + 1
				If Not (aluno.EOF) Then
					aluno.movenext()
				Else
					SQL = Left(SQL, (len(sql) - 1))
					dbAlunosRemoto.execute(SQL)
					HORA_FIM = NOW()
					MENSAGEM = "TOTAL DE REGISTROS ENCONTRADOS:" & TOTAL_REGISTROS & "<BR>"
					MENSAGEM = MENSAGEM & "TOTAL DE REGISTROS TRANSMITIDOS:" & (k - 1) & "<BR>"
					MENSAGEM = MENSAGEM & "HORA INICIO:" & HORA_INICIO & "<BR>"
					MENSAGEM = MENSAGEM & "HORA FIM:" & HORA_FIM & "<BR>"
					Call manda_email(mensagem)
					Response.Write(mensagem)
					Response.End()
				End If
			End While
			dbAlunosRemoto.execute(SQL)
			j = j + 1
		End While
		HORA_FIM = Today
		MENSAGEM = "TOTAL DE REGISTROS ENCONTRADOS:" & TOTAL_REGISTROS & "<BR>"
		MENSAGEM = MENSAGEM & "TOTAL DE REGISTROS TRANSMITIDOS:" & (k - 1) & "<BR>"
		MENSAGEM = MENSAGEM & "HORA INICIO:" & HORA_INICIO & "<BR>"
		MENSAGEM = MENSAGEM & "HORA FIM:" & HORA_FIM & "<BR>"
		manda_email(MENSAGEM)
		Response.Write(mensagem)
	End Sub
End Class

Nao tive tempo de testar...

 

É capaz de dar erro na conexao...

dai eu ajudo

 

Q q coisa post ai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Declare elas cintia.

 

Abraços...

ate ai tudo bem

mas como vou declarar as palavras em negrito q estao com esse erro, n sei como declarar o tipo dessas variaveis:

 

server.scripttimeout = 999999

HORA_INICIO = Now()

SQL_TEMP = "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "

SQL_CONTA = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"

Aluno = dbAlunosLocal.Execute(SQL_TEMP)

conta_Aluno = dbAlunosLocal.Execute(SQL_CONTA)

TOTAL_REGISTROS = CONTA_ALUNO(0)

CONTA_ALUNO.CLOSE()

CONTA_ALUNO = Nothing

dbAlunosRemoto.Execute("Delete from tabela")

While Not Aluno.EOF

response.write(aluno("codigo") & "<br>")

response.Flush()

SQL = "INSERT INTO alunosatuais"

 

 

por isso pedi ajuda pra reescrever o codigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim HORA_INICIO as date = Now()

Dim SQL_TEMP as string = "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "

Dim SQL_CONTA as string = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"

Dim Aluno as Object = dbAlunosLocal.Execute(SQL_TEMP)

Dim conta_Aluno as object = dbAlunosLocal.Execute(SQL_CONTA)

Dim TOTAL_REGISTROS as integer = CONTA_ALUNO(0)

e assim vai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim HORA_INICIO as date = Now()
Dim SQL_TEMP as string = "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "
Dim SQL_CONTA as string = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"
Dim Aluno as Object = dbAlunosLocal.Execute(SQL_TEMP)
Dim conta_Aluno as object = dbAlunosLocal.Execute(SQL_CONTA)
Dim TOTAL_REGISTROS as integer = CONTA_ALUNO(0)
e assim vai
e esse trecho do movenext

como passa pra asp net

if not (aluno.EOF) then
		aluno.movenext
	else
		SQL = Left(SQL,(len(sql)-1))
		dbAlunosRemoto.execute(SQL)

Dim HORA_INICIO as date = Now()
Dim SQL_TEMP as string = "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "
Dim SQL_CONTA as string = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"
Dim Aluno as Object = dbAlunosLocal.Execute(SQL_TEMP)
Dim conta_Aluno as object = dbAlunosLocal.Execute(SQL_CONTA)
Dim TOTAL_REGISTROS as integer = CONTA_ALUNO(0)
e assim vai

este trecho n to conseguindo:

If Not (dr_sei.Read) Then
					aluno.movenext()
				Else
					sql = Left(sql, (Len(sql) - 1))
					dbAlunosRemoto.execute(sql)
					HORA_FIM = Now()
				End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim HORA_INICIO as date = Now()
Dim SQL_TEMP as string = "SELECT * FROM [Tabela] WHERE [aass]= '20082' or [aass] = '20091' "
Dim SQL_CONTA as string = "SELECT count(*) FROM [Tabela] WHERE [aass] = '20082' or [aass] = '20091'"
Dim Aluno as Object = dbAlunosLocal.Execute(SQL_TEMP)
Dim conta_Aluno as object = dbAlunosLocal.Execute(SQL_CONTA)
Dim TOTAL_REGISTROS as integer = CONTA_ALUNO(0)
e assim vai
sera q alguem pode me ajudar????

n sei como declarar a parte em negrito.

e tbm tah com erro: Tentativa inválida de chamar Read quando o leitor estava fechado. na linha do while:While dr_sei.Read()

segue o codigo como esta:

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 conweb As New Data.SqlClient.SqlConnection("conexao2")
		Dim hora_inicio As Date = Now
		Dim com_sql_temp As New Data.SqlClient.SqlCommand
		Dim com_sql_conta As New Data.SqlClient.SqlCommand
		Dim com_del_web 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

		consei.Open()
		com_sql_temp.Connection = consei
		com_sql_temp.CommandText = "SELECT * FROM tabela2 WHERE [aass]= '20082' or [aass] = '20091' "
		dr_sei = com_sql_temp.ExecuteReader
		dr_sei.Read()
		consei.Close()

		consei.Open()
		com_sql_conta.Connection = consei
		com_sql_conta.CommandText = "SELECT count(*) FROM tabela2 WHERE [aass] = '20082' or [aass] = '20091'"
		dr_count = com_sql_conta.ExecuteReader
		dr_count.Read()
		'consei.Close()

		Dim HORA_FIM As Date
		Dim mensagem As String

		Dim TOTAL_REGISTROS As Integer = dr_count(0)
		'dr_count.Close()
		dr_count = Nothing

		conweb.Open()
		com_del_web.Connection = conweb
		com_del_web.CommandText = "Delete from tabela1"
		com_del_web.ExecuteNonQuery()
		conweb.Close()

		Dim j As Integer
		Dim k As Integer

		j = 0
		k = 0

		While dr_sei.Read()

			Response.Write(dr_sei("codigo") & "<br>")
			Response.Flush()

			conweb.Open()
			sql.CommandText = "INSERT INTO alunosatuais"
			sql.CommandText = sql.CommandText & "(codigo"
			sql.CommandText = sql.CommandText & ",nome"
			sql.CommandText = sql.CommandText & ",sigla"
			sql.CommandText = sql.CommandText & ",dtmat"
			sql.CommandText = sql.CommandText & ",data"
			sql.CommandText = sql.CommandText & ",diapgto"
			sql.CommandText = sql.CommandText & ",se_tipo_diapgto)"
			sql.CommandText = sql.CommandText & "	 VALUES "

			Dim i As Integer
			i = 0

			While i <= 100

				If Not (dr_sei.Read) Then

					sql.CommandText = sql.CommandText & "('" & dr_sei("codigo") & "'"
					Dim NOME As String = Replace(dr_sei("NOME"), "'", " ")

					sql.CommandText = sql.CommandText & ",'" & NOME & "'"

					Dim sigla As String = "NA"

					sql.CommandText = sql.CommandText & ",'" & sigla & "'"

					Dim temp_dtmat As Array = Split(dr_sei("dtmat"), "/")

					Dim dia_mat As String = temp_dtmat(0)
					Dim mes_mat As String = temp_dtmat(1)
					Dim ano_mat As String = temp_dtmat(2)

					Dim dtmat As String = ano_mat & "-" & mes_mat & "-" & dia_mat

					sql.CommandText = sql.CommandText & ",'" & dtmat & "'"

					Dim temp_dt As Array = Split(dr_sei("data"), "/")
					Dim Data As String

					If Not dr_sei("data") = "null" Then
						Dim dia As String = temp_dt(0)
						Dim mes As String = temp_dt(1)
						Dim ano As String = temp_dt(2)
						Data = ano & "-" & mes & "-" & dia
					Else
						Data = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())
					End If

					sql.CommandText = sql.CommandText & ",'" & Data & "'"
					sql.CommandText = sql.CommandText & "," & dr_sei("diapgto")

					If i = 100 Then
						sql.CommandText = sql.CommandText & ",'" & dr_sei("se_tipo_diapgto") & "')"
					Else
						sql.CommandText = sql.CommandText & ",'" & dr_sei("se_tipo_diapgto") & "'),"
					End If
				End If

				i = i + 1
				k = k + 1
			   [b] If Not (dr_sei.Read) Then
					aluno.movenext()
				Else
					sql = Left(sql, (Len(sql) - 1))
					dbAlunosRemoto.execute(sql)

					HORA_FIM = Now()[/b]
					mensagem = "TOTAL DE REGISTROS ENCONTRADOS:" & TOTAL_REGISTROS & "<BR>"
					mensagem = mensagem & "TOTAL DE REGISTROS TRANSMITIDOS:" & (k - 1) & "<BR>"
					mensagem = mensagem & "HORA INICIO:" & hora_inicio & "<BR>"
					mensagem = mensagem & "HORA FIM:" & HORA_FIM & "<BR>"

					'Call manda_email(mensagem)
					Response.Write(mensagem)
					Response.End()

				End If

			End While

			dbAlunosRemoto.execute(sql)
			
'Response.Write(SQL & "<br>")
			'response.end


			j = j + 1
		End While

		HORA_FIM = "-" & Now()

		MENSAGEM = "TOTAL DE REGISTROS ENCONTRADOS:" & TOTAL_REGISTROS & "<BR>"
		MENSAGEM = MENSAGEM & "TOTAL DE REGISTROS TRANSMITIDOS:" & (k - 1) & "<BR>"
		MENSAGEM = MENSAGEM & "HORA INICIO:" & hora_inicio & "<BR>"
		MENSAGEM = MENSAGEM & "HORA FIM:" & HORA_FIM & "<BR>"

		'Call manda_email(mensagem)
		Response.Write(mensagem)
		Response.End()

		sql.ExecuteNonQuery()
		conweb.Close()

	End Sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cintia seu primeiro bloco ja esta errado:

 

consei.Open()
		com_sql_temp.Connection = consei
		com_sql_temp.CommandText = "SELECT * FROM tabela2 WHERE [aass]= '20082' or [aass] = '20091' "
		dr_sei = com_sql_temp.ExecuteReader
		dr_sei.Read()
		consei.Close()

Quando você da um close no consei, automaticamente você fecha o dr_sei, você tem que usa-lo antes de fechar a conexão.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu corrigi isso, mas to com problema no loop para fazer insert ele n esta pegando os valores

tah dando erro: Incorrect syntax near 'VALUES'.

alguem pode me dar um help preciso resolver isso logo

Compartilhar este post


Link para o post
Compartilhar em outros sites

cintiadel, use parâmetros, vai ficar muito melhor visualmente.

Aqui tem um exemplo de INSERT com parâmetros.

http://www.dotnetmaniacs.com.br/dotnetmani...px?ArticleId=14

 

Para resolver seu problema, coloque um breakpoint na linha

sql.ExecuteNonQuery()
E veja qual o comando SQL que ele está tentando executar, assim você pode achar o erro no código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cintiadel, use parâmetros, vai ficar muito melhor visualmente.

Aqui tem um exemplo de INSERT com parâmetros.

http://www.dotnetmaniacs.com.br/dotnetmani...px?ArticleId=14

 

Para resolver seu problema, coloque um breakpoint na linha

sql.ExecuteNonQuery()
E veja qual o comando SQL que ele está tentando executar, assim você pode achar o erro no código.

eu coloquei ele mostra o insert mas n pega os values

Compartilhar este post


Link para o post
Compartilhar em outros sites

cintiadel, use parâmetros, vai ficar muito melhor visualmente.

Aqui tem um exemplo de INSERT com parâmetros.

http://www.dotnetmaniacs.com.br/dotnetmani...px?ArticleId=14

 

Para resolver seu problema, coloque um breakpoint na linha

sql.ExecuteNonQuery()
E veja qual o comando SQL que ele está tentando executar, assim você pode achar o erro no código.

ele esta pegando o insert assim:

INSERT INTO tabel2(codigo,nome,sigla,sit,local1,bairro,cidade,estado,CEP,fone,fone1,fax,UnEsCrS
e,es_codigo,cr_codigo,
cr_aass,serie,turma,aass,dtmat,sexo,estc,data,nchamada,CPF,sitcli,fase,sitfase,P
roxFase,RecebeCarne,cr_codigon,es_codigoa,cr_codigoa,seriea,turmaa,
aassa,sitfasea,nrep,classificacao,email,participacao,plano,se_codigo,diapgto,se_
tipo_diapgto) VALUES
ou seja ele n tah pegando os parametros pra jogar nos values, será que pode dar uma olhada na ultima postagem do codigo

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.