(現在 過去ログ33 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5147 / inTopicNo.1)  外部dbで数値型は
  
□投稿者/ 尾形 -(2009/09/27(Sun) 11:15:05)
    すいません、またよろしくお願いします
    MySQLです

    [金額]のデータ型にDOUBLE型を指定しました
    伝票で銭単位まで計算する所があるためです
    銭単位まで積み上げて請求時に清算します

    桐の外部db定義で確認すると「実数型」と表示されます
    桐のヘルプで
    >実数型の演算は、常に誤差が生じる可能性があるため、
    >お金などの数値を扱うデータ型としては適しません
    とあります
    心配なのですが、ダメなのでしょうか

    桐でいうところの「数値型」にしたいのですが
    外部dbでは何型を指定すればよいのでしょうか?


引用返信 [メール受信/OFF] 削除キー/
■5149 / inTopicNo.2)  mysql データ型で検索しました
□投稿者/ 今村 誠 -(2009/09/27(Sun) 12:49:39)
    アンパック浮動小数点型
    アンパック浮動小数点型は下記の1種類があります。アンパックとは、各桁の数字を1文字ずつ文字列として格納される型です。その為、正確な演算を行うことが出来ます。(浮動小数点型のfloatやdoubleは誤差が生じる)。

    型名 サイズ 説明 別名
    decimal スケールが0の時は精度+1バイト。
    スケールが0以外の時は精度+2バイト Doubleと同じ(ただし、精度とスケールに指定した範囲に制限される) dec, numeric, fixed

    アンパック浮動小数点型にも"符号有り"と"符号無し"の指定が可能です。符号無しの場合は「decimal unsigned」のように型名の後に「unsigned」を付けて型を指定します。

    アンパック浮動小数点型には精度とスケール、又は精度のみでも指定できます。例えば精度を「4」スケールを「1」とする場合は「decimal(4, 1)」のように型名の後ろに括弧をつけて(精度, スケール)のように指定します。スケールを省略した場合は「0」となります。

    型名(精度)
    型名(精度, スケール)
    以上です。

引用返信 [メール受信/OFF] 削除キー/
■5151 / inTopicNo.3)  Re[2]: mysql データ型で検索しました
□投稿者/ 尾形 -(2009/09/27(Sun) 13:13:03)
    どうも、ありがとうございます

    よく分からないのですが
    下2桁程度で細かい小数点以下の計算しなければ
    気にはなくていいという事でしょうか?

    > 型名(精度)
    > 型名(精度, スケール)
    精度はいくつにすればいいのでしょうか
    適当に好みでいいの?

引用返信 [メール受信/OFF] 削除キー/
■5153 / inTopicNo.4)  Re[3]: mysql データ型で検索しました
□投稿者/ うにん -(2009/09/27(Sun) 14:07:54)
    > 下2桁程度で細かい小数点以下の計算しなければ
    > 気にはなくていいという事でしょうか?

    桐も精度16桁なのでdoubleで十分では。

    >>型名(精度)
    >>型名(精度, スケール)
    > 精度はいくつにすればいいのでしょうか
    > 適当に好みでいいの?
    好みというか必要なサイズですよね。銭までというので小数部2桁ですね。
    ただ、桐には固定小数がないから小数部固定しても意味なさそうだけど。
    むやみに高精度にしても桐からアクセスできませんし。
引用返信 [メール受信/OFF] 削除キー/
■5155 / inTopicNo.5)  Re[4]: mysql データ型で検索しました
□投稿者/ 尾形 -(2009/09/28(Mon) 06:49:38)
    どうも、ありがとうございました

    いまいち良く理解していませんが
    気にしなくていいようですね
    どうもありがとうございました


解決済み!
引用返信 [メール受信/OFF] 削除キー/
■5157 / inTopicNo.6)  Re[5]: mysql データ型で検索しました
□投稿者/ hidetake -(2009/09/28(Mon) 07:48:15)
    > 気にしなくていいようですね

    それぞれの型で (0.4 - 0.3) - 0.1 でもやってみてはいかがでしょう!?

    PostgreSQL だったら
    select ((0.4::numeric - 0.3::numeric) - 0.1::numeric);
    select ((0.4::double precision - 0.3::double precision) - 0.1::double precision);

