fleal wrote:驴Qu茅 est谩 mal en este c贸digo?
Me reportan que a veces sale el msgalert y no guarda el registro nuevo con la informaci贸n.
驴Alguien tiene una funci贸n para asegurarse de que se ha agregado o bloqueado para actualizar el registro ?
Gracias.
La llamo de esta manera
Seguro( ( EMPLEADO ), "A" )
..............
Function Seguro( cAlias, cTipo) // B - Rlock A - Append Blank
local nSegundos := 1
Do Case
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
Return FALSE
REVISA LOS TIPS DE LAS LINEAS:
Function Seguro( cAlias, cTipo) // B - Rlock A - Append Blank
local nSegundos := 1
Do Case
Case cTipo == "A"
( cAlias )->( dbappend() ) // DEBERIAS ABRIR SOLO DENTRO DEL DO WHILE...
If !NetErr() // ACA SI NO CONSIGUE ERROR SE DEVUELVE Y NO ENTRA EN EL DO WHILE...ASI NO ENTRA A GRABAR...
Return TRUE
Endif
Do While TRUE
nSegundos++
Inkey(1)
( cAlias )->( dbappend() )
If !Neterr() // ACA SI NO CONSIGUE ERROR SE DEVUELVE Y NO ENTRA EN EL DO WHILE...ASI NO ENTRA A GRABAR...
Return TRUE
Endif
If nSegundos >= 5 // COMO DICE EL COLEGA, LO ESTAS DEJANDO EN UN CICLO INDEFINIDO POR QUE NO HAY SALIDA EL WHILE
MsgAlert("No se puede actualizar el registro"+Chr(13)+;
"Reintentar nuevamente")
nSegundos := 1
Endif
EndDo
EndCase
Return FALSE
Te recomiendo uses la clase TDATABASE, puedes controlar mejor el grabado de registro...si te interesa te mando un ejemplo a tu privado...cualquier duda no dudes en preguntar, aca nos ayudamos.

Dios no est谩 muerto...
Gracias a mi Dios ante todo!