Programación General > Visual FoxPro

 ACTUALIZAR UNA TABLA COMPARTIDA EN RED

(1/2) > >>

peta:
Hola a todos, soy nuevo en visual foxpro 9, quiero consultarlos. Tengo un form de facturacion y en el entorno de datos una tabla talaonarios.dbf donde guardo en el campo numero el ultimo nro de comprobante emitido. El problema es cuando 2 usuarios ingresan el mismo formulario el primero graba bien el valor de un text box (contiene el ultimo nº de factura generado) en la tabla talonarios.dbf, pero cuando el 2º usuario quiero grabar, aunque el valor del textbox es el correcto, no graba el valor en talonarios.dbf. Les detallo el codigo que uso para grabar:
select talonarios
thisform.txtnumero.value = talonarios.numero + 1
if rlock()
   replace talonarios.numero with thisform.txtnumero.value
   unlock
endif
Agradeceria me puedan brindar ayuda y gracias.

arielb:
Hola, revisa en la ayuda Set Reprocess To

xodrf:
Ten en cuenta lo siguiente que debes obtener el nro de factura o talonario unicamente y/o exactamente despues de que haya sido presionada el boton grabar el comprobante y no al cargar tu formulario, yo te cuento que en mi formulario de facturacion yo pido al usuario confirmacion del nro generado automaticamente y funciona en red. Te describo como lo hice:
1) buscan el cliente
2) luego van buscando los productos, cantidad, precio etc.
3) Pulsan el boton grabar o cancelan con ESCAPE
*SI CANCELARON NO REGISTRA NADA SALGO!.
*SI GRABARON tomo el archivo de cabacera bloqueo la escritura FLOCK() y envio al final y obtengo el ultimo nro de factura sumado +1 (o sea el siguiente posible nro) muestro al usuario y este cambia y/o acepta si cambia el nro busco en la tabla para ver si no esta duplicado si esta le pido otra vez al usuario que lo cambie, mientras esto sucede los otros usuarios que quieran grabar una factura deben esperar, una vez ingresado un nro valido este se graba y recien alli desbloqueo el fichero de cabecera liberando a los demas usuarios la grabacion, y despues se hacen las demas tareas de registro y descarga de stock etc.
No se si es lo correcto pero me funciona a mi!!!

Obs: el siguiente nro de factura debe es incierto hasta que se busque y se intente grabar, de lo contrario estaria saltando y/o duplicando nros de facturas, segun mi experiencia.

malamigos:
mira el consejo que te han dado no es el mas atinado, el problema es el siguiente, para ponerle un numero hace un conteo de registros de la tabla y a este numero le suma 1, pregunta que pasa si su tabla se daña y tiene que haer recuperacion de datos y se pierde uno o dos registros para no ser tan dramaticos, con ese sistema se te crea un enorme problema, porque no vas a poder grabar tu nuevo registro ya que el motor de visual te va a anunciar que se esta dupicando el numero de registro del campo que contiene el numero de registro, y eso porque, simplemente porque se borro un registro y al sumar los numeros de registro de la tabla para poner el numero de recibo que le corresponde te volvio una cantidad que ya la utilizastes en el anterior registro. lo que tienes que hacer es crear una tabla en donde se almacene los numeros correlativos de tus facturas o recibos, cada vez que vas a grabar sacas de esta tabla el numero que le va asignar a esta factura y luego lo cierras sumandole un 1, para el siguente mivimiento, me dejo enterder verdad, t al final de todas las instrucciones que das en el grabado, le pones thisform.refresh para que se visualice el cambio efectiado en la tabla.
suerte y cualquir consulta a malamigo60@hotmail.com

xodrf:
Bueno he revisado una y mil veces y no entiendo de que hablan cuando dicen que sumo +1 al nro de registro ... bueno supongo que es algo muy complejo para mi corto conocimiento yo almaceno el nro de comprobante en un campo char y lo convierto a val para poder calcular el sigte. nro de comprobante y lo vuelvo a pasar a char para almacenarlo a mi me funciona, lo que pasa es que quizas no me exprese bien, pero no importa no pienso perder mas mi tiempo tratando de ayudar :bad:

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa