I ran into a problem with the JetDriver and decimals a while ago when
working with MS Access databases, but I have no idea how to
contribute, so I'll just post it here.
The problem arises when you're trying to save a value of type decimal
in the database. Regardless of whether the designated column is a
double, or an actual decimal doesn't seem to matter. What happens is
that the decimal separator magically disappears. So saving '1.2' would
result in the value '12' in the database.
The fix is making decimals into doubles before saving to database.
Similar as to how the code already makes Int64 into Int32. This works
on both double and decimal columns.
I've no idea how to write an automated test to verify this, except
actually having a database lying around and try to store and read back
the data. Even then I'm not sure if the test could be used safely as
it's not very isolated. There may be some twisted environment of
drivers etc where the error wouldn't show up.
Anyway, I've seen this exact behavior on our systems as well as
customers, so it doesn't seem like it's only me :)
Here's a patch that fixes the problem: