Finally, I figured out. It's not the code can't pick up the latest version, its just that the code didnt point to the right location of the table.
We had code for SQL datasource, something like :
strLocation = crConnectionInfo.DatabaseName & ".dbo." & bTable.Location.Substring(bTable.Location.LastIndexOf(".") + 1)
OutputDebugLine("New Location: " & strLocation)
But this does not work for Oracle. Oracle need to have the fully qualifed name, something like:
c= Split(myReportDocument.ReportClientDocument.Database.Tables(0).QualifiedName, ".")
strLocation = QualifiedName(0) & "." & QualifiedName(1) & "." & QualifiedName(2)
Somehow this doesnt work:
strLocation = myReportDocument.ReportClientDocument.Database.Tables(0).QualifiedName