FoxPro/Visual FoxPro - Correlativos en Red

 
Vista:

Correlativos en Red

Publicado por Maria Antonieta (147 intervenciones) el 13/03/2007 21:58:59
Hola amigos de LWP,

Tengo un pequeño sistema para una ferreteria, es monousuario, pero resulta que el dueño compro 2 Pc mas y tengo problemas al compartir mis datos, estoy leyendo sobre:

SET MULTILOCKS ON
SET EXCLUSIVE OFF
SET REPROCESS TO AUTOMATIC
CURSORSETPROP("Buffering",1,0)

Estos comando; bueno me esta llevando tiempo en aprenderlos, pero ahi estoy. si alguien podria ayudarme con algo mas.

Una mas, cuando generaba una factura (monousuario), me cogia el numero de una tabla de correlativos+1 y ya tenia el numero de factura, pero ahora mi duda es la sgte ahora que sera multiusuario, como le hago para que cuando 2 o mas usuarios graben simultaneamente la factura, tengo dudas que los 2 o mas usuario, cogan el mismo numero. ayudenme a solucionar mis dudas amigos.

Espero me ayuden.
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:Correlativos en Red

Publicado por DOUGLAS (297 intervenciones) el 13/03/2007 23:35:23
Claro asi es solo pon esto en el programa de inicio o si tienes formulario de nivel superior ponlo en el init.

SET MULTILOCKS ON
SET EXCLUSIVE OFF
SET REPROCESS TO AUTOMATIC
SET REFRESH TO 5
SET DELE ON
SET CENTURY ON
SET DATE BRITISH
SET TALK OFF
SET COLLATE TO 'MACHINE'
SET SAFETY OFF
SET NOTIFY OFF

**NO PONGAS RUTAS ESPECIFICAS PARA INICIO DEL SISTEMA
**HAS ALGO ASI.

SET DEFA TO SYS(5)+SYS(2003)

AHORA CUANDO ABRAS TU FORM. O PROGRAMAS
COMO YA HICISTE AL INICIO
SET EXCLUSIVE OFF
ESTA SE ABRE EN MODO COMPARTIDO

PARA LAS GRID U OTROS COMO LISTBOX, NO UTILICES TABLAS
UTILIZAS CURSORES YA QUE SI NECESITAS BORRAR ALGO CON ZAP
SERIA EN UN CURSOR QUE SE ABRA CON DISTINTO NOMBRES EN LA RED.

USE TUTABLA IN 0

YO TENGO UN SISTEMA DE FERRETERIA TAMBIEN Y NO NECESITAS HACER MAS NADA LO DEMAS ES PROGRAMACION NO USAR ZAP. PACK DENTRO DE LAS TABLAS O INDEX ON, ALTER TABLA ETC.

SI QUIERE TE ENVIO UN FORM DE EXAMPLO.

ESPERO LE SIRVA
BY BYE

DOUGLAS SANCHEZ
NICARAGUA
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:Correlativos en Red

Publicado por Ali Suarez (1 intervención) el 15/08/2007 18:56:45
Amigo Douglas Sanchez,
Seria de gran ayuda para mi que me enviaras ese form de ejemplo. Gracias
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:Correlativos en Red

Publicado por franciso lopez (1 intervención) el 13/03/2007 23:41:40
para lo del consecutivo puedes hacer lo siguiente..
enboton de grabar grabado......

select correlalivos
thisform.txtnumfactura.value = correlativos + 1

blockear registro*** checate los comandos flock y rlock
replace correlativos with thisform.txtnumfactura.value
unlock

select factura
blockear registro
replace numfactura with thisform.txtc
hacer los demas replaces
unlock

**** asi nunca vas a tener problemas con el consecutivo
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:Correlativos en Red

Publicado por Maria Antonieta (147 intervenciones) el 14/03/2007 16:10:42
Hola amigos de LWP:
Gracias por su tiempo y respuestas:

Gracias Douglas, encantada si me envia ese ejemplo, lo espero.

Francisco, yo algo asi como me sugieres en tu respuesta

** Altas de Articulos
SELE ARTICULO
SET ORDER TO codart
IF NOT RLOCK()
wait window "<< Espere, el registro esta siendo usado por otro usuario >>"
ELSE
IF MODI = .F. && Valida si es nuevo o estoy modificando
APPEND BLANK
ENDIF
=TABLEUPDATE()
UNLOCK IN ARTICULO
ENDIF

Este codigo lo tengo en el boton grabar. Pero resulta q el primero q entra a modificar un registro lo hace sin problema, si otro usuario coge el mismo registro me sale el reloj de windows y como que esta en un bucle y no me muestra ningun mensaje.
Ahora mi pregunta son las sgtes:

