Hi Justin,
You might need to assign each one of your invoice transactions a unique key. MSSQL should be able to provice an autoincrement for each row in the invoice file whenever a new row is inserted. This would give each row in the child table a unique identifier and would also aid when performing SQL pass-through updates/deletes that effect a single row. ( e.g. sqlexec() ) The autoincrement field sould contain an index on the unique key.
Since the invoice transaction file holds the many side of the equation like transactions that belong to a particular client, and since one invoice might contain many transaction so that the invoice number could not be unique, it might be that MSSQL is getting confused about which records if any it should update.