Sie sind auf Seite 1von 6

SoloCodigo • Ver Tema - ACTUALIZAR UNA TABLA COMPARTIDA ... http://foros.solocodigo.com/viewtopic.php?

f=43&t=38884

Inicio | Foros | Blogs | Código fuente | Utilidades | Enlaces web | Artículos | Noticias |
Chat

Índice general ‹ Programación General ‹ Visual FoxPro


Cambiar tamaño de la fuente

FAQ
Buscar
Registrarse
Identificarse

Moderador: juez

Publicar una respuesta


Buscar este tema… Buscar

7 mensajes • Página 1 de 1

ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por peta » Mar Mar 31, 2009 7:09 pm

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.

peta
Nuevo miembro

Mensajes: 1
Registrado: Mar Mar 31, 2009 3:38 pm
Email

Arriba

1 de 6 09/09/2009 11:13 a.m.


SoloCodigo • Ver Tema - ACTUALIZAR UNA TABLA COMPARTIDA ... http://foros.solocodigo.com/viewtopic.php?f=43&t=38884

Re: ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por juez » Vie Abr 03, 2009 6:47 pm

Hola, revisa en la ayuda Set Reprocess To


"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no
se pierda mas tenga vida eterna"
Juan 3:16

http://arielbmascodigo.blogspot.com/

juez
Miembro HIPER activo

Mensajes: 539
Registrado: Mié Abr 28, 2004 6:17 pm
Ubicación: panama
Email
Sitio web

Arriba

Re: ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por xodrf » Mar Ago 11, 2009 9:08 pm

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.

2 de 6 09/09/2009 11:13 a.m.


SoloCodigo • Ver Tema - ACTUALIZAR UNA TABLA COMPARTIDA ... http://foros.solocodigo.com/viewtopic.php?f=43&t=38884

xodrf
Miembro activo

Mensajes: 21
Registrado: Jue Jul 16, 2009 8:49 pm
Email

Arriba

Re: ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por malamigos » Vie Ago 21, 2009 1:51 am

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

malamigos
Nuevo miembro

Mensajes: 3
Registrado: Jue Ago 20, 2009 4:34 pm
Email

Arriba

Re: ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por xodrf » Dom Ago 23, 2009 5:27 am

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

xodrf
Miembro activo

Mensajes: 21

3 de 6 09/09/2009 11:13 a.m.


SoloCodigo • Ver Tema - ACTUALIZAR UNA TABLA COMPARTIDA ... http://foros.solocodigo.com/viewtopic.php?f=43&t=38884

Registrado: Jue Jul 16, 2009 8:49 pm


Email

Arriba

Re: ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por fabitojara » Sab Ago 29, 2009 11:31 pm

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

fabitojara
Nuevo miembro

Mensajes: 1
Registrado: Sab Ago 29, 2009 11:24 pm
Email

Arriba

Re: ACTUALIZAR UNA TABLA COMPARTIDA EN RED

por xodrf » Lun Ago 31, 2009 3:15 pm

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

4 de 6 09/09/2009 11:13 a.m.


SoloCodigo • Ver Tema - ACTUALIZAR UNA TABLA COMPARTIDA ... http://foros.solocodigo.com/viewtopic.php?f=43&t=38884

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

xodrf
Miembro activo

Mensajes: 21
Registrado: Jue Jul 16, 2009 8:49 pm
Email

Arriba

Mostrar mensajes previos: Todos los mensajes Ordenar por Fecha publicación Ascendente Ir

Publicar una respuesta


7 mensajes • Página 1 de 1

Volver a Visual FoxPro

Saltar a: Visual FoxPro Ir

¿Quién está conectado?

5 de 6 09/09/2009 11:13 a.m.


SoloCodigo • Ver Tema - ACTUALIZAR UNA TABLA COMPARTIDA ... http://foros.solocodigo.com/viewtopic.php?f=43&t=38884

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

Índice general
El equipo • Borrar todas las cookies del Sitio • Todos los horarios son UTC + 1 hora

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group


Copyright © 2002-09, SoloCodigo
Información legal

6 de 6 09/09/2009 11:13 a.m.

Das könnte Ihnen auch gefallen