Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Bloqueo registro... (https://www.clubdelphi.com/foros/showthread.php?t=66607)

Jose Roman 03-03-2010 13:24:28

Bloqueo registro...
 
Hola a todos....
Tengo Delphi 2007, Zeos y Firebird 2.1.
Me gustaria saber si hay forma de bloquear un registro para que un segundo usuario no pueda modificarlo el mientras que el primero lo este haciendo y lance un mensaje "No se puede modificar este registro debido a que otro usuario se encuentra trabajando con el".

Gracias....

guillotmarc 03-03-2010 17:43:30

Hola.

Esto se llama bloqueos pesimistas y está disponible desde Firebird 1.5, se consigue añadiendo cláusula WITH LOCK a la consulta SELECT con la que obitenes los datos a bloquear.

http://www.firebirdsql.org/refdocs/l...-withlock.html

http://translate.google.es/translate...ml&sl=en&tl=es (traducción automática, míralo solo a título orientativo)

Saludos.

Neftali [Germán.Estévez] 04-03-2010 12:25:25

Cita:

Empezado por Jose Roman (Mensaje 355408)
..."No se puede modificar este registro debido a que otro usuario se encuentra trabajando con el".

Este tipo de bloqueos son muy restrictivos. ¿Seguro que deas utilizarlos?
Con un número grande de usuarios te puede dar muchos problemas.

Sólo piensa en el que abre la pantalla y se va al servicio o a tomar un café... :(

guillotmarc 04-03-2010 13:06:33

Cita:

Empezado por Neftali (Mensaje 355580)
Este tipo de bloqueos son muy restrictivos. ¿Seguro que deas utilizarlos?
Con un número grande de usuarios te puede dar muchos problemas.

Sólo piensa en el que abre la pantalla y se va al servicio o a tomar un café... :(

Pienso exactamente igual, no aconsejo en absoluto estos bloqueos.

anubis 10-09-2014 22:15:12

Perdonad que recupere este post antiguo.

Estaba buscando el tema de bloqueos que decis que no son recomendables.

La cuestion, tal y como la hace el usuario que pregunta, es si uno esta trabajando con un registro y otra persona accede a el ahi se generaria un problema, en estos casos, sino se debe bloquear, como se podria hacer para que no afecte al registro afectado por las dos partes.

gracias

ecfisa 10-09-2014 22:40:53

Hola anubis
Cita:

Empezado por anubis (Mensaje 481127)
...
La cuestion, tal y como la hace el usuario que pregunta, es si uno esta trabajando con un registro y otra persona accede a el ahi se generaria un problema, en estos casos, sino se debe bloquear, como se podria hacer para que no afecte al registro afectado por las dos partes.

Creo que está todo dicho con el ejemplo del empleado que se va a tomar un cafe...

¿ Que peor situación que tener operaciones paradas por culpa de un #@$%&! que salió media hora por un café sin antes confirmar lo que estaba haciendo ?

En lo particular me valgo del uso de EVENTS para avisar si el estado del objeto sobre el que esta trabajando un usuario se ha modificado, de ser así tendrá que retomar la tarea. Pero ese tipo de situaciones, estadísticamente se presenta muy rara vez

Saludos :)

anubis 10-09-2014 22:47:44

Gracias por responder,

La verdad, estoy acabando un programa para un supermercado pequeñito(para un amigo), donde tienen un puesto de venta donde nada mas venden y otro, el administrador, donde va dando de alta las compras, cambio de precios etc.

Es en este apartado donde, si se estan vendiendo productos en ese momento que alteran las cantidades mientras se van vendiendo y por el otro lado el administrador va dando de alta las compras de esos productos ahi puede haber un pequeño conflicto porque es un moviendo rapido por parte del vendedor.

El sistema de events ya lo probe, pero en conexiones via internet por ssh sin compresion, y si provoca que tarde mas en consultar los datos que sino los pongo, pero tendre que investigarlo mejor;).

uso lazarus y firebird en windows a ver si hay opcion que instale linux y ya veo ;).

Casimiro Notevi 11-09-2014 01:06:33

No tienes que bloquear nada. Lee bien lo anterior o el documento sobre transacciones.


La franja horaria es GMT +2. Ahora son las 02:23:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi