web-dev-qa-db-ja.com

Access 2010リンクテーブル-「10進数フィールドの精度」エラーを解決する

Access 2003データベース(Win 7 64ビットで実行されており、Officeも64ビットです)があり、 64ビットOracle ODBCドライバ 。ほとんどのテーブルは正常に機能しますが、一部のテーブルでは、「10進数フィールドの精度が小さすぎて、追加しようとした数値を受け入れることができません」というエラーが表示されます。

これまでのところ:

  • 解決策を求めて広範囲にネットサーフィンしましたが、私の場合は何も当てはまりません(私のODBCドライバーには "enforce double"パラメーターがありません。他に私が見つけた提案は単に無関係です)
  • accessが数値フィールドの正しい精度と位取りを設定していることを確認します(たとえば、OracleのNUMBER(20,10)は、数値データ型、精度が20の10進数フィールドサイズ、Accessの位取り10にマップされます)。これは、エラーを生成するフィールドにも当てはまります。
  • は、レコードに少なくとも1つの問題のあるフィールドがある場合、そのレコードの他のすべてのフィールドもデータシートビューに「#Error」を表示すると結論付けました。問題のあるフィールドをnullに設定すると、レコードは正常に表示されます。
  • 私の場合、問題はタイプNUMBER(20,10)またはNUMBER(8,6)のWGS座標を持つフィールド(おそらく他の高スケール数値フィールドも不明)に関係していると考えました
  • oracleの問題のあるフィールドをフィールドの元のスケールに丸めると、Accessは文句を言うのをやめることがわかりました。たとえば、Oracleビューでは、NUMBER(20,10)field_nameがround(field_name、10)になり、Accessが便利になります。

テーブルで丸めの回避策を使用することはできません。Oracledbは非常に大規模で複雑なシステムの一部であるため、Oracle dbを変更する自由度があまりありません。

私はMS Accessの初心者であり、他に何を試すべきかについてアイデアが足りなくなってきました(コンピューターを焼き、ジョギになって私の必死を抑えることを除く)。

どうか、助けてください、親切なデータベースコミュニティ!!

5
Marko

同様の問題がありましたが、修正はリンクされたテーブルの更新でした。 Accessは、Oracleテーブルで精度が変更されたことを認識していなかったため、「精度が小さすぎます」というエラーが表示され続けました。

3
Steeve

リンクされたMySQLテーブルでAccess 2010を実行しています。宛先テーブルのフィールドが「10進数」としてフォーマットされ、長さが3,0であることがわかりました。

MySQLでこれを4,0に変更し、リンクテーブルを更新して、テーブルへの追加が機能しました。

そのため、宛先フィールドは結果のデータに対して十分な幅がなかったようです。

0
dbDesigner