transacciones

principiante72
04 de Febrero del 2005
Primero que nada hola y gracias por ayudar a genbte como nosotros que recien nos estamos iniciando en esto de la programacion...bueno les cuento lo siguiente resulta que tengo que ingresar datos a una base de datos oracle 9i, estos datos los envio a traves de formularioy son recibidos por mi pagina asp que los procesa, bueno eh ahi el problema como tengo que insertar a tres tablas diferentes ....aca va el primer pedazo de codigo el cual me corre bien

<body>
<%

Dim basedato
Set basedato = Server.CreateObject("ADODB.Connection")
basedato.open "Provider=MSDAORA.1;Password=rd;User Id=rdcastillo;Data Source=urano"
basedato.cursorlocation = 3


'recogemos las variables del usuario
rut=Request.Form("rut")
digito=Request.Form("digito")
nombre=Request.Form("nombre")
apellido1=Request.Form("apellido1")
apellido2=Request.Form("apellido2")
telefono=Request.Form("fono")
direccion=Request.Form("direccion")


'recogemos variables del servicio radiotaxi
codigo_taxi=Request.Form("codigo_taxi")
taxi=Request.Form("taxi")
lugar_retiro=Request.Form("lugar_retiro")
hora_retiro=Request.Form("hora_retiro")
fecha=Request.Form("fecha")


basedato.execute "INSERT INTO rtx_visita VALUES('" & rut & "', '" & digito & "', '" & nombre & "', '" & apellido1 & "', '" & apellido2 & "', '" & direccion & "', '" & telefono & "')"

basedato.execute "INSERT INTO rtx_servicio VALUES('" & codigo_taxi & "', to_date('" & fecha & "','dd/mm/yyyy'), to_date('" & hora_retiro & "','HH24:MI'), '" & lugar_retiro&"', '" & taxi & "')"

basedato.execute "INSERT INTO rtx_usa VALUES('" & codigo_taxi & "', '" & rut & "')"

%>

</body>

esta insercion se efectua sin problemas ...pero si ingreso otra vez datos y adrede repito la primarykey en la tabla "rtx_servicio" se caera ....pero ingresara en el primer insert en la tabla "rtx_visita" y esto es lo que no quiero ....es decir si se cae en algun insert que todas las demas queden nulas y si todo funciona bien ....que quede grabado ....se que tengo que trabajar con transacciones y eh aqui el segundo codigo que implemente pero me arroja errores
<body>
<%

Dim basedato
Set basedato = Server.CreateObject("ADODB.Connection")
basedato.open "Provider=MSDAORA.1;Password=rd;User Id=rdcastillo;Data Source=urano"
basedato.cursorlocation = 3


'recogemos las variables del usuario
rut=Request.Form("rut")
digito=Request.Form("digito")
nombre=Request.Form("nombre")
apellido1=Request.Form("apellido1")
apellido2=Request.Form("apellido2")
telefono=Request.Form("fono")
direccion=Request.Form("direccion")


'recogemos variables del servicio radiotaxi
codigo_taxi=Request.Form("codigo_taxi")
taxi=Request.Form("taxi")
lugar_retiro=Request.Form("lugar_retiro")
hora_retiro=Request.Form("hora_retiro")
fecha=Request.Form("fecha")

On Error Resume Next
basedato.BEGINTRANS
basedato.execute "INSERT INTO rtx_visita VALUES('" & rut & "', '" & digito & "', '" & nombre & "', '" & apellido1 & "', '" & apellido2 & "', '" & direccion & "', '" & telefono & "')"

IF Err.Number <> 0 Then
basedato.RollBackTrans
ELSE
basedato.execute "INSERT INTO rtx_servicio VALUES('" & codigo_taxi & "', to_date('" & fecha & "','dd/mm/yyyy'), to_date('" & hora_retiro & "','HH24:MI'), '" & lugar_retiro&"', '" & taxi & "')"

IF Err.Number <> 0 Then
basedato.RollBackTrans
ELSE
basedato.execute "INSERT INTO rtx_usa VALUES('" & codigo_taxi & "', '" & rut & "')"

IF Err.Number <> 0 Then
basedato.RollBackTrans
ELSE
basedato.CommitTrans
basedato.Close
Set basedato = nothing
END IF
END IF
END IF
%>
</body>

esta segunda opcion no me resulta ya que se queda cargando la pagina eternamente ...y si pongo un response.write("algo") en algunos de los IF para ver si realmente entra ahi ...no me aparece nada ...por lo que no esta entrando......creo que es algo con el manejo de errores ...no se ......POR FAVOR NECESITO AYUDA NO SE QUE HACER EH NAVEGADO BUSCANDO EJEMPLOS Y NADA DESDE YA GRACIAS POR DARSE EL TIEMPO DE LEER MI DUDA GRACIAS