FoxPro/Visual FoxPro - Error en Fomr y Rlock()

   
Vista:

Error en Fomr y Rlock()

Publicado por Pablo (Argentina) (433 intervenciones) el 01/06/2010 14:39:30
Hola Amigos del foro, tengo una aplicacion que estoy intentando de a poco hacerla multiusuario, pero tengo algunos pocos por suerte problemas, y este es uno de ellos y quisiera que me digan como lo puedo solucion, mi aplicacion esta en una maquina y por el entorno de red otros usuarios tambien tienen acceso y la pueden ejecutar.
El tema es asi, si yo ejecuto el form remito y lo dejo abierto y otro usuario por la red tambien va y lo ejecuta le da el siguiente error:

Error al carga el archivo - numero de registro 10. frmremitos <o uno de sus miembros>
Cargando el formulario o el entorno de datos. : Denegado c:|datos. a temporal.dbf

la tabla temporal.dbf en el entorno de datos la tengo en modo exclusive = .T. y esto es porque despues que yo acepto el remito a esa tabla le hago un ZAP para dejarla nuevamente vacia.

¿Como lo puedo solucionar a esto?

La otra consulta seria sobre el tema RLOCK() para trabajar con las tablas y que si uno o mas usuarios estan haciendo una venta utilizando el mismo form o como en el caso de arriba haciendo un remito al momento de GRABAR el mismo si hay otro usuario cargando o grabando datos le ponga un messegebox que le diga que espere a que termine el otro usuario o no se como seria

¿Si alquien me puede decir como es o algun ejemplo cortito?

Muchas gracias

Pablo - Argentina
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:Error en Fomr y Rlock()

Publicado por alexcoinc (449 intervenciones) el 01/06/2010 15:01:55
El primer mensaje es porque la tabla la usan todos y no puede ser exclusiva
a sabiendas que el zap solo se puede hacer con exclusiovidad..

ENTONCES:

Lo que te recomiendo es que las tablas que sean temporales (es decir de uso de cada usuario) las copies en una dirección o carpeta especifica del disco duro de cada cliente; asi cuando cada cliente la visite nunca tendrá problema y asi podras dar ZAP (funcionara pues estará en la maquina de cada pesona no en el servidor)....OJO: ESO SI ES UNA TABLA TEMPÒRAL ...POR DECIR DONDE SE EFECTUAN CALCULOS SEGUN QUIEN LOS PIDA...
Ahora: Esto que te recomiendo no se puede hacer por ejemplo en tablas maestras...es decir en tablas que todo mundo necesita que esten actualizadas en todo instante: Ejemplo...tabla de clientes, proveedores, facturas...etc.

Ahora en tu segunda inquietud:

El rlock en VFP en automático..checa la confuguración del VFP cuando lo instalas y lo configuras.

Ahora siempre debe configurarse en herramientas / opciones / datos
Quita el "chulo" de abrir en modo exclusivo....
esto para que todas las tablas siempre se abran compartidas

Finalmente: Los controles o validaciones para grabar en la tabla si dependen de tu programación.

alexcoinc
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:Error en Fomr y Rlock()

Publicado por ACM (162 intervenciones) el 01/06/2010 16:12:41
Hola Pablo

Trabaja con cursor, en vez de tablas temporales, en realidad el cursor es una tabla temporal en memoria. la ventaja que tiene es que trabaja a nivel de pc es decir si en el pc 1 habres el cursor MICURSOR. en el pc 2 trazaba de forma independiente no tiene conflicto aun que se habra de 10 pc en cada pc trabaja de forma independiente.

y en cuanto el rlock nos permite bloquear a nivel de registro

ejemplo

XRECO=STR(RECNO(),12)
aa=!RLOCK(XRECO,"COMPRAS")
IF AA
MSJ0="Zeta esta siendo utilizada por otro"
msj1="Usuario intente nuevamente "
MESSAGEBOX(msj0+CHR(13)+msj1,0+64,"Advertencia")
swsalir=0
UNLOCK
thisform.release
RETURN
ENDIF

Espero te sirva

Acm
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:Error en Fomr y Rlock()

Publicado por Pablo (Argentina (433 intervenciones) el 01/06/2010 20:01:13
Hola Amigos, Bueno gracias por su respuesta, ahora bien, me quedan algunas dudas, Debo o NO usar el Rlock() para bloquear tablas en un sistema multiusuario en el cual al form de ventas acceden de mas de una maquina y pueden estar facturando el mismo producto, digo esto porque sino voy a tener problemas con el stock si cuando grabo en la tablas dependiendo de la maquina me descuenta 2 veces el mismo articulo, por eso mi pregunta era de si uso y como era el tema de Rlock(), para decirle al otro usuario, que hay otro usuario grabando y que espere!. o como me dice Alexonic, con solo destildar en las opciones\datos le saco el modo exclusivo y ya el rlock() trabaja automaticamente en VFP. ¿como es el tema? si me ayudan.

La otra pregunta que me respondio ACM me parece barbaro y seria la ideal pero como lo haria, el proposito mio de crear una tabla para uso temporal fue porque en esa tabla yo voy agregando los renglones del remito y cuando lo doy por cerrado le hago un ZAP y listo por eso el modo exclusivo.
El tema de usar un Cursor seria genial pero como lo reemplazo en el form por la tabla.tengo que hacer un CREATE CURSOR o como seria para poner un cursor en el form el cual acepte datos en la medida que le voy agregando renglones al mismo, ¿me explico?,

Muchas Gracias

Pablo - Argentina
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:Error en Fomr y Rlock()

Publicado por ACM (162 intervenciones) el 02/06/2010 15:24:02
Hola pablo

En cuanto al RLOCK por lo menos yo lo ocupo por ejemplo si un usuario va a ingresar a una factura ejemplo 00001 bloqueo ese registro para que nadie mas entre a esa factura hasta soltarla, y lo otro como dices cuando descuentas saldo igual bloqueo ese registro cosa de manejar de buena forma los saldo y evitar que se venda mas de lo disponible.

Lo del Cursor yo en el init o creo un metodo donde defino el cursor ejemplo

creae cursor c_cursor
(campo1 c(3),campo2 c(15),campo3 c(10),campo4 d(8),campo5 n(12,2),campo6 l(1))

lo puedes asignar a un grid en el recordsource

La ventaja es que es independiente por pc y se habre de modo exclusive asi que le puedes hacer zap. es ideal para trabajar en formularios de facturas.

si tienes mas dudas sobre cursor dame tu email y te mando un pequeño ejemplo practico. de como trabajarlo y lo poderoso que es trabajar de esta forma.

Espero te sirva

Acm.
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:Error en Fomr y Rlock()

Publicado por Pablo (Argentina) (433 intervenciones) el 02/06/2010 16:48:01
Hola ACM, bueno muhas gracias por tu ayuda, lo voy a probar, igual si me mandas tu ejemplo como para ver como es, o si al menos lo mio lo estoy haciendo bien.

mi correo: termita01@yahoo.com

Muchas Gracias

Pablo - Argentina
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:Error en Fomr y Rlock() para ACM

Publicado por rudy (3 intervenciones) el 02/06/2010 17:20:47
Buen dia Acm

me podrias compartir tu ejemplo te lo agradecere mucho

abenitez0004@gmail.com
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:Error en Fomr y Rlock()

Publicado por kong (681 intervenciones) el 02/06/2010 22:41:16
con relacion a hacer un ZAP, creo que no será necesario, porque podrias sobreponer el cursor, o crear nuevamente el cursor. Los datos contenidos en aquel cursor seran todos eliminados.
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