FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Eso depende de lo que tenga que hacer el bloque try except, desde un simple mensaje genérico y cancelación del proceso hasta detectar el tipo de mensaje y hacer 'cosas' en función del mensaje, etc...
|
#2
|
|||
|
|||
Mi problema básicamente es aparentemente sencillo, y es que el ordenador se queda pensando indefinidamente sin dar ningún tipo de error, se queda como bloqueado aparece el icono del tiempo en medio la pantalla como si estuviera haciendo algo pero ahí se queda indefinidamente sin dar error de ningún tipo de error y pensando.
Mi arquitectura de la base de datos es sencilla, tengo una base de datos creada en IbExpert con Firebird 2,5 la cual se puede llamar Bdatos1, con 20 campos. En mi programa que llamo Aplicacion1, en un Formulario conecto mediante un TIBDabase, junto con el TIBTrasaccion ambos los asocio con DefaultDadabase y DefaultTranssacción. A su vez conecto las distintas tablas del TibDatabase y todo es perfecto, trabajo en el PC1 sin problemas. Ahora en el PC2, copio el programa que he hecho "Aplicacion1', y conecto mediante la base de datos mediante un Archivo.INI la ruta donde está la Base de Datos 'Bdatos1', y se conecta perfectamente, puedo ver cualquier registro, imprimir cualquier listado, sin ningún problema, eso tanto en el PC1 como en el PC2, podemos ver cualquier listado yo tengo Rave Reports, o cualquier consulta. El problema viene, cuando tanto en el PC1, como en el PC2, después de hacer cualquier consulta, intentamos modificar o insertar cualquier registro en esa Base de Datos que está compartida en ese momento, entonces cuando pulso el botón de Grabar, tanto sea en el PC1 como en el PC2, se pone el icono del tiempo tanto vueltas y vueltas indefinidamente sin poder continuar, teniendo que salir del programa y volver hacer la operación. Por lo que he podido leer es un problema en el TIbTransacción que hay que poner una excepción para evitarlo por eso esa era mi pregunta o ver dónde podría encontrar una explicación. Me haríais un mundo, gracias. |
#3
|
||||
|
||||
¿Qué propiedades has puesto en el componente IBTransaction?
¿Qué quieres decir con que la BD está compartida? |
#4
|
|||
|
|||
Como dice Nuño Martinez anteriormente, pon los insert y los update dentro de transacciones y dentro de un bloque TRY EXCEPT, TRY FINALLY y te evitarás muchos problemas.
Lo que sí hay que hacer dentro del bloque EXCEPT es cerrar la transacción (ROLLBACK) |
#5
|
|||
|
|||
Casimiro, la Transacción está con las propiedades por defecto, no se ha cambiado ninguna propiedad.
la Base de Datos compartida, es simplemente que está en el PC1, y accedo a ella desde el PC2, mediante la red
Con esto accedo a la base datos, inserto y modifico, desde el PC2, pero cuando abro la aplicación en el PC1 también y están los dos PC con la misma aplicación , ya el PC2 se queda eternamente pensando sin dar ningún error, se queda bloqueado cuando intento modificar o insertar un registro, pero no cuando quiero leer, hacer un listado en ese caso funciona bien aun estando los dos PC con la misma aplicación abierta, la lectura se hace bien pero no el insertar o modificar. |
#6
|
||||
|
||||
Pon estos parámetros al componente Transaction que uses:
Código:
write nowait rec_version read_commited |
#7
|
|||
|
|||
Hola de nuevo, he puesto en la propiedd Params del IbTranssation estas líneas. pero me el siguiente error:
Por otro lado veo que otra solucion es usar un Try ... Except, Try ... Finally, pero no tengo idea de como usarlo y donde ponerlo si en un evento de IbTranssation, u otro lugar, si pudierais decirmo donde encontrar un ejemplo o poner un ejemplo ya que esto debe ser algo genérico valido para todos. Yo para recordarlo uso Delphi 2.010 y Firebird 2,5, creo la IbDatabase y IbTransattion de las cuales todos los parámetros configurados son los que vienen por defecto, hasta base de datos las asocio a 15 o 20 tablas, las cuales no las uso ni las abro a la vez lógicamente si no según necesite, y en las cuales inserto, modifico y borro registros sin problemas todo perfecto, el problema viene en dos casos: uno: cuando por error abro la misma aplicación dos veces en el mismo pc, entonces se bloquea quedándose pensando hasta que lo cierro mediante boton de derecho del ratón en la parte de abajo de la pantalla, le pincho en cerrar aplicación esto lo hace windows, ya que yo en la "X" del formulario no me deja. Dos: cuando yo estoy trabajando en el Pc1 en la Base de Datos 1, y se conecta desde Pc2 en la misma Base de Datos 1, ocurre lo mismo, puedo consultar listados en el Rave Reports que uso bien, pero en el momento que uno de los dos Pc's intenta grabar algo se bloquea y ocurre lo mismo que en el paso uno. Sólo es ese problema, el que se bloquee cuando dos ordenadores acceden a la mismo base de datos, por lo que debe ser ser algo genérico, común a todos, no de que haya programado algo mal, pero no consigo dar con la tecla, si me podéis ayudar, gracias. |
#8
|
||||
|
||||
La verdad es que no se entiende nada de lo que comentas
No está claro lo que estás haciendo, ni cómo lo estás haciendo, ni qué código estás usado, ni cómo lo estás usando... es casi imposible poder ayudarte así. Trata de crear un proyecto de ejemplo, lo más simple que puedas, y a partir de ahí ir avanzando a cada paso. O si el proyecto que tienes no es muy grande, trata de subirlo para que le podamos echar un vistazo. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Firebird remoto - Modificar registros | Gregorio Cíber | Conexión con bases de datos | 8 | 23-03-2021 22:32:04 |
modificar variios registros con dataset | pmtzg | Conexión con bases de datos | 7 | 11-02-2012 12:05:02 |
Modificar registros desde DBgrid | quakerman | Conexión con bases de datos | 7 | 09-11-2011 03:40:03 |
modificar registros | yossi | SQL | 6 | 11-06-2010 03:43:58 |
modificar registros query | Buelos | Firebird e Interbase | 8 | 02-03-2008 00:52:00 |
|