FoxPro/Visual FoxPro - Problemas con un Form

   
Vista:

Problemas con un Form

Publicado por Victor Perez (278 intervenciones) el 11/08/2010 20:39:19
Estimados amigos,

Manejo la agenda de citas medicas para especialista mediante un formulario sencillo.

Cuando se desea abrir una cita para un dia especifico y ese dia no hay citas programadas el sistema pregunta si DESEA o NO abrir un Esquema de Citas para la fecha indiciada por el usuario.

Si se dice "Si" bueno, abre citas en Blanco con los horarios correspondientes. Si se dice NO simplemente termina la ejecucion del Formulario.

Ahora bien, Si se coloca una fecha para la cual ya hay un esquema de Citas programadas entonces lo muestra en un GRID mediante el siguiente codigo

* Almcitas ya es un Alias Abierta

Select * from Almcitas where fecha=this.value order by fecha into table _citas

Sele _Citas

Thisform.PgfFicha.Page1.Grid1.Recordsource="_Citas"
Thisform.PgfFicha.Page1.Grid1.Column1.enabled=.F.
Thisform.PgfFicha.Page1.Grid1.Column2.enabled=.F.
Thisform.PgfFicha.Page1.Grid1.Column8.txtCodigo.setfocus

Hasta aqui todo bien.

Cuando dos usuarios traten de colocar citas es decir, usar el mismo modulo, el 2do usuario no debe poder acceder al esquema de citas para programar nuevas citas hasta que el 1er usuario no suelte el Formulario.

Para ello, en el Boton que genera las nuevas citas tengo el siguiente comando:

If used("_Citas")
MessageBox("Actualmente está en uso el Modulo de Citas. No puede tener acceso PARA CAMBIAR INFORMACION",48,"<AVISO>")
Return 0
Else
Use _Citas EXCL in 0
Sele _citas
Zap
Endif

Como veran _citas es la TABLA temporal que se abre con la informacion de las citas ya previamente establecidas.

Lo que me pasa es que no me funciona el MessageBox, es decir, a pesar de la sentencia el sistema se va al "ELSE" de este codigo y trata de abrir _citas EXCL cosa que no podra hacer porque está ya en uso por el otro usuario y entonces lista en pantalla una serie de errores (ejecutandose la rutina para atrapar errores que ya tengo establecida).

Alguna sugerencia ?

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con un Form

Publicado por es_binario (757 intervenciones) el 11/08/2010 22:28:23
El problema principal radica en que no usas los lock de registros si has decidido usar las dbf para un programa en red, al menos pon los ejecutables en cada equipo y luego usa los bloqueadores de registros y tablas mientras se usan.

pero bueno, ahi te va una propuesta a tu codigo que te dice si esta en uso, pruebalo.
try && este es el cambio
Use _Citas EXCL in 0
Select _citas
Zap
catch
MessageBox("Actualmente está en uso el Modulo de Citas. No puede tener acceso PARA CAMBIAR INFORMACION",48,"<AVISO>")
endtry

Yo les recomiendo a todos que para sistemas en red como este, usen un motor de bases de datos como mysql sqlserver oracle 10g e incluso firebird.

Razones.
1 En la base de datos crean los usuarios con sus permisos el motor se encarga automaticamente de las transacciones y tambien de las auditorias sobre el uso de las diferenes bases de datos

2 Rapidez y eficiencia, al ser un motor de bases de datos solido, te permite de manera mas rapida acceder a los datos y calculos sobre ellos.

3 les permite acceder a la base de datos desde cualquier lugar incluso por internet con su debida configuracion para tal tarea

Lo unico que tienen que hacer es pensar las aplicaciones con datos que no van a estar en el sistema y solo algunas tablas temporales para evitar concurrencia en datos pesados a travez de la red. es bien facil seguro y le da mas valia a sus programas.

Saludos desde Mexico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con un Form

Publicado por victor perez (278 intervenciones) el 15/08/2010 03:57:42
Gracias por la info.

Bueno, en mi sistema los EXE estàn en cada terminal y se accede solo a un servidor donde esta la DATA.

Sobre motores de BAses de datos, pues desconozco el uso de los mismos. No se si habia comentado que soy medico de profesion y solo estudie unos meses de programacion. He aprendido autodidacta y con la ayuda de gente como ustedes.

Gracias nuevamente,

Victor,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con un Form

Publicado por victor perez (278 intervenciones) el 15/08/2010 04:18:44
es_binario,

Bueno el codigo me funciona bien pero no tengo como desviar al usuario. Es decir, despues de que me sale el mensaje "El modulo de Citas esta en uso.." el usuario debe intentarlo mas tarde. Yo agregue un Return 0 pero me da error.

Si lo dejo como tu lo tienes apareceràn visibles los botones de GRabar o Cancelar y eso generaria un error en el sistema y todo se bloquearà.

Por lo tanto tengo que incluir un codigo que cuando no se pueda acceder al modulo de cita sencillamente el usuario tiene que esperar o salir.

Si me ayudas en esto, te lo agradezco.

Claro que voy a estudiar el asunto de Bloquear el Archivo.

Victor, desde Panama
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar