In ADO you've got the Number, SQLState, and NativeError properties of each error object. I typically use the SQLState when testing expected conditions in an error handling routine, as it's more generic, but I think you want the NativeError property (which I also display and log, along with Source and Description, for unexpected errors).
--Jonathan