>PROCEDURE UpdateEmailLog(tcText, tcCustno, tcDisposition) > Hi Yossi Your code does not do anything with updating the lSent field. If the log is being updated to change the lSent, you need some means of locating the correct log record to update it. The equivalent code to what you posted done without append blank + replace follows. Those two commands update the indexes as well as the dbf twice (once per command). A single insert into command updates the indexes and the dbf once only and does it without your having to remember and reset the workarea etc. I use TRY/CATCH error handling in such cases. <pre> UpdateEmailLog.PRG LPARAMETERS (tcText, tcCustno, tcDisposition) LOCAL llUpdated llUpdated = .F. DO WHILE !m.llUpdated TRY INSERT INTO emails (em_body,em_datetim,em_custno,em_disptn) ; VALUES (m.tcText,DATETIME(),m.tcCustno,m.tcDisposition) llUpdated = .t. CATCH TO loErr SET STEP ON ENDTRY ENDDO RETURN m.llUpdated