Hello Marco,
We are currently using DOA 4.1.2.2 with Delphi XE, and we get this error too.
This is what we found out so far:
We have a dataset with a query like:
select tab1.rowid, tab1.*, tab2.field1, tab2.field2, tab2.*
from table1 tab1, table2 tab2
where tab1.id(+) = tab2.tab1_id
tab1 and tab2 both have a field with the name ID when you open the dataset this will result in two different fields 1 called ID and 1 called ID_1. When we delete a record form the dataset we get the error "record has been changed by another user".
After some research and debugging OracleData we came across the code that checks if the data is changed here you check the value of the fields. What we saw is that when ID_1 was being checked the original fieldname ID is used and we get back that the record is changed.
In the function TOracleFieldInfo.QueryValueIndex you fetch the the field index, but here you use the ColumnName and not the FullName. We changed this in that function and that seems to work for us.
Can you check if this is correct, if not can you supply us with a correct solution. We are currently working towards a release of our software so we are in a bit of a hurry with a solution.
Regards,
Richard Floor
Last edited by RFloor; 06/20/12 06:19 AM.