Foros del Web » Programando para Internet » ASP Clásico »

transacciones

Estas en el tema de transacciones en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/02/2005, 07:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 9
Antigüedad: 19 años, 4 meses
Puntos: 0
transacciones

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
  #2 (permalink)  
Antiguo 04/02/2005, 07:33
Avatar de Muzztein  
Fecha de Ingreso: agosto-2002
Ubicación: Hangar 18
Mensajes: 1.703
Antigüedad: 21 años, 9 meses
Puntos: 16
roll back.


te aconsejo hacer un procedimiento almacenado dentro del oracle.
de tal manera de que si el segundo insert se cae entonces llamas a un rollback
y si no haces commit.
pero esto ya es PL SQL y no ASP


  #3 (permalink)  
Antiguo 04/02/2005, 07:39
 
Fecha de Ingreso: febrero-2005
Mensajes: 9
Antigüedad: 19 años, 4 meses
Puntos: 0
Muzztein ...gracias amigo ...la verdad no me manejo mucho en ese tema .....estoy haciendo una practica y a duras penas veo esto de asp ......por casualidad no sabes de alguna pagina donde tengan codigo de ejemplo de esto y de lo que me mencionaste....gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:14.