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

Bloqueos de la base de datos.

Estas en el tema de Bloqueos de la base de datos. en el foro de ASP Clásico en Foros del Web. Buenas Noches, Poco a poco, he ido programando un carrito, solo me queda el enlace con el tpv virtual y las actualizaciones posteriores de la ...
  #1 (permalink)  
Antiguo 20/09/2003, 16:59
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 22 años, 9 meses
Puntos: 2
Bloqueos de la base de datos.

Buenas Noches,

Poco a poco, he ido programando un carrito, solo me queda el enlace con el tpv virtual y las actualizaciones posteriores de la base de datos. Pero ahora se me plantea mi gran duda.

Que tipo de bloqueo debo establecer para bloquear un registro cuando este haya sido seleccionado por un cliente. El problema radica en que se trata de productos únicos. Por lo tanto, se plantean algunas dudas:

1. ¿ En qué momento debo hacer el select con bloqueo del registro , si puede decir así, es decir, cuando un cliente seleccione un producto y confirme el pedido no debe ser posible que ese mismo producto pueda ser confirmado en otro pedido por otro cliente. Esto me hace pensar que el momento es cuando se confirme el pedido . Por un lado, ¿ Qué tipo de bloqueo debo utilizar ?. Y por otro lado, después de abrir el recordset en la página de confirmación del pedido, ¿ es la base de datos la que impide que ese mismo producto pueda ser seleccionado en otra confirmación de pedido?.
2. Se me plantea otra duda, y ya son muchas, si dos clientes han ido seleccionando productos, y por ejemplo, el producto A ha sido seleccionado por ambos, y ambos están en la página de confirmar el pedido. Imaginemos que el cliente 1 confirma el pedido. El cliente 2 cuando intente confirmar el suyo ¿ qué respuesta de la base de datos va a tener ?, se puede informar de alguna manera que el producto que ha seleccionado no está disponible.

Son las preguntas lógicas que me imagino se plantean.

Salu2.
  #2 (permalink)  
Antiguo 20/09/2003, 21:09
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 21 años, 8 meses
Puntos: 0
Me parece que el lockeo con select, no es para ese tipo de transacciones. Es mas bien para operaciones inmediatas y los lockeos de milisegundos. Por ejemplo varias cajas piden el ultimo numero de recibo, se lockea el registro hasta que termina la transaccion para que otra caja no se lo saque.

Supongo que tenes para el producto un estado, es decir lo puedes marcar como vendido o reservado.
Si dos usuarios solicitan el mismo producto, se lo das al que llega primero. Luego le muestras una pagina de confirmacion. Cuando el segundo haga la compra en la pagina de confirmacion, le diras que el producto fue vendido. Por que ya habias cambiado el estado.
Hacer un lockeo es muy ineficiente.

Cuentame que opinas.

Saludos, Daniel.
  #3 (permalink)  
Antiguo 02/10/2003, 12:22
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 22 años, 9 meses
Puntos: 2
Este tema es la primera vez que me lo planteo, he implementado el código utilizando un campo estado pero no queda nada robusto:

A. Tengo la siguiente estructura:

1. Pantalla para ver los productos seleccionados, donde se puede eliminar un producto o seguir buscando.
2. Siguiente pantalla para que el cliente pueda modificar su dirección de envío y comprobar el coste total de los productos seleccionados con los portes e impuestos.
3. Ultima pantalla donde al mostrar los productos les voy modificando el estado y grabando un línea en el histórico de operaciones con productos.

B. Cuando un cliente abandona cerrando la ventana del navegador, el producto se queda en un estado de proceso de pedido que impide que pueda ser comprado por otro cliente, es decir el producto puede ser seleccionado pero no puede ser confirmado. <-------- ProBleMa GraVe.

C. Por otro lado, si se va a navegar a otra página de mi sitio cuando vuelva tampoco va a ser posible que pueda continuar con el proceso de compra si intenta reproducir la selección, y su posterior confirmación, aunque esto podría solucionarse.

Tiene que haber una forma mejor de hacerlo

Salu2.
  #4 (permalink)  
Antiguo 02/10/2003, 13:24
 
