A5:SQL Mk-2

開発のこと、日々のこと

SQLServerでMoney型の挙動が変&インポート時不具合

ホーム フォーラム A5:SQL Mk-2掲示板 SQLServerでMoney型の挙動が変&インポート時不具合

  • このトピックには1件の返信、2人の参加者があり、最後ににより6年、 5ヶ月前に更新されました。
2件の投稿を表示中 - 1 - 2件目 (全2件中)
  • 投稿者
    投稿
  • #193 返信
    pochi-p
    ゲスト

    いつも大変お世話になってます!

    接続先がSQLServerである場合で、Money型の表示&エクスポートが正しく行われない様です。
    またトランザクションを使用+データを空にしてインポートする場合も問題が出る様です。

    動作環境は次の通りです。
    ・SQLServer2014Express
    ・A5:SQL Mk-2 32bit edition Version 2.13.0 beta 27

    まず先に接続方法のパターンを列挙します。

    [1]専用接続 [Microsoft SQL Server と SQL Server Comapct]
    [2]汎用接続 [ADO (OLE DB, ODBC)] “SQL Server Native Client 11.0”
    [3]汎用接続 [ADO (OLE DB, ODBC)] “Microsoft OLE DB Provider for SQL Server”
    [4]汎用接続 [ADO (OLE DB, ODBC)] “Microsoft OLE DB Provider for ODBC Drivers” + [ODBC Driver 11 for SQL Server]

    ●接続方法[1]でMoney型の表示&エクスポートが上手くいかないです。

    一括エクスポート
    ・小数値の表示→小数部は無かった事とされて正しい値が出力されない。

    連続インポート
    ・小数部の値→DBに正しく書き込まれる。

    テーブルを開いて[データ]タブで閲覧・編集
    ・小数値の入力→DBに書き込まれる。テーブルの再読み込みをするまでは入力値も残る。端数切捨てがあった場合はDB値とズレが出てるが…。
    ・小数値の表示→小数部は無かった事とされて表示されない。
    ・CSVでエクスポート→[データ]タブの表示通り小数部は無かった事にされて正しい値が出力されない。

    接続方法[2][3][4]では上記の問題は出ませんでした。

    ●SQLServerでインポート時不具合
    接続方法[1][2][3][4]すべてで、インポート時のオプションが上手く動作しない様です。

    ・データベースツリーから[連続インポート]機能
    ・テーブルエディタで[テーブル]→[CSV/TSVインポート]

    上記のインポート処理のオプションで[テーブルを空にしてから読み込む]にチェックを付けた際に、同時に[トランザクション制御を行う]がチェックされていると(既存レコードがある場合に)削除がうまく動作していないようで主キー重複でインポート出来ませんでした。

    DELETE文(/TRUNCATE TABLE)自体は投げられている様なので、「INSERT担当とDELETE担当のトランザクションが別ものになっていて連携出来てない」とかかもしれません。

    接続データベースが専用接続のSQLiteやOracle(OCI経由)の場合は問題起きない様です。
    ADO系接続限定の問題かもしれません。

    #199 返信
    松原正和
    キーマスター

    pochi-pさんこんにちは。

    はい、現象を確認しました。Version 2.13系の問題のようですね。Version 2.12系でもADO接続だと、問題が起こるかもしれません。

    これは、SQL ServerのMoney型は金額型として認識されるのですが、日本国内では円は通常小数点を持たないので、小数点以下が丸められて扱われてしまうことに原因があるようです。

    修正したいと思いますので、しばらくお待ちください。

2件の投稿を表示中 - 1 - 2件目 (全2件中)
返信先: SQLServerでMoney型の挙動が変&インポート時不具合で#199に返信
あなたの情報:




コメントは受け付けていません。