Sospecho que el problema está con búsquedas parciales. Lee acerca de SET EXACT.
Podrías buscar por el valor completo del campo, rellenando con espacios, usando la función padr().
==========
Actualización.
Ahora veo que pusiste SET EXACT ON. No estoy seguro. Prueba de todos modos, a rellenar con espacios.
>En el evento ini del formulario hice SET EXACTO ON .. pero sigue el mismo fenomeno.
>y ... aqui continuo la primera pregunta que hice....
>
>
>* Disculpe y le Agradezco por la atencion a mi pregunta...
>
>* PROPIEDAD DE FORMULARIO
>* buffermode = 2 - OPTIMISTIC
>* DataSession = 2 - PRIVATE
>* Tablas en Datasession : USUARIOS,
>* KEYS -- Esta es una tabla para manejar Proximo PK a
>* tener por insertar para cada tabla pq .DBC de VFP5
>* no provee por si el mecanismo de autoincremet fild para PK.
>
>* Este es el codigo origina del Method "Modifica"
>
>**** PREGUNTA !!!! **************************
>* En la primera instancia modifico USRID: "UNO" a "UNOttt" Funciona Bien..
>* Pero en la Segunda instancia al intentar modificar USRID : "UNOttt" a "UNO"
>* va a encontrar con .. =MESSAGEBOX("ID Ya Existente ... Elija Otro ...")
>* fijese donde esta marcado con *OJO* en el siguiente codigo fuente..
>* con esto se puede inferir que el Cursor de Private DataSession Tiene problema.
>* El mismo registro Modificado al averiguar con BROWSER en Public DataSession
>* tiene correctamete modificado...
>* Que Locuara ... Esto Ya me esta volviendo L O C O
>* Que Cursor L O C O
>* El mismo o parecido fenomeno me habia tenido con INSERT.
>* AYUDEME
>
>********************************************
>LOCAL lcUID,lcNom , lcSql, lnCT, lnID, llError
>
>SUSPEND
>
>
>lcUID = ALLTRIM(THISFORM.txtUsrId.Value)
>lcNom = ALLTRIM(THISFORM.txtNombre.Value)
>lnID = THISFORM.lstUsuarios.ItemData(THISFORM.lstUsuarios.ListIndex)
>
>
>lcSql = "SELECT USRID FROM USUARIOS WHERE USRID == " + "'" + lcUID + "'" + " INTO CURSOR TEMP"
>&lcSql
>SELECT TEMP
>lnCT=RECCOUNT('TEMP')
>USE
>
>*OJO*
>IF lnCT > 0
>MESSAGEBOX("ID Ya Existente ... Elija Otro ...")
>RETURN .F.
>ENDIF
>
>
>lcSql = "UPDATE USUARIOS SET USRID = " + "'" + lcUID + "'" ;
>+ ", NOM = " + "'" + lcNom + "'" ;
>+ " WHERE ID = " + STR(lnID )
>
>
>BEGIN TRANSACTION
>
>ON ERROR llError = .T.
>&lcSql
>IF llError
>ROLLBACK
>=MESSAGEBOX(MESSAGE())
>ELSE
>END TRANSACTION
>
>WITH THISFORM
>.lstUsuarios.List(.lstUsuarios.ListIndex) = lcUID + SPACE(4) + lcNom
>.txtUSRID.Value = ""
>.txtNombre.Value = ""
>ENDWITH
>
>ENDIF
>
>ON ERROR
>
>
>VERDIN40@YAHOO.CO.KR
>
VERDIN41@HOTMAIL.COM
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)