-cuando le doy modificar un registro y este esta en edicion, debo bloquear apenas cojo el registro a modificar?

-Ahora cuando sea un registro nuevo, debo bloquear antes de hacer el append?

Espero me sigan ayudando, mil gracias.
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:Correlativos en Red

Publicado por Jorge Cruz (30 intervenciones) el 14/03/2007 21:25:50
Has probado con seguir algunos pasos en los ejemplos del Fox que trae consigo en cuanto a lo que es articulos, clientes, condiciones de pago.
Son muy interesantes y lo demas depende de ti para que le des los retoques, yo he trabajado con varios de esos forms.

Si deseas algunos consejos especificos me escribes a mi mail.

Saludos,

Jorge.
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

Vuelvo a Postear ..Ayuda!!!!

Publicado por Maria Antonieta (147 intervenciones) el 14/03/2007 22:20:21
Hola amigos de LWP:
Gracias por su tiempo y respuestas:

Gracias Douglas, encantada si me envia ese ejemplo, lo espero.

Francisco, yo algo asi como me sugieres en tu respuesta

** Altas de Articulos
SELE ARTICULO
SET ORDER TO codart
IF NOT RLOCK()
wait window "<< Espere, el registro esta siendo usado por otro usuario >>"
ELSE
IF MODI = .F. && Valida si es nuevo o estoy modificando
APPEND BLANK
ENDIF
=TABLEUPDATE()
UNLOCK IN ARTICULO
ENDIF

Este codigo lo tengo en el boton grabar. Pero resulta q el primero q entra a modificar un registro lo hace sin problema, si otro usuario coge el mismo registro me sale el reloj de windows y como que esta en un bucle y no me muestra ningun mensaje.
Ahora mi pregunta son las sgtes:

-cuando le doy modificar un registro y este esta en edicion, debo bloquear apenas cojo el registro a modificar?

-Ahora cuando sea un registro nuevo, debo bloquear antes de hacer el append?

- Digamos si tengo 4 tablas en mi boton grabar, FACTURA, DETALLE, CTACTE, NUMERADOR. a las 4 Tablas las bloqueo (osea 1 x 1)
algo asi:

SELE FACTURA
SET ORDER TO miindice
IF FLOCK()
** Grabar Proceso
ELSE
** Tabla Ocupada
ENDIF
=TABLEUPDATE()
UNLOCK IN FACTURA

SELE DETALLE
SET ORDER TO miindice
IF FLOCK()
** Grabar Proceso
ELSE
** Tabla Ocupada
ENDIF
=TABLEUPDATE()
UNLOCK IN DETALLE

SELE CTACTE
SET ORDER TO miindice
IF FLOCK()
** Grabar Proceso
ELSE
** Tabla Ocupada
ENDIF
=TABLEUPDATE()
UNLOCK IN CTACTE

SELE NUMERADOR
SET ORDER TO miindice
IF FLOCK()
** Grabar Proceso
repl contador with contador + 1
ELSE
** Tabla Ocupada
ENDIF
=TABLEUPDATE()
UNLOCK IN NUMERADOR


Espero me sigan ayudando, mil gracias.
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
sin imagen de perfil

RE:Vuelvo a Postear ..Ayuda!!!!

Publicado por jesus cordero (405 intervenciones) el 15/03/2007 21:56:42
Ve la respuesta que dio el amigo plinio a esta misma pregunta en este foro.

Yo hago dos pasos
1- Al crear una factura nuevo hago algo como esto
Thisform.txtCodigo_factura.value = tabla_secuencia.factura_secuencia + 1

En este caso los dos o mas usuarios pueden tener el mismo numero de factura en pantalla.

2- Al grabar es donde yo verifico de nuevo

secuencia_factura = tabla_secuencia.factura_secuencia + 1
SELECT tabla_secuencia
replace tabla_secuencia.factura_secuencia with secuencia_factura

SELECT factura
replace codigo_factura with secuencia_factura

Te apuesto a que VFP hace esto tan rapido que dandole los dos al boton grabar al mismo tiempo solo uno de los dos pasa primero.

Epero te ayude,
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:Vuelvo a Postear ..Ayuda!!!!

Publicado por Maria Antonieta (147 intervenciones) el 15/03/2007 22:21:08
Hola y gracias por responder:

Correlativos ya pude solucionar, lo que no consigo aun es los FLOCK y RLOCK.
Vi el ejemplo. y bueno estoy en esas.
Cualquier comentario es bienvenido.

Saludos.
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