引用返信 [メール受信/OFF] 削除キー/
■5158 / inTopicNo.7)  Re[6]: mysql データ型で検索しました
□投稿者/ 今村 誠 -(2009/09/28(Mon) 08:15:57)
    2009/09/28(Mon) 11:36:29 編集(投稿者)

    mysqlだと下記の用にすれば追加されます。

    ALTER TABLE Ogata ADD TANKA DECIMAL(25,4);

    でも桐では実数型にしか変換できませんでした。

    my.ini
    を下記のように編集したら文字化けはなくなりました。

    [client]
    port=3306
    default-character-set=sjis
    [mysqld]
    default-character-set=sjis
    skip-character-set-client-handshake
    character-set-server = sjis
    collation-server = sjis_general_ci
    init-connect = SET NAMES sjis
    [mysql]
    default-character-set=sjis
    [mysqldump]
    default-character-set=sjis

引用返信 [メール受信/OFF] 削除キー/
■5159 / inTopicNo.8)  Re[6]: mysql データ型で検索しました
□投稿者/ hidetake -(2009/09/28(Mon) 08:35:08)
    >>気にしなくていいようですね
    >
    > それぞれの型で (0.4 - 0.3) - 0.1 でもやってみてはいかがでしょう!?
    >
    > PostgreSQL だったら
    > select ((0.4::numeric - 0.3::numeric) - 0.1::numeric);
    > select ((0.4::double precision - 0.3::double precision) - 0.1::double precision);
    >

    PostgreSQL の型キャストは SQL準拠のものと、昔から使われている
    固有(::)の方式があるけど、MySQL も CAST 関数は使えるようですね。

    だから
    select ((CAST(0.4 AS numeric) - CAST(0.3 AS numeric)) - CAST(0.1 AS numeric));
    select ((CAST(0.4 AS double precision) - CAST(0.3 AS double precision)) - CAST(0.1 AS double precision));
    とでもやってみる。

引用返信 [メール受信/OFF] 削除キー/
■5160 / inTopicNo.9)  Re[7]: イベントバグ?
□投稿者/ 尾形 -(2009/09/28(Mon) 11:54:39)
    どうも、ありがとうございます

    当方環境
    MySQL5.1 (mysql-5.1.38-win32.msi)
    ODBC3.51 (mysql-connector-odbc-3.51.27-win32.msi)


    MySQL環境が試せる方下記をお試しいただけませんか

    外部dbに接続します
    フォーム定義画面からイベント定義画面に入ります
    (以下、イベント定義編集画面での操作です)
    行挿入モードに入ります
    表示モードに戻そうとすると、必ず桐がハングします
    行訂正モードから表示モードの時はハングしません

    外部dbに接続していない状態では、いずれもハングしません
    再現性があります




引用返信 [メール受信/OFF] 削除キー/
■5161 / inTopicNo.10)  Re[6]: mysql データ型で検索しました
□投稿者/ うにん -(2009/09/28(Mon) 12:03:30)
    >>気にしなくていいようですね

    桐から書き出ししたら全部doubleで正しい値だったので気にしてなかったけど、

    > それぞれの型で (0.4 - 0.3) - 0.1 でもやってみてはいかがでしょう!?

    外部DBで計算項目を作ったら計算がサーバ上で行われて誤差が丸見えに。が〜ん。
    計算項目は要注意ですね。

    数年前、「pgでは文字列系は全部text数値系は全部numericでいい」と自分なりに調査したのだがすっかり忘れていた。
    桐って10進演算だったのかな?
引用返信 [メール受信/OFF] 削除キー/
■5162 / inTopicNo.11)  Re[8]: イベントバグ?
□投稿者/ 今村 誠 -(2009/09/28(Mon) 12:23:51)
    2009/09/28(Mon) 12:44:04 編集(投稿者)

    尾形さんこんにちは
    > 外部dbに接続します
    > フォーム定義画面からイベント定義画面に入ります
    > (以下、イベント定義編集画面での操作です)
    > 行挿入モードに入ります
    > 表示モードに戻そうとすると、必ず桐がハングします
    > 行訂正モードから表示モードの時はハングしません

    確認ですが、イベントファイルもmysqlに接続して保存すると言うことですか
    私はテーブルだけをmysqlに保存してフォームやイベントはローカルで
    管理すると思っていました。
    先程いちいちdosプロンプトが煩わしかったのでイベントのメイン部に
    印字コマンドを使い、シェル実行させてmysqlを起動するコマンドを
    書きました。
     同じフォームのイベントファイルを再定義で編集していますが、
    再現しません。
     フォームの再定義中にハングアップするのは、mysqlの影響でなく
    桐の作業フォルダーに原因があると思います。
    ツール→フォルダー→高度な設定→作業ファイルの場所
    があるので、ここのフォルダー以下の部分のファイルを
    全て削除したらよいと思います。

    ps ただいま再現しました。(^_^)
    参照表に指定してイベントファイルを開き追加はうまくいったのですが
    ESCを押したらいきなり反応無しになりました。


