Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2003
DavidR DavidR is offline
Registrado
 
Registrado: oct 2003
Posts: 9
Poder: 0
DavidR Va por buen camino
Detectar un registro bloqueado

Estimados Amigos:

Ante todo muchas gracias por la rápida respuesta que me dieron hace muy poco.

Ahora me plante en otro tema. Les recuerdo que trabajo en FireBird 1.5 y el C++Builder haciendo la conexión con ADO.


Tengo que realizar bloqueos de registros lo cual hago con moderado éxito usando el truco del UPDATE

Me ocurren dos problemas:
1- Logro hacer el UPDATE únicamente con un procedimiento almacenado cuando intento hacerlo desde un ADOQuery o un ADOCommand me da error. Esto es está bien, es normal? Desconozco si se puede invocar un UPDATE desde otro lado u otra forma.
2- Una vez que realizo el bloqueo el sistema se coloca en espera hasta que se libera el registro. Lo que necesito hacer es detectar previamente si ese registro está bloqueado y mostrar un cartel para que el usuario opte esperar o cancelar.

Desde ya agradezco su valiosísima ayuda
Afectuosos Saludos
David
Responder Con Cita
  #2  
Antiguo 08-12-2003
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Hasta donde se intebase no bloquea registros solo se editan versiones perso si lo haces pesimista mente se puede

esta esla forma de bloquearlos
SELECT ... FROM <algunatabla>
[WHERE ...]
[FOR UPDATE [OF ...]]
WITH LOCK;

y asi ves los bloqueados

i) (simple)
SELECT * FROM DOCUMENT WHERE ID=? WITH LOCK
ii) (varios registros, procesados uno a uno por un cursor DSQL)
SELECT * FROM DOCUMENT WHERE PARENT_ID=? FOR UPDATE WITH LOCK

pero creo que tu problema no es ese si te me explicas mejor te puedo ayudar.

Dime que error te sale.

si hacews commit o algo no se que mas decirte.

ok

espero respuesta a ver que se puede hacer

Lo referente al los bloqueos lo puedes encontrar en
http://www.ibphoenix.com/downloads/F...tesSpanish.pdf

Última edición por rastafarey fecha: 08-12-2003 a las 18:32:49.
Responder Con Cita
  #3  
Antiguo 18-12-2003
DavidR DavidR is offline
Registrado
 
Registrado: oct 2003
Posts: 9
Poder: 0
DavidR Va por buen camino
Estimado rastafarey

Gracias por responder. He tenidos problemas con internet y no pude contestar antes, mil disculpas.

El principal problema me sucede cuando después de ejecutar

SELECT * FROM DOCUMENT WHERE PARENT_ID=? FOR UPDATE WITH LOCK
(donde genero el bloqueo)

Luego cuando desde otra terminal quiero acceder a los registros bloqueados se detiene la aplicación y no continua hasta que los desbloqueo (finalizo la transferencia).

- Esto estaría bien para operaciones automatizadas pues la demora es necesaria y en todo caso imperceptible.
- Pero no es apropiada cuando quiero hacer una modificación manual como por ejemplo un ABM en donde el usuario quiere modificar datos de un cliente. Pues cuando oprime el botón modificar (y justo por esas cosas de la vida el registro esta bloqueado) se detiene la aplicación y el usuario no entiende nada y me reinicia la PC.

Para seleccionar un cliente uso
SELECT * FROM DOCUMENT WHERE PARENT_ID=?

Lo que necesitaría es que previamente pueda detectar que el registro que está siendo usado por otro usuario (antes que se paralice la aplicación).


Desde ya agradezco tu amable disposición
Muchísimas gracias
Y felices fiestas si no me pongo en contacto antes contigo.
Atte. David
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:29:44.


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
Copyright 1996-2007 Club Delphi