Triggers can be very tricky. If your application, and any application that accesses the data, can be guaranteed to be SQL based (ODBC, OLEDB, etc) a trigger might work. If any application touches that data using Btrieve, then it won't be able to perform Insert or Updates (assuming your create Insert and Update triggers). You'll get status 149.
That being said, I think the UPDATE is going to be the better choice. You would need a trigger on both Inserts and Updates (to cover both cases where sec_qtycomplete or sec_qtyestimate change.
Also, if your database schema can be changed, I would suggest not storing a calculated field. Storing a calculated field like this introduces the exact problem you're trying to solve. If you don't store that calculated field but handle it in the application, you won't have to update the calculated value (sec_totalqty) when either value (sec_qtycomplete or sec_qtyestimate) change.