Se cuelga mi aplicación

He creado mi aplicación, le he puesto en red, pero al tratar de ingresar un registro en una tabla o leer, solamente la aplicación de una maquina cliente trabaja normalmente, las demás maquinas la aplicación se cuelga... Solamente me deja trabajar en una maquina. Estoy recién aprendiendo este lenguaje... Favor ayuda...

1 respuesta

Respuesta
1
Si estas trabajando en base de datos sql server, mysql, oracle no hay problema, creo el error es cuando dos o más usuarios acceden los mismo datos a la vez, es decir ejemplo:
Usuario1 --> esta trabajando en la PC1 y esta utilizando la ventana de cliente (Grabando un nuevo cliente).
Usuario2 -->esta trabajando en la PC2 y trata de abrir la pantalla cliente para realizar una consulta.
Entonces el sistema de que PC no responderá, obvio que de la PC2, ¿por qué?.
* Si el usuario1 esta grabando un nuevo cliente y en el codigo de la ventana cliente para grabar a la base de datos no has especificado la palabra clave COMMIT  esta hara un bloqueo a toda las conexiones entrantes (es por eso que el usuario2 no pudo acceder y su sistema se colgo). Entonce para solucionar esto deberias poner asi:
if dw_1.update()<> -1 then //esta linea solo actualiza el datawindow
    commit Using sqlca; //esta linea grabar los datos a la DB y se desbloquea
else
    rollback Using sqlca; //esta linea deshace la grabacion si ocurre un error
end if
* Asi haras para grabar, eliminar o editar los datos de un registro, tienes que usar la palabra clave COMMIT.
* Ahora si estas utilizando la base de datos de powerbuilder, parece que la conexion via red tiene algunas problemas y he leido que solo funciona para una maquina.
Conclusión:
La base de datos sql server, oracle y otros utilizan un bloqueo de concurrencia de forma automática, esto para que cuando dos o más usuarios estén usando los mismos datos el primero bloquee para no interrumpir las modificaciones que haya hecho, pero estos bloqueos no duran mucho de una vez que hallamos guardado los datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas