Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/08/2007, 14:28
ZeSaR
 
Fecha de Ingreso: abril-2007
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
Re: Problema con Transaction=Required

Código:
<%@ Transaction=Required  LANGUAGE="VBScript" %>
<%
Sub OnTransactionAborted()
Response.Write "La transacción ha abortado por exceso de tiempo en su ejecución."
End Sub
%>	
<html>
<head>
<title>Carga del Reporte de Informe de Horas</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
 //(funciones para el formato de la ventana)
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" background="FondoSistema.jpg">
<%
'Componente que se instala cuando posee office instalado sino NO SIRVE
'Instanciamos y abrimos nuestro objeto conexion 
Dim DefConexionBDD
Set Conn = Server.CreateObject("ADODB.Connection") 
DefConexionBDD = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="&Server.Mappath("RTS.MDB")
Conn.Open DefConexionBDD
%>
<form name="form1" method="get" action="ReporteInformeHoras.asp">
<%
if request("action") = "A base de Datos" then
	Path = Request.QueryString("file")
	Path_Check = RIGHT(Path, 4)
	if Path = "" or Path_Check <> ".xls" then
		err = true
	else
		err = false
		
		Set appExcel = Server.CreateObject("Excel.Application")
		Set wkb = appExcel.Workbooks.Open(Path)
		wkb.Sheets(1).activate
		Set sh = wkb.Sheets(1) 'para trabajar con sh y no con toda la ruta
		
		celda_empleado = sh.Cells(7,1)
		if celda_empleado <> "" then
			SQL_rec = "Select * from Recurso" ' carga la tabla Recurso
			Set RS_rec = Server.CreateObject("ADODB.RecordSet")
			RS_rec.open SQL_rec, Conn, 2, 2
			do while not RS_rec.eof
			    Ap = LCase(RS_rec("Apellidos"))
			    No = LCase(RS_rec("Nombres"))
			    Ap = Trim(Ap)
			    No = Trim(No)
			    Nomb = LCase(celda_empleado)
			    totcar = Len(Nomb)
				esp = Instr(Nomb, " ")
				Ape1 = Left(Nomb, esp)
				Ape2 = Right(Nomb, totcar-esp)
				Ape1 = Trim(Ape1)
				Ape2 = Trim(Ape2)
				Rec = RS_rec("CodigoRecurso")
				if StrComp(Ape1,Ap,1) = 0 or StrComp(Ape2,Ap,1) = 0 then
					emp = Rec
				end if
				RS_rec.movenext
			loop
			RS_rec.close
		end if
		cargarok = false
		set rs_check = CreateObject("ADODB.Recordset")
		SQL_check = "Select * from InformeHoras WHERE Empleado="&emp&" AND Semana="&CInt(sh.Cells(7,7).Value)
		rs_check.open SQL_check, Conn, 2, 2
		if not rs_check.eof then
			ide = rs_check("Identificador")
			%>
				<Script language="Vbscript">
				 	msg = msgbox("La Planilla de la Semana <%=sh.Cells(7,7).Value%> completada por <%=sh.Cells(7,1)%> ya ha sido cargada anteriormente, y su numero de Reporte es '<%=ide%>'. Seleccione otra Planilla.")
				</script>
			<%
		else
			cargarok = true
		end if
		rs_check.close
		if cargarok then
			Set Rs = Server.CreateObject("ADODB.RecordSet")
			Set Det = Server.CreateObject("ADODB.RecordSet")
			rs.ActiveConnection = Conn
			SQL = "Select * from InformeHoras"' carga la tabla InformeHoras
			rs.open SQL, Conn, 2, 2' abrimos el recordset y le añadimos el Conn, 2, 2 
		    if not rs.eof then
				rs.movelast 
				CodRep = rs("Identificador")
			else
				CodRep = 0
			end if
			'Carga del InformeHoras
			rs.addnew
			Aux = Cint(CodRep) + 1
			if aux < 10 then
				aux = "000"&Cstr(aux)
				elseif aux < 100 then
					aux = "00"&Cstr(aux)
					else
					aux = "0"&Cstr(aux)
			end if
			CodRep = Aux
			rs.fields("Identificador") = CodRep
			celda_division = sh.Cells(7,4)
			celda_division = LCase(celda_division)
			celda_division = Ltrim(celda_division)
			celda_division1 = celda_division
			celda_total = Len(celda_division1)
			celda_total = celda_total - 1
			celda_division1 = LEFT(celda_division1, celda_total)
			celda_division2 = celda_division&"s"
			if celda_division <> "" then
				SQL_area = "Select CodigoArea from Area where LCase(Nombre)='"&celda_division&"' OR LCase(Nombre)='"&celda_division1&"' OR LCase(Nombre)='"&celda_division2&"'"
				Set RS_area = Server.CreateObject("ADODB.RecordSet")
				RS_area.open SQL_area, Conn, 2, 2
				if not rs_area.eof then
					rs.fields("Division") = RS_area("CodigoArea")
				end if
				RS_area.close
			end if
			celda_empleado = sh.Cells(7,1)
			if celda_empleado <> "" then
				SQL_rec = "Select * from Recurso" ' carga la tabla Recurso
				Set RS_rec = Server.CreateObject("ADODB.RecordSet")
				RS_rec.open SQL_rec, Conn, 2, 2
				do while not RS_rec.eof
				    Ap = LCase(RS_rec("Apellidos"))
				    No = LCase(RS_rec("Nombres"))
				    Ap = Trim(Ap)
				    No = Trim(No)
				    Nomb = LCase(celda_empleado)
				    totcar = Len(Nomb)
					esp = Instr(Nomb, " ")
					Ape1 = Left(Nomb, esp)
					Ape2 = Right(Nomb, totcar-esp)
					Ape1 = Trim(Ape1)
					Ape2 = Trim(Ape2)
					Rec = RS_rec("CodigoRecurso")
					if StrComp(Ape1,Ap,1) = 0 or StrComp(Ape2,Ap,1) = 0 then
						rs.fields("Empleado") = Rec
						Response.Write "<input type='hidden' name='CRec' value="&Rec&">"
					end if
					RS_rec.movenext
				loop
				RS_rec.close
			end if
			if sh.Cells(7,7).Value <> "" then
				rs.fields("Semana") = sh.Cells(7,7).Value
			end if
			if sh.Cells(7,8) <> "" then
				rs.fields("FechaFinalizacion") = sh.Cells(7,8)
			end if
			if sh.Cells(27,6) <> "" then
				rs.fields("TotHorasNormales") = sh.Cells(27,6)
			end if
			rs.update ' que actualiza la base de datos
			rs.Close ' se cierra el registro que contiene los datos de InformeHoras
			set rs = nothing
			SQL_det = "Select * from DetalleInformeHrs" 'Carga la tabla de reporte DetalleInformeHoras
			Det.open SQL_det, Conn, 2, 2 'Abrimos el recordset
			dim cont
			'Carga del DetalleInformeHoras
			deta = false
			for cont = 9 to 26 'Comienza a recorrer las filas y a guardar la información recuperada en la BD
				guardar = false
				if sh.cells(cont,1) <> "" then 'Verifica si hay algo en la fila, para dar de alta en el DetalleInformeHoras
					guardar = true
					deta = true
				end if
				if guardar then
					Det.addnew' agregamos un nuevo registro
					on error resume next
					Det.fields("IdentificadorInfHoras") = CodRep
					Det.fields("Fecha") = sh.Cells(cont,1)
					if sh.Cells(cont,2) <> "" then
						Det.fields("HsNormales") = sh.Cells(cont,2)
					end if
					if sh.Cells(cont,3) <> "" then
						Det.fields("Hs50") = sh.cells(cont, 3)
					end if
					if sh.Cells(cont,4) <> "" then
						Det.fields("Hs100") = sh.cells(cont, 4)
					end if
					if sh.Cells(cont,5) <> "" then
						Det.fields("HsViaje") = sh.cells(cont, 5)
					end if
					if sh.Cells(cont,6) <> "" then
						Det.fields("TotalHsNormales") = sh.cells(cont, 6)
					end if
					if sh.Cells(cont,7).Value <> "" then
						Det.fields("NroInfServicio") = sh.cells(cont, 7).Value
					end if
					if sh.Cells(cont,8) <> "" then
						Det.fields("Proyecto") = sh.cells(cont, 8)
					end if
					Det.update ' que actualiza la base de datos
					ok = true
				end if
			next
			Det.close ' se cierra el registro que contiene los datos de DetalleInformeHoras
			set Det = nothing
		end if
		wkb.Close() ' cierro el objeto
		appExcel.Application.Quit()
		appExcel.Quit()
	end if
end if
if ok and deta then
	%>
		<script language="vbscript">
			msg = msgbox("Nuevo Informe de Horas con Detalles dado de Alta")
		</script>
	<%
end if
if ok and deta = false then
	%>
		<script language="vbscript">
			msg = msgbox("Nuevo Informe de Horas dado de Alta, no contenia ningun Detalle")
		</script>
	<%
end if
%>
 
(SIGUE HTML Y ERRORES)