Según yo... nunca, bajo ninguna circunstancia debe de aparecer me msgstop... lo curioso es que a veces me aparece a veces no. Siempre en la misma base de datos.
Esta es una función que uso para asegurarme de puedo agregar o bloquear un registros antes de actualizarlo.
Saludos
Fernando
Function Seguro( cAlias, cTipo) // B - Rlock A - Append Blank
local nSegundos := 1
Do Case
Case cTipo == "B"
If ( cAlias)->( DbRlock() )
Return TRUE
Else
Do While ( cAlias )->( !DbRlock() )
nSegundos++
Inkey(1)
If ( cAlias )->( DbRlock() )
Return TRUE
Endif
If nSegundos >= 5
MsgAlert("No se puede actualizar el registro"+Chr(13)+;
"Reintentar nuevamente")
nSegundos := 1
Endif
EndDo
Endif
Case cTipo == "A"
( cAlias )->( dbappend() )
If !NetErr()
Return TRUE
Endif
Do While TRUE
nSegundos++
Inkey(1)
( cAlias )->( dbappend() )
If !Neterr()
Return TRUE
Endif
If nSegundos >= 5
MsgAlert("No se puede actualizar el registro"+Chr(13)+;
"Reintentar nuevamente")
nSegundos := 1
Endif
EndDo
EndCase
MsgStop("Código de seguridad. Tipo "+cTipo+" Alias "+( cAlias ) +chr(13)+;
"REPORTELO AL PROGRAMADOR")
Return FALSE