Ir para conteúdo

Arquivado

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

FabianoSouza

Insert duplicado

Recommended Posts

O código não está lá muito inteligente. Mas está funcionado.

O problema é que um dos INSERT tá gerando duplicidade.

O insert na tab DATAS faz com que o primeiro insert (na tab FORECAST) gere duplicidade

Se eu desativar o insert na tab DATAS a coisa roda corretamente.

Não sei onde mais olhar no código...

 

Vejam o código.

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
      
      <%
      Option Explicit
      %>


	<%
	  'Interrompe execução do script caso seja encontrado algum erro
	  On Error Resume Next

	  'Declara variáveis
	  Dim var_cod_servico
	  Dim var_titulo
	  Dim var_custo
	  Dim var_cod_serv_requerente
	  Dim var_cod_responsavel
	  Dim var_data_inicial
	  Dim var_data_final
	  Dim var_comentarios
	  Dim var_cod_usuario
	  Dim var_ip

	  'Recupera valores do formulário e os atribui a variáveis
	  var_cod_servico = Request.Form("cod_servico")
	  var_cod_servico = IsNumeric(var_cod_servico)
	  If var_cod_servico = False Then
	  var_cod_servico = "0"
	  Else
	  var_cod_servico = Request.Form("cod_servico")
	  End if

	  var_titulo = TrataString(Request.Form("titulo")) 
	  
  	  var_custo = Request.Form("custo")
	  var_custo = IsNumeric(var_custo)
	  If var_custo = False Then
	  var_custo = "0"
	  Else
	  var_custo = Replace(Request.Form("custo"),",",".")
	  End if
	  
	  var_cod_serv_requerente = TrataString(Request.Form("cod_servico_requerente")) 
	  var_cod_responsavel = TrataString(Request.Form("cod_responsavel")) 
	  var_data_inicial = TrataString(Request.Form("data_inicial")) 
	  var_data_final = TrataString(Request.Form("data_final"))
	  var_comentarios = TrataString(Request.Form("comentarios"))
	  var_cod_usuario = Session("autentica")
	  var_ip = Request.ServerVariables("REMOTE_ADDR")


***************** Este insert aqui está gerando duplicidade no banco*********
*****************************************************************************
*****************************************************************************	  

	  'Grava valor das variáveis no banco de dados
	  Dim strSQL
	  strSQL = ""
	  strSQL = strSQL &"INSERT INTO FORECAST "
	  strSQL = strSQL &"(ForecastCodServico, CodServicoRequerente,"
	  strSQL = strSQL &" Titulo, Valor, Comentarios, "
	  strSQL = strSQL &" ForecastCodAutor, CodProprietario,"
	  strSQL = strSQL &" ForecastDataCad, ForecastIpCad)"
	  strSQL = strSQL &" VALUES "
	  strSQL = strSQL &"('"&var_cod_servico&"', '"&var_cod_serv_requerente&"', "
	  strSQL = strSQL &" '"&var_titulo&"', '"&var_custo&"', '"&var_comentarios&"', "
	  strSQL = strSQL &" '"&var_cod_usuario&"', '"&var_cod_responsavel&"', "
	  strSQL = strSQL &" getDate(), '"&var_ip&"')"

	  MM_conexao_STRING.Execute(strSQL)

	  Dim sqlForecast, rsForecast
	  
	  'Recupera último registro gravado pelo usuário
	  sqlForecast = ""
	  sqlForecast = sqlForecast &"SELECT TOP (1) ForecastCod "
	  sqlForecast = sqlForecast &" FROM FORECAST "
	  sqlForecast = sqlForecast &" WHERE "
	  sqlForecast = sqlForecast &" ForecastCodAutor = '"&var_cod_usuario&"'"
	  sqlForecast = sqlForecast &" AND"
	  sqlForecast = sqlForecast &" CodProprietario = '"&var_cod_responsavel&"'"
	  sqlForecast = sqlForecast &" ORDER BY"
	  sqlForecast = sqlForecast &" ForecastDataCad DESC"
	  Set rsForecast = MM_conexao_STRING.Execute(sqlForecast)


******** Se eu desativar este segundo insert, deixa de ocorrer a duplicidade**
*****************************************************************************
*****************************************************************************
	  
	  If Not rsForecast.EOF Then
	  'Grava datas
	  Dim sqlDatas
	  sqlDatas = ""
	  sqlDatas = strSQL &"INSERT INTO DATAS "
	  sqlDatas = sqlDatas &"(DatasCodServico, DatasCodItem, "
	  sqlDatas = sqlDatas &"DatasDataInicio, DatasDataTermino,"
	  sqlDatas = sqlDatas &" DatasCodAutor, DatasCodProprietario, DatasDataCad, DatasIPCad)"
	  sqlDatas = sqlDatas &" VALUES "
	  sqlDatas = sqlDatas &"('"&var_cod_servico&"', '"&rsForecast("ForecastCod")&"', "
	  sqlDatas = sqlDatas &" '"&var_data_inicial&"', '"&var_data_final&"', "
	  sqlDatas = sqlDatas &" '"&var_cod_usuario&"', '"&var_cod_responsavel&"', getDate(), '"&var_ip&"') "
	  MM_conexao_STRING.Execute(sqlDatas)
	  End if
	  
	  'Trata eventual erro
	  Dim i, caminho , nomepagina, caminhofisico
	  
	  If Err.Number <>0 Then
	  
	  caminho = Request.ServerVariables("SCRIPT_NAME")
	  For i = 1 to len(caminho)
	  If inStr(1,right(caminho,i),"../") = 0 then
	  nomepagina = (right(caminho,i))
	  Else
	  Exit for
	  End if
	  Next
  
	  caminhofisico= Server.MapPath("/")
	  Response.Cookies("erro").item("pagina") = nomepagina
	  Response.Cookies("erro").item("numero") = Err.number  
	  Response.Cookies("erro").item("data") = Time()
	  Response.Cookies("erro").item("usuario") = Request.Cookies("conta").item("login")
	  Response.Cookies("erro").item("descricao") = Err.description   
	  Response.Cookies("erro").item("caminhofisico") = caminhofisico    
	  Response.Cookies("erro").item("origem") = Err.nativeerror  
	  Response.Cookies("erro").item("fonte") = Err.source
	  Response.Clear()
	  Response.Redirect("../../../Intro/erro_log.asp")
	  Else
  
	  'Retorna para página de resgistros
	  Response.Redirect("../../capacitacao/cursos/forecast/")

	  End if
	  On Error GoTo 0
  
	  MM_conexao_STRING.Close()
	  Set rsForecast = Nothing
	  Set MM_conexao_STRING = Nothing
	%>

Putz! Foi só postar que o milagre aconteceu hehehe

O problema está aqui

sqlDatas = strSQL &"INSERT INTO DATAS "

Estava usando no segundo insert, o sql do primeiro insert. Aí com certeza daria a duplicidade.

 

O certo é

sqlDatas = sqlDatas &"INSERT INTO DATAS "

Resolvido!

Valew!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca como resolvido

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.