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 %>