Try adding the following code to determine what's going wrong:
var oPerson = Server.createobject('odsweb.person');
// Set data format as ADO.
oPerson.SetDataFormat(1);
// Retrieve record
oPerson.GetPerson(2);
// Retrieve the ADO recordset.
var rs = oPerson.GetDataX()
// Update a field. Original value is 'George'
rs.Fields('first').Value = 'Georgie Porgie';
// Send the recordset back to business object.
oPerson.SetDataX(rs);
// Save the changes.
var cerr = oPerson.Save();
// Check to see if everything went well
if cerr < 0
var nerrcnt = oPerson.GetErrorCount()
For i = 1 to nerrcnt
Response.Write(oPerson.GetError(nerrcnt))
Next i
Response.Flush
endif