引用返信 [メール受信/OFF] 削除キー/
■5163 / inTopicNo.12)  Re[7]: mysql データ型で検索しました
□投稿者/ hidetake -(2009/09/28(Mon) 12:50:00)
    2009/09/28(Mon) 13:01:29 編集(投稿者)

    > 計算項目は要注意ですね。

    計算項目の意味を取り間違えているかも知れませんが、
    実数型のデータを桐で計算するときも(そのまま取り
    だして計算)誤差は出ませんか?

    [data1double] = 0.4
    [data2double] = 0.3
    [data3double] = 0.1
    で、変数管理で下記を計算式に入れ計算。

    ([data1double]-[data2double])-[data3double]

    (#num([data1double])-#num([data2double]))-#num([data3double])
    での結果の違い。ほかにも置換などでも・・・

引用返信 [メール受信/OFF] 削除キー/
■5164 / inTopicNo.13)  Re[9]: イベントバグ?
□投稿者/ 尾形 -(2009/09/28(Mon) 12:54:10)
    どうも、こんにちは

    > テーブルだけをmysqlに保存してフォームやイベントはローカルで
    > 管理すると思っていました。
    もちろんそうです
    ていうかそれしか出来ないと思います (^^;

    外部dbを定義します(データソース名のみ保存。パスワードは保存しない設定)
    その外部dbを編集対象表に持つ、フォームを作成
    フォーム開始イベントを設定
    フォームとイベントを一度保存する
    フォームを再定義モードで開く
    (その時db接続パスワード等を聞いてきたら入力して接続する)
    マウス右クリックからイベント定義に入る
    (ここからはkev再定義画面)
    行挿入
    表示

    これで桐がハングしないですか?

    tempフォルダは削除しました

引用返信 [メール受信/OFF] 削除キー/
■5165 / inTopicNo.14)  Re[10]: イベントバグ?
□投稿者/ hidetake -(2009/09/28(Mon) 13:08:50)
    > これで桐がハングしないですか?

    PostgreSQL 8.1 相手でも「応答なし」になってしまいますよ!

    自分は、桐のエディタでイベントを書くことはほとんど無いので
    特に困った覚えはありませんが。 (^^;

    # 他にも「応答なし」になるパターンは(外部DB以外でも)あった
    # ように思うけど、だいたい定義・再定義時だから逃げようが
    # あろうかと思います。

引用返信 [メール受信/OFF] 削除キー/
■5168 / inTopicNo.15)  Re[8]: mysql データ型で検索しました
□投稿者/ うにん -(2009/09/28(Mon) 14:15:57)
    >>計算項目は要注意ですね。
    >
    > 計算項目の意味を取り間違えているかも知れませんが、

    外部DB定義での計算項目です。

    > 実数型のデータを桐で計算するときも(そのまま取り
    > だして計算)誤差は出ませんか?

    もちろん出ますね。ただ、外部DB以外ではそもそも実数型を使わないので。

    外部DBで全置換するときは、外部表の項目値だけを使った[d1]-[d2]みたいな
    計算式でも行数分のUPDATEが送られていて設定する値は桐が計算していた...

    > [data1double] = 0.4
    > [data2double] = 0.3
    > [data3double] = 0.1
    > で、変数管理で下記を計算式に入れ計算。

    一括処理などで外部DBの項目値を計算に使うときは型変換した方がいいってことですね。

    ところで、私のとこではpgsqlもmysqlも0.4-0.3では誤差が出ないのですが?
    適当に乱数値で色々見たら0.83-0.78で誤差が出てます。
引用返信 [メール受信/OFF] 削除キー/
■5169 / inTopicNo.16)  Re[9]: mysql データ型で検索しました
□投稿者/ hidetake -(2009/09/28(Mon) 14:28:43)
    > ところで、私のとこではpgsqlもmysqlも0.4-0.3では誤差が出ないのですが?
    > 適当に乱数値で色々見たら0.83-0.78で誤差が出てます。

    あれ? うちでは PostgreSQL 7.2 でも 8.1 でも
    上記項目を使った計算式でも
    select ((CAST(0.4 AS double precision) - CAST(0.3 AS double precision)) - CAST(0.1 AS double precision));
    でも、結果は 0 にはならないのだけれど。


    > 一括処理などで外部DBの項目値を計算に使うときは型変換した方がいいってことですね。

    てか、最初から numeric (decimal) を使うべきかと。

