Floating-Point Data

Techniques for handling floating-point data (any numeric data that does not have a fixed number of digits after the decimal point) vary among database servers. Furthermore, when remote floating-point data is put into a numeric format acceptable to Microsoft Jet (as in the case of linked tables), minor numeric data accuracy loss may occur. Although these accuracy losses usually occur in very large or very small floating-point numbers and have no appreciable effect on common mathematical operations, they can cause a problem when used for exact comparisons. One case that is particularly important is that of floating-point data in fields that are part of a unique index.

When fields containing floating-point values are used as part of a unique index and any variation (even a very small one) exists between the numeric data on the local and remote data sources, Microsoft Jet may mark the record containing the discrepancy as deleted. This occurs because Microsoft Jet requests the record from the server by presenting its key value. Because of the loss of accuracy, the server table doesn’t contain a record with key values that exactly match the values requested by Microsoft Jet, therefore it appears to Microsoft Jet that another user has deleted the record.

To remedy this situation, you can force Microsoft Jet to select another unique index (if available) that doesn’t use any floating-point values. Rename the new index (that is, the index that doesn’t contain floating-point values) so that it appears alphabetically before the original index and re-establish the link to the remote table. Microsoft Jet automatically updates the link with the new index as the primary index on the remote table.