Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Access 2010)
レコードのもつバイナリデータをそのままテキスト化したい
投稿日時: 21/07/17 07:52:32
投稿者: おーさん0729

お世話になります。
  
今、FileMakerからAccessへのシステム移行をしています。
FileMakerからのインポートデータの整合性(保証?)のため、桁落ちをせずにデータをもちたいです。
テーブルは、
 NET 倍精度
 内作 倍精度
 外注 倍精度
 工数 集計 倍精度 =内作+外注
 HT 集計 倍精度 =工数/NET*1000
となってます。
 
具体的な数値としては、
746.5/319192*1000=2.33871776234993「38」
倍精度ですと、後ろ2桁が表示されず、バイナリデータですと後ろ2桁までは少なくとも
もってることは確認できました。
 
倍精度の有効桁数15桁を超えていることは分かっています。
十進型はインポート時にエラーが出ることと変数のデータ型でもてないことから除外して考えています。
また、内部的にはデータが存在しているので、CSVに出力したときに表示されるようにしたいです。
 
そのために、後ろ2桁を含めた2.338717762349938を変数に入れる、もしくはテキスト化する方法はないでしょうか。
 
 
宜しくお願いします。

回答
投稿日時: 21/07/17 14:47:51
投稿者: mayu.

引用:
FileMakerからのインポートデータの整合性(保証?)のため、
桁落ちをせずにデータをもちたいです。

CDec関数を使ったユーザ定義関数を一つ作っておくといいでしょう。
 
'■標準モジュール
Public Function oh0729(ByVal a As Double _
                     , ByVal b As Double _
                     , ByVal c As Double) As String
    oh0729 = CStr(CDec(a + b) / c * 1000)
End Function

■以下サンプル
CREATE TABLE T_sample
(
      NET   DOUBLE  NOT NULL
    , 内作  DOUBLE  NOT NULL
    , 外注  DOUBLE  NOT NULL
);

[データ例]
 NET   内作  外注
-----------------------
 319192  700   46.5
 
SELECT NET
     , 内作
     , 外注
     , oh0729( 内作, 外注, NET ) As 全桁文字
FROM T_sample 
WHERE NET = 319192 ;

[結果]
 NET  内作  外注       全桁文字
------------------------------------------------------
 319192 700   46.5  2.3387177623499335822952956

投稿日時: 21/07/18 13:09:26
投稿者: おーさん0729

 mayu.さんありがとうございます!
 
試してみます!

投稿日時: 21/08/15 13:06:14
投稿者: おーさん0729

解決済みにできていなかったので。