I\'m sure there is an extremely simple reason that this one line isn\'t working, but it has evaded for the past week, so I\'m hoping someone else will notice my fault.
Adding AcceptChangesDuringUpdate before Update works for me, example :
foreach (string tableName in tableNames)
{
da = new SqlDataAdapter("SELECT * FROM " + tableName, cn);
cb = new SqlCommandBuilder(da); //initialise the update, insert and delete commands of da
da.AcceptChangesDuringUpdate = true;
da.Update(myDataSet, tableName);
}