Registros duplicados en tablas DBF

16/11/2004 - 22:42 por Carlos Vázquez | Informe spam
¡Muy buenas tardes a Todos!

En una tabla llevo un número consecutivo único, al que llamo orden y por
default lo sugiero. Antes de grabar reviso que otro usuario no lo haya
grabado (el sistema opera en red) y en varias ocasiones no encuentro el
registro con el mismo número que otro usuario grabó.

Antes de grabar hago un lock("0", Tabla) para que nadie pueda agregar
registros mientras yo no libere y además un rlock() del registro, en ese
inter busco en la misma tabla la orden que voy a grabar y no la encuentra,
entonces la grabo y libero el registro. Después hago un flush para que se
grabe el buffer a disco. Y en varias ocasiones se han duplicado los
registros con el mismo No. de orden.

¿Alguien de ustedes me podría ayudar, dando me algún tip o indicándome
si estoy haciendo algo mal?

De antemano gracias
Carlos Vázquez

Preguntas similare

Leer las respuestas

#1 Alex Feldstein
16/11/2004 - 23:28 | Informe spam
On Tue, 16 Nov 2004 15:42:08 -0600, "Carlos Vázquez"
wrote:

En una tabla llevo un número consecutivo único, al que llamo orden y por
default lo sugiero. Antes de grabar reviso que otro usuario no lo haya
grabado (el sistema opera en red) y en varias ocasiones no encuentro el
registro con el mismo número que otro usuario grabó.

Antes de grabar hago un lock("0", Tabla) para que nadie pueda agregar
registros mientras yo no libere y además un rlock() del registro, en ese
inter busco en la misma tabla la orden que voy a grabar y no la encuentra,
entonces la grabo y libero el registro. Después hago un flush para que se
grabe el buffer a disco. Y en varias ocasiones se han duplicado los
registros con el mismo No. de orden.

¿Alguien de ustedes me podría ayudar, dando me algún tip o indicándome
si estoy haciendo algo mal?

De antemano gracias
Carlos Vázquez




Una mejor forma de hacerlo es usar un campo autoincremental.
Otra forma es usar un contador al momento de escribir como en este
ejemplo:
http://www.feldstein.net/newid_sp.asp

Para evitar duplicados, marca el campo como PK o como Candidate Key.
No hace falta usar el antiguo RLock() sino es mejor usar buffering y
TableUpdate() chequeando su valor de retorno.


Alex Feldstein
________________________________
Microsoft Visual FoxPro MVP
Please respond in the public groups so that everybody
can benefit from the exchange.
Favor de responder en los foros públicos asi todos se benefician.
(address munged with ROT-13)

Blog: http://www.bloglines.com/blog/AlexFeldstein
Website: http://feldstein.net
Respuesta Responder a este mensaje
#2 Carlos Vázquez
16/11/2004 - 23:47 | Informe spam
Mil gracias, lo veo.

Saludos
Carlos Vázquez
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida