DO CASE CASE ALLTRIM(UPPER(THIS.COMMAND8.CAPTION)) = 'EDIT' FOR START = 2 TO 16 THISBOX = 'THISFORM.RFI_TEXTBOX'+ALLTRIM(STR(START))+'.READONLY' &THISBOX = .F. ENDFOR FOR START = 1 TO 3 THISBOX = 'THISFORM.RFI_TEXTBOX'+ALLTRIM(STR(STRART)+'.READONLY' &THISBOX = .F. ENDIF THIS.COMMAND8.CAPTION = 'Save' CASE ALLTRIM(UPPER(THIS.COMMAND8.CAPTION)) = 'SAVE' BEGIN TRANSACTION IF TABLEUPDATE() END TRANSACTION ELSE ROLLBACK MESSAGEBOX('Record could not be updated.',64,'Error Upating' ) ENDIF THIS.COMMAND8.CAPTION = 'Edit' ENDCASEThe PK is really assigned in the default value of the field in the table