estube viendo tu codigo, y hay algunos problemas que me gustaria que arreglaras: primero si un form abre otro asegurate que no cierre la base de datos, eso es un problema, segundo asumo que no has programado mucho con foxpro por la forma en la que estructuras las condiciones
IF FOUND()
MESSAGEBOX(eMessageText3, nDialogType3, eMessageTitle3)
thisform.command3.Enabled= .t.
ELSE
IF NOT FOUND()
thisform.text6.Value=right("00000"+alltrim(str(val(mel)+1)),8)
ENDIF
ENDIF
esto se resume asi:
IF FOUND()
MESSAGEBOX(eMessageText3, nDialogType3, eMessageTitle3)
thisform.command3.Enabled= .t.
ELSE
thisform.text6.Value=right("00000"+alltrim(str(val(mel)+1)),8)
ENDIF
la condicion por si misma evalua ambas situaciones, tercero trata de escribir tu codigo un poco mas estructurado para poder entendele, es que asi como esta se ve muy desordenado. imagino has leido que las condiciones y ciclos llevan sangria.
en cuanto al problema que tienes revisare el codigo y yo te aviso por lo pronto trata de mejorar los detalles que mencione.