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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2010
Ricardojosep Ricardojosep is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sgo del estero (Argentina)
Posts: 75
Poder: 21
Ricardojosep Va por buen camino
Gracias guillotemarc, ahora voy a poner los errores en pantalla para ver que puede estar pasando, cualquier cosa vuelvo con el hilo.

Muchas gracias a todos!!

Saludos!!
__________________
La amistad es la union de dos almas para formar una sola.
Responder Con Cita
  #2  
Antiguo 27-01-2010
Ricardojosep Ricardojosep is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sgo del estero (Argentina)
Posts: 75
Poder: 21
Ricardojosep Va por buen camino
Hola de nuevo, sigo con el problema, pero ahora hice lo que me dijo guillotemarc y grabe los errores en un archivo de texto... el primer error que me aparece es: -901 Lock conflict on no wait transaction. Este error se produce en un Procedimiento Almacenado, que es el que se encarga de actualizar el stock. El problema esta que cuando los operadores cargan una compra, para incrementar el stock y después de un corto tiempo, mas o menos 30 segundo, se hace una venta y produce este error. Mi gran pregunta es: ¿Porque se produce un bloqueo si la primera transacción (compra) finaliza primero, y después se inicia la otra...?

En fin, de todas maneras, muchas gracias por la ayuda que me dieron!!

Saludos!!!

Ricardo
__________________
La amistad es la union de dos almas para formar una sola.
Responder Con Cita
  #3  
Antiguo 27-01-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Habría que ver ese código, cuando haces commit y eso... pero en principio puedes cambiar las transacciones a "no wait".

Yo siempre lo pongo así:

Código:
write
nowait
rec_version
read_committed
Responder Con Cita
  #4  
Antiguo 27-01-2010
Ricardojosep Ricardojosep is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sgo del estero (Argentina)
Posts: 75
Poder: 21
Ricardojosep Va por buen camino
Hola Casimiro, voy a probar de cambiar la transacción a no wait, pero a mi me resulta muy extraño... porque se supone que la transacción finaliza y despues de un tiempo comienza la otra... y lo peor de todo es que le dice al operador que todo esta bien, y no le muestra el error, aclaro, yo guardo el mensaje de error en un archivo de texto, pero muestro un error personalizado en pantalla, y ese error personalizado no se ve...

Muchas gracias casimiro!!!

Saludos!!
__________________
La amistad es la union de dos almas para formar una sola.
Responder Con Cita
  #5  
Antiguo 28-01-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

El mensaje de error es bastante claro, desde una transacción se intenta modificar un registro bloqueado por una modificación no confirmada en otra transacción aún activa.

Es un papelón, pero te toca revisar todo tu código, puesto que alguna transacción queda abierta. Recuerda que el conflicto no tiene porqué estar solo la tabla de stocks (aunque parece lo más lógico), puede ser cualquier tabla que intenten modificar ambas transacciones (como la de Logs, ...).

NOTA: Las transacciones tienen que ser lo más cortas posibles, abres la transacción, haces la modificación y la cierras enseguida. Por esto me gusta utilizar ClientDatasets, nunca tengo transacciones abiertas en mi programas, ni siquiera para mostrar datos en pantalla : abro la transacción, cargo el ClientDataset y cierro la transacción.

Saludos.
Responder Con Cita
  #6  
Antiguo 28-01-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Por cierto, puedes probar una chapuza para salir del paso mientras lo arreglas bien.

Cambia el nivel de aislamiento de la transacción a READ UNCOMMITED (no estoy seguro de si Firebird acepta este nivel de aislamiento, pero como forma parte del estándar, puedes probar).

En este nivel de aislamiento no hay bloqueos, aunque una transacción no haya terminado sus cambios ya son visibles desde las otras transacciones. En cierta manera es como trabajar sin transacciones, lo cual evidentemente conlleva sus propios problemas.

Yo solo lo utilizaría como un parche temporal.

Última edición por guillotmarc fecha: 28-01-2010 a las 14:56:39.
Responder Con Cita
  #7  
Antiguo 28-01-2010
Ricardojosep Ricardojosep is offline
Miembro
 
Registrado: sep 2003
Ubicación: Sgo del estero (Argentina)
Posts: 75
Poder: 21
Ricardojosep Va por buen camino
Hola guillotmarc, Estuve viendo todo el procedimiento de grabacion... realmente es muy simple y esta asegurado el commit para el cierre de la transacción. En fin, voy a seguir viendo cual puede ser el error, y voy a parchar el sistema con tus sugerencias!

Ahh otra cosa, la actualizacion del stock lo hago con un procedimiento almacenado, crees que si lo hago desde el trigger de grabacion de compras me crearia algun inconveniente mas?

Gracias por todo!

Saludos!!

Ricardo.
__________________
La amistad es la union de dos almas para formar una sola.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema con master-detail en Access cartmanrules Conexión con bases de datos 0 24-02-2009 19:01:41
Problema con Master/Detail en ReportBuilder agustibaldo Impresión 1 27-09-2007 20:03:30
Incrementar el id del detalle en master/detail... Arturo MySQL 2 07-07-2006 19:24:09
Problema con Edicion En Master-Detail Paradiso Conexión con bases de datos 0 26-01-2005 06:28:28
Problema con ¿master-detail? fortran Tablas planas 3 10-12-2003 09:17:48


La franja horaria es GMT +2. Ahora son las 14:38:34.


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