Question involving updating data behind stored procedures with TClientDataSet

I'm having some difficulty implementing something for a client/server Delphi
application.  I have a stored procedure on Sybase that generates a result
set from an outer joined query.  The data from this procedure is displayed
locally with the TClientDataSet and the only fields that will accept changes
are fields in the primary (inner) table.  I need to have the updates applied
directly to this primary table.  This is a problem because the structure of
the TClientDataSet.Delta includes fields that are not in the primary table.
The standard ClientDataSet.ApplyUpdates(0) raises either the exception:
"Record changed by another user" or "Field not found in dataset."

Has anyone come across an "elegant" way of doing this?  It seems there
should be many ways of building a TClientDataSet where you only want certain
fields to be updated.  I have not found a way to cleanly remove fields from
the Delta: OleVariant, but that might be an approach.  Also, when using
provider flags, Provider.ResolveToDataSet needs to be false which will
always raise the exception: "Table not found."

Tomas Gonzalez