IF EMPTY(m.id) OR ISNULL(m.id) OR NOT LEN(CHRTRAN(m.id," ",""))=8 Messagebox('Please check the ID again.',64) ThisForm.Text1.SetFocus() RETURN .F. ENDIF IF EMPTY(m.name) OR ISNULL(m.name) Messagebox('Please check the name again.',64) ThisForm.Text3.SetFocus() RETURN .F. ENDIF rp=RECNO() IF INDEXSEEK(m.id) IF person.id = m.id AND ; person.name = m.name AND ; person.logon = m.logon wait window 'Same stuff' ELSE Messagebox('This Person ID is already in the database.'+CHR(13)+ ; 'Duplicate Records will not be saved!',64) m.id = person.id m.name = person.name m.logon = person.logon ENDIF ELSE SET DELETED OFF IF SEEK(m.id) IF DELETED() RECALL REPLACE name WITH m.name, ; logon WITH m.logon SET DELETED ON ELSE IF mode = 'E' GOTO rp REPLACE id WITH m.id, ; logon WITH m.logon, ; name WITH m.name, ; uplog WITH ALLTRIM(GETENV("USR")), ; updated WITH DATE() SET DELETED ON ELSE && mode = 'A' INSERT INTO person (id,logon,name) VALUES (m.id,m.logon,m.name) REPLACE uplog WITH ALLTRIM(GETENV("USR")), ; updated WITH DATE() SET DELETED ON ENDIF ENDIF ELSE IF mode = 'E' GOTO rp REPLACE id WITH m.id, ; logon WITH m.logon, ; name WITH m.name, ; uplog WITH ALLTRIM(GETENV("USR")), ; updated WITH DATE() SET DELETED ON ELSE && mode = 'A' INSERT INTO person (id,logon,name) VALUES (m.id,m.logon,m.name) REPLACE uplog WITH ALLTRIM(GETENV("USR")), ; updated WITH DATE() SET DELETED ON ENDIF ENDIF ENDIFSorry to post my 'whole' code in here just like that. Reason is I believe it would be easier to see what I have done to the whole 'Save' button (snipped out the ThisForm.Refresh stuff at end). Please feel free to change anything you see fit.
>IF INDEXSEEK(m.ID, .T., "Person", "ID") > Messagebox('This Person ID is already in the database.'+CHR(13)+ ; > 'Duplicate Records will not be saved!',64) > > *!* m.ID is already correct. > *!* "Refresh" Name and Logon, even if they are the same > *!* who cares if they are already the same > m.Name = Person.Name > m.Logon = Person.Logon >ELSE > *!* Do whatever you do with a new record >ENDIF