Programación General > Visual FoxPro
ACTUALIZAR UNA TABLA COMPARTIDA EN RED
fabitojara:
es mas o menos asi la cosa segun mi parecer
set reprocess to automatic && bloquea el archivo completo hasta que se graba el ultimo nº de factura
flock("tabla_numfac") && tabla_numfac es archivo que guarda ult. num de factura
select tabla_numfac && si la tabla esta en el entorno de datos
LnNumfactura = tabla_numfac.numfactura + 1
replace tabla_numfac.numfactura with LnNumfactura
unlock in tabla_numfac
*** espero te sirva
xodrf:
Bueno para todos aquellos que esten interesados en aprender y no en criticar algo que nisiquiera comprenden les voy a explicar como yo resolvi esto: tenemos una tabla cabecera de factura y otra detalles y otras relacionadas, uno no puede obtener el nro de comprobante en el momento de cargar un formulario y/o antes de apretar el boton grabar, porque digo esto pues si el usuario1 carga el formulario y obtiene el nro 10 y simultanemente el usuario2 obtendria el nro 11 (suponiendo que se autoincremente correctamente los nros) ¿y que pasa si el usuario1 no desea grabar su factura y el usuario2 si?, pues simple te saltaria la numeracion de la factura 9 saltaria al 11 (en el caso de que la numeracion sea automatica estarias ante un error de numeracion).
Como yo imprimo la factura en un comprobante contable este debe concidir con el nro preimpreso, por tanto yo lo hice asi
DFAC &&DETALLE DE FACTURA NO TIENE IMPORTANCIA PARA ESTA EXPLICACION
CFAC &&CABECERA DE FACTURA
NCOMPR CODCLI FECHA ... OTROS CAMPOS
000001 101030101001 30/12/2008
000002 101030101002 30/12/2008
....
000100 101030101025 30/12/2008
Yo obtengo el nro asi: bloqueando el fichero CFAC con FLOCK() y enviando el puntero al final GO BOTTOM entonces capturo el ultimo nro y lo sumo 1 en este caso es mediante _ncompr=STR( VAL(NCOMPR)+1, 6, 0 ) y este numero yo se que es seguro porque al hacer FLOCK ningun otro proceso y/o usuario puede modificar ni agregar registros a CFAC en cambio si lo hago con RLOCK() este no impide que se sigan agregando registros/numeros al final ya que este solo impide que escribas en el registro bloqueado, una vez obtenido el sgte nro posible lo muestro al usuario y pido su confirmacion este puede aceptar o cambiar por otro en el caso de que la hoja preimpresa fuera dañada y/o usado para otros menesteres dicho comprobante y/o haya hecho a mano la factura y deba ingresarlo luego (hay muchos casos de estos), si el usuario acepta se da de alta el registro con el nuevo nro y se libera el FLOCK, si el usuario cambio el nro obtenido por uno siguiente o anterior reviso la tabla para certificar que no existe el comprobante para no duplicarlo y lo grabo, en caso que exista ya el comprobante vuelvo a pedirle al usuario el nro de comprobante, recien alli cuando se haya grabado el segundo usuario puede tratar de obtener el sgte nro posible, funciona perfectamente.
Como referencia dejo sentado que solo un usuario y/o proceso puede bloquear una tabla con FLOCK de modo que esto asegura que en la grabacion simultanea de facturas no exista conflicto de nros de comprobantes.
Luego de obtener el nro de comprobante procedo a hacer los registros en la ficha de movimiento, grabado en detalle de factura, descuento de stock y registros de asientos contables entre otras actualizaciones.
y para el amigo malamigo que esta muy preocupado por los cortes de luz, ningun sistema esta exento de fallo sobre todo los que utilizan motor de base de datos en el servidor, peeeero los capos en electronica proveen algo llamado UPS que esta al alcance de cualquier micro empresa ya sea para el servidor, switcher y las terminales, si no te gusta esa solucion pues informate sobre campos en la cabecera de las DBF'S para aprender como repararla, yo te cuento hace tiempo estoy en esto y a lo sumo se dañan los CDX pero poquisimas veces y generalmente cuando tienen problemas en superficie del disco :no:
ugab:
Hola a todos.
Tengo una aplicacion en Clipper 5.3.
Es un programa del manejo de un club deportivo y el problema que tengo es cuando dos o mas terminales quieren cambiar de grupo a los habilitados.
Cuando graba la cantidad de personas que hay un grupo hora y dia determinado graba mal, a veces algundo de los registro los pone en 0 otros los suma mal y no he encontrado la forma de que suma y reste bien.
Si alguien puede ayudar desde ya gracias
arielb:
Hola bienvenido al foro, en todos los foros encontrarás personas con la disposición de orientarte o ayudarte, pero para que la orientación o la ayuda sea la correcta debes dirigirte al foro que corresponda a tú pregunta. Lastimosamente en este foro en especifico lo más seguro no podremos ayudarte, ya que tú pregunta la hiciste en el foro de visual fox pro. Por lo que es mejor que la hagas en http://foros.solocodigo.com/viewforum.php?f=25 , utilizando un nuevo tema que es un botón con letras rojas en grande en la parte superior izquierda.
Saludos....
Navegación
[*] Página Anterior
Ir a la versión completa