引用返信 [メール受信/OFF] 削除キー/
■5170 / inTopicNo.17)  Re[10]: mysql データ型で検索しました
□投稿者/ うにん -(2009/09/28(Mon) 15:50:36)
    >>ところで、私のとこではpgsqlもmysqlも0.4-0.3では誤差が出ないのですが?
    >>適当に乱数値で色々見たら0.83-0.78で誤差が出てます。
    >
    > あれ? うちでは PostgreSQL 7.2 でも 8.1 でも
    > 上記項目を使った計算式でも
    > select ((CAST(0.4 AS double precision) - CAST(0.3 AS double precision)) - CAST(0.1 AS double precision));
    > でも、結果は 0 にはならないのだけれど。

    結果が分かりやすいように3数字でやってたんですね。。。
    0.4-0.3は0.1になってましたが、さらに-0.1したらこっちでも0になりませんでした。
    0.83-0.78だと2数字で0.0499999999999998になります。

    >>一括処理などで外部DBの項目値を計算に使うときは型変換した方がいいってことですね。
    >
    > てか、最初から numeric (decimal) を使うべきかと。

    その方がいいですが、書き出しした表はdoubleになっちゃうのです。
    新規にしなければいいのか。。。横着しちゃいけませんね。。。

引用返信 [メール受信/OFF] 削除キー/
■5171 / inTopicNo.18)  Re[10]: イベントバグ?
□投稿者/ 今村 誠 -(2009/09/28(Mon) 17:21:04)
    尾形さんこんにちは私は初めて外部データベースを触った
    のですが、結合表でもそうですが、全てを選ぶと確かに
    簡単に項目名が取り込まれて、表形式編集が出来て、
    ワンタッチフォームを選ぶと、行挿入なども出来るように
    成ります。
    しかし項目名などがmysqlのデータベース名が前に付いて
    何かと不便ではないかと思います。
    表の設計をしっかりすれば再定義も少なくなると思うので
    一度桐で表を作成してイベントを作る時はその表を参照表
    や編集表にして定義したら良いのではないでしょうか。

    外部データベースを使う場合、1)項目名に日本語はダメとか
    2)日本語の方が良いや、3)主キーには数値だけで日時は
    ダメとか、4)主キーは項目の組み合わせでいいよや、
    5)桐のように計算項目も作れるよ
    の様なことはご存じでしょうか。



引用返信 [メール受信/OFF] 削除キー/
■5172 / inTopicNo.19)  Re[11]: イベントバグ?
□投稿者/ 尾形 -(2009/09/28(Mon) 17:41:16)
    どうも、いつも色々とすいません

    > PostgreSQL 8.1 相手でも「応答なし」になってしまいますよ!
    そうなのですね
    ていうか、すごい初歩的な段階で
    つまづいたので心配になってきました

    サポートに連絡したけど「開発にまわしました」で終わりだし
    次のリビジョンアップ?はいつになるとこやら

    実数型の誤差の方はよく読んで勉強させていただきます

引用返信 [メール受信/OFF] 削除キー/
■5173 / inTopicNo.20)  Re[11]: mysql データ型で検索しました
□投稿者/ うにん -(2009/09/28(Mon) 19:49:22)
    > >>一括処理などで外部DBの項目値を計算に使うときは型変換した方がいいってことですね。
    >>
    >>てか、最初から numeric (decimal) を使うべきかと。
    >
    > その方がいいですが、書き出しした表はdoubleになっちゃうのです。
    > 新規にしなければいいのか。。。横着しちゃいけませんね。。。

    numericだったとしても、外部DBでは数値型や通貨型を選択できませんからやっぱり同じことですね。
    外部DBと関係なく桐の実数型も0.4-0.3-0.1が0にならないので。

    しかし何で全部実数になるんだろ?
    ODBCにintegerとdoubleしかなかった時期とかあったのかなあ?

引用返信 [メール受信/OFF] 削除キー/

次の20件>

トピック内ページ移動 / << 0 | 1 >>

[このトピックに返信]
Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -