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. Hola, He hecho una web de compra por internet y quiero hacer una transaccion donde se inserten unos valores(cliente, compra) y mas o menos he ...
  #1 (permalink)  
Antiguo 08/12/2003, 17:15
 
Fecha de Ingreso: octubre-2003
Ubicación: barcelona/La seu d'urgell
Mensajes: 26
Antigüedad: 20 años, 7 meses
Puntos: 0
transacciones

Hola,
He hecho una web de compra por internet y quiero hacer una transaccion donde se inserten unos valores(cliente, compra) y mas o menos he hecho esto:

<%@Language="JAVASCRIPT" Transaction="Required"%>
<% var conn ="Driver=mysql;server=localhost;Database=venda;Opt ion=1";

var s1 = "insert into clientes (name) values ('marc')";
var s2 = "insert into compra (producto,name) values ('hplaser,marc')";
var cmdInsert = Server.CreateObject('ADODB.Command');
cmdInsert.ActiveConnection = conn;
cmdInsert.BeginTrans;
//inserto todos los valores del cliente
cmdInsert.CommandText = s1;
cmdInsert.Execute();
//inserto todos los valores de la compra
cmdInsert.CommandText = s2;
cmdInsert.Execute();
cmdInsert.RollbackTrans;

%>

El problema es que dentro de esta transaccion quiero consultar el stock del producto que quiere comprar el cliente, y si hay stock k se inserten los datos(s1,s2) y sino k no inserte nada.
Alguien me podria ayudar?

Gracias
__________________
En el mundo hay 10 tipos de personas, los que entienden el binario y los k no.
  #2 (permalink)  
Antiguo 09/12/2003, 15:25
Avatar de Cbas  
Fecha de Ingreso: enero-2002
Ubicación: capital federal
Mensajes: 437
Antigüedad: 22 años, 5 meses
Puntos: 2
Primero deberías hacer un count del stock o del campo que fuere de ese producto y si es >0 entonces haces toda la transacción, me parece que por ahí debería venir el tema
Perdoname que me meta, pero ahí no estás transaccionando nada...
Después de Cada insert deberías obtener la cantidad de registros grabados, de tal forma que si es 0 entonces hacés un rollback, sino hacés la otra insersión y recién ahí haces commit, o rollback de ambas, me explico?
SALUDOS
__________________
La Perfección es enemigo de lo bueno.
  #3 (permalink)  
Antiguo 10/12/2003, 14:54
 
Fecha de Ingreso: marzo-2003
Ubicación: onde toy?
Mensajes: 1.437
Antigüedad: 21 años, 3 meses
Puntos: 9
Yo te recomendaría, por diseño y por un asunto de comodidad para quien compra, hacer una consulta antes y deshabilitar el boton de agregar al carro si es que el stock es 0 o crítico.

Esto por qué.... imaginate...estoy comprando y comprando y agregando al carro y luego me doy cuenta de que, es un caso extremo pero puede suceder, no hay stock de ninguno de los tres....ufffff grrrr, %&$"%$)(/%$$, no vuelvo más... do you Captando?


sonomasería.
__________________
Buena Vida...
Francisco
  #4 (permalink)  
Antiguo 11/12/2003, 03:59
 
Fecha de Ingreso: octubre-2003
Ubicación: barcelona/La seu d'urgell
Mensajes: 26
Antigüedad: 20 años, 7 meses
Puntos: 0
Si, lo se por eso quiero hacer transacciones, por si acceden mas de un comprador a la vez y compran el mismo producto y no hubiera stock para los dos. De esta forma solo compraria el primero que llega. Si hay algun problema con algun stock le doy un mensaje de alert(con el error y stock disponible) y lo redirecciono hacia la lista de productos que tiene en la cesta, para que pueda modificarlo.
De la forma que dices podria haber problemas ya que podrian entrar dos compradores a la vez, mirar el stock, ver que hay suficiente para él(uno de los dos) y comprarian los dos....por eso hago la consulta del stock dentro de la transaccion.

Gracias Cbas, voy a probarlo, por cierto tienes razon me falta el control del rollback, esto solo era un ejemplo para explicarme mejor, no estaba completo.

Saludos
__________________
En el mundo hay 10 tipos de personas, los que entienden el binario y los k no.
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 21:46.