Fecha de Ingreso: septiembre-2003
Mensajes: 128
Antigüedad: 21 años, 8 meses
Puntos: 0
Por que no simplificas y en el paso 3, no actualizas el estado del producto, hasta que se confirme.
Ahora si lo confirma y otro se lo saco, le mostras un mensaje que la operacion no se puede hacer por ...... Cuantas veces te puede pasar??? salvo que estes programando para Ebay y tengas 10 transacciones por minuto.

Saludos, Daniel.
  #5 (permalink)  
Antiguo 27/10/2003, 14:10
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 21 años, 6 meses
Puntos: 1
Hola. Dices que has programado una tienda virtual. Bien, seria posible que me mandaras parte del código para que le heche un vistazo? es que soy nuevo en esto y quiero ver como meterle mano.
  #6 (permalink)  
Antiguo 27/10/2003, 17:12
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 22 años, 9 meses
Puntos: 2
Buenas Noches,

Pensaba igual que tú al principio. Estuve viendo partes de código. Sin embargo, no te lo aconsejo, cada tienda se adapta al tipo de negocio que se quiere montar, y puede haber grandes diferencias. Lo que te sugiero es navegar por varias tiendas para hacerte una idea de lo que necesitas:

1. Base de datos donde almacenar los productos (catálogo).
2. Sistema de búsqueda.
3. Sistema de paginación.
4. Página para ver los productos seleccionados.
6. Página para identificación.
5. Página para mostrar el pedido, y permitir modificar la dirección de envío.
6. Página para confirmar el pedido.
7. Contrato de un TPV Virtual.
8. Actualización de base datos tras confirmación del pago.

Para todo esto necesitas:

a. Elegir la base de datos adecuada según las necesidades.
b. Conectarte mediente ASP a la base de datos.
c. Crear RECORDSET.
d. Paginar resultados.
e. Manejar el Objeto Dictionary.
f. Manejo de las variables de session.
g. Crear, modificar y eliminar registros.

Empieza por algo sencillo, luego le vas dando forma.

Salu2.

Salu2.

Última edición por evoarte; 28/10/2003 a las 16:58
  #7 (permalink)  
Antiguo 28/10/2003, 05:59
 
Fecha de Ingreso: mayo-2003
Mensajes: 866
Antigüedad: 22 años
Puntos: 0
porque no creas un campo en la base de datos que se llame unidades tipo numerico y introduces por defecto el valor 1 y cuando un producto se compre se actualice ese campo y se ponga el valor 0.
Cuando muestres los productos de tu tienda muestra solo los que tengan solo el valor 1.
Es solo una idea espero que te sirva
  #8 (permalink)  
Antiguo 28/10/2003, 11:52
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 22 años, 9 meses
Puntos: 2
Buenas Tardes,

Así es como lo he montado al final. Utilizo un campo númerico para identificar en cada momento el estado del producto.

Salu2.
  #9 (permalink)  
Antiguo 28/10/2003, 13:13
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 21 años, 6 meses
Puntos: 1
Ya evoarte, ya se que cada portal es diferente, pero desde que soy informatico me he ido creciendo modificando codigo ya hecho. Y es por eso que me gustaria que me pasases tu código, pq de ptv virtual no he visto nada en mi vida. La idea es que para que los usuarios puedan entrar en mi portal deban de pagar una cierta cantidad de euros. Mandame tu código e intentaré modificarlo para esta causa.

Si eres tan amable, dame tu direccion de messenger, ok?
  #10 (permalink)  
Antiguo 28/10/2003, 16:49
 
Fecha de Ingreso: julio-2002
Mensajes: 813
Antigüedad: 22 años, 9 meses
Puntos: 2
Mejor documentado de lo que tengo el mío:

http://www.desarrolloweb.com/buscado...n=on&faq_on=on

Aquí hay gente que sabe mucho, pero intentaré ayudarte si puedo.

Salu2.

Última edición por evoarte; 28/10/2003 a las 17:03
  #11 (permalink)  
Antiguo 28/10/2003, 17:19
 
Fecha de Ingreso: octubre-2003
Mensajes: 280
Antigüedad: 21 años, 6 meses
Puntos: 1
Jeje, soy yo otra vez. Mira, perdona pero sigo sin entender en realidad como se construye el codigo. Si fueras tan amable de enviarme en un zip el codigo de tu carrito te estaria muy agradecido.

Una vez que comprenda el funcionamiento del carrito, supongo que ya seré capaz de realizar el resto del trabajo.
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 11:11.