Commit y unlock

Commit y unlock

Postby noe aburto » Wed Sep 03, 2014 3:17 pm

Saludos.

Una cuestion de que es mejor.

ante un bloque de registro y para liberarlo se usa unlock

el commit debe ir antes del unlock o despues?

como si fuera principiante ante esto...

gracias.
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Commit y unlock

Postby karinha » Wed Sep 03, 2014 3:51 pm

Antes,

Para forzar el windows a grabar el registro en la base de datos.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7831
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Commit y unlock

Postby xmanuel » Thu Sep 04, 2014 12:20 am

dUnlock hace una llamada al metodo SELF_GOCOLD que se encarga de actualizar los buffer internos y de escribir en dico si es necesario por lo que commit está implicito.
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 762
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Commit y unlock

Postby hmpaquito » Thu Sep 04, 2014 7:23 am

Manuel,

Aun a pesar de que pienso que conoces las interioridades Rdd de Harbour mejor que yo, veo extraño lo que dices. Simplemente, si COMMIT no hiciera nada, seguro que V. Szatkas ya lo habria eliminado de las funciones de Harbour. :)
Por experiencia, al menos en Clipper, COMMIT producia un volcado de datos.

Pensando en lo que dices, podria ser que COMMIT alzara algun flag que se tendria en cuenta en el dbUnlock(), eso podria explicar lo que tu dices.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Commit y unlock

Postby aferra » Thu Sep 04, 2014 12:49 pm

Hola Noe Aburto, lo hago de esta manera, hubo un gran debate sobre [url="http://fivewin.com.br/index.php?/topic/21870-indexacao-constante/"]el tema[/url].

para agregar un nuevo registro
dbAppend( .F. )
IF neterr()
? "no bloqueado récord"
else
replace ......
endif

actualizar un registro
IF Rlock()
dbSetOrder( 0 )
replace ....
dbCommit()
dbUnLock()
dbSetOrder( <oldIndex> )
ELSE
? "no bloqueado récord"
ENDIF

para eliminar un registro
IF Rlock()
dbSetOrder( 0 )
DbDelete()
dbCommit()
dbUnLock()
dbSetOrder( <oldIndex> )
ELSE
? "no bloqueado récord"
ENDIF
aferra
 
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

Re: Commit y unlock

Postby Rick Lipkin » Thu Sep 04, 2014 1:04 pm

To All

Just a word of caution using dbCommit() .. for just a single record dbCommit() during an update, append or deletion is fine, however, if you are updating many records in a Do While loop, you will notice dbCommit() after each update will cause your Do While loop to become extremely slow. In cases where I am making many record changes in a Do While loop, I issue dbCommit() after the loop is finished.

From the old Clipper days, it was said that if you move the record pointer it forced the workarea buffers to be flushed to disk. In cases where I am in a Do While loop appending or editing many records, I issued a dbSkip(0) after each change. DbSkip(0) technically moves the record pointer back to itself, theoretically flushing the buffers, then once the routine was complete I used dbCommit() to issue a 'hard disk' write.

Rick Lipkin
User avatar
Rick Lipkin
 
Posts: 2666
Joined: Fri Oct 07, 2005 1:50 pm
Location: Columbia, South Carolina USA

Re: Commit y unlock

Postby xmanuel » Thu Sep 04, 2014 3:29 pm

No tiene nada que ver una cosa con la otra.
El dbUnLock() hace un dbcommit() pero no al contrario.
Se puede mantener el bloqueo y hacer un commit para que el cambio sea visible para otros usuarios del aplicativo en la red y no puedan borrar o modificar el registro bloqueado.
No sé si me explico bien :-)

PD: Ya hace tiempo que no miro las RDD por dentro y puede que no esté en lo cierto, es cuestión de probar :-)
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 762
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 50 guests