FoxPro/Visual FoxPro - accesos concurrentes en vfp y sql

   
Vista:

accesos concurrentes en vfp y sql

Publicado por Berni (4 intervenciones) el 02/11/2008 14:32:21
Trato de simplificar mi duda y planteo.
Entorno : vfp9, ms sqlserver2000, varios clientes accediendo a la misma
base de dato de ms sqlserver2000.

prg. de juan, prg. de pedro, ... prog de N en una red local
leyedon y actualizando dato de Stock

Inicialmente en stock hay 50 cocacolas.

Planteo es: en un momento concurrente juan vende 10, pedro vende 5 cocacolas.

ESTOS dos procesos separados en tiempo diferido serian:
Juan lee dato de base cocacola 50 y vende 10 y actualiza base con 40.
Pedro lee dato de base cocacola 40 y vende 5 y actualiza base con 35.
El valor final debe ser 35.

Pero,
SI estos dos procesos occuren en forma concurrente van a ser confusos y caoticos.
Juan lee 50 / Pedro lee 50 / Juan vende 10 y actualiza con 40 / Pedro vende 5 actualiza con 45
El valor final es 45. ===> es INCONSISTENTE !!!

Aplicando : Sqlstringconnect("....") / SQLExec( .."SELECT...."..) / SQLExec( .."UPDATE...."..)
pude esta situacion confuso.

Por favor le pido su ayuda.

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:accesos concurrentes en vfp y sql

Publicado por TITO (311 intervenciones) el 04/11/2008 01:29:54
Berni:
Muy sencillo: Todo el proceso de lectura, calculo y actualizacion debe efectuarse al momento de grabar (milesimas de segundo). Por "calculo" me refiero a la mecanica de generar el saldo. Ahora si este saldo es negativo, la transación se rechaza. Eso es independiente si el usuario le muestra por pantalla el saldo actual antes de hacer la digitacion de venta, puede ir a tomarse un cafe y regresar bastante rato despues, su pantalla estará con el saldo, el cual a estas alturas es irreal pues han ocurrido muchas ventas. Con esto quiero decir que la muestra del saldo actual en la pantalla es irrelevante. en consecuencia, quien presione primero generara un saldo real, es decir CONSISTENTE.
En otras palabras, el error es guardar en memoria el saldo inicial mientras se esta digitando la transaccion (venta) y despues de vuelta de un cafe presionar el INTRO para grabar.
Saludos,
TITO
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar