初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-10-15 13:44:06

幸五郎
Member

ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

ODBC経由で数値フィールドにUPDATE文を行うと

100.0 だと 100 に更新されてしまい
0.4だと .4に更新されてしまいます。

その項目は画面上では100.0で登録すると、そのまま登録できます。

解決する方法、または更新後にスクリプトで一括で
数値フィールドの桁数を修正する方法を教えていただければありがたいです。
お願いいたします。

Offline

#2 2022-10-15 14:00:27

幸五郎
Member

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

環境書き忘れました。
FM19 Pro 、 WIN10
ODBC FM19_xDBC_19.4.1 64ビット

※最新のFM19_xDBC_19.5.1ではデータ取得をできなかったため、こちらを使用しています。

Offline

#3 2022-10-15 16:09:36

himadanee
Guest

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

FMの数字タイプのフィールドは任意のテキストを保存できますが、ODBC的には数値として扱うので数値しか入れられません。
100.0は100と同じですし、0.4も.4と同じです。

表示上の桁揃えは、レイアウトモードの数字書式でやるのが普通です。書式も含めてデータとしたいなら、テキストタイプにしてください。

#4 2022-10-15 16:50:21

幸五郎
Member

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

himadanee wrote:

FMの数字タイプのフィールドは任意のテキストを保存できますが、ODBC的には数値として扱うので数値しか入れられません。

その任意のテキストを"100.0"で保存した状態にスクリプトを用いて作成する事はできないでしょうか

Offline

#5 2022-10-15 17:32:48

Shin
Member

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

テキストフィールドに保村してそれをコピー、数値フィールドにペーストしてみる とか

Offline

#6 2022-10-16 08:47:50

himadanee
Guest

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

計算値自動入力(既存値置き換え)にしておけば、SQLで変更しても適用されるようです。
計算式は厳密な条件が不明なので切り捨てで小数第1位までの例ですと
Let(
n=Int(Self*10);
Replace(n;Length(n);0;".")
)

#7 2022-10-16 10:37:25

幸五郎
Member

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

皆様ご回答ありがとうございました。なんとかスクリプトで設定することができました。ありがとうございます!

Offline

#8 2022-10-16 10:44:41

Shin
Member

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

Let (
    n = Choose (
            Sign ( Log ( Self ) ) + 1 ;
            "0" & Int ( Self * 10 ) ;
            "10" ;
            Int ( Self * 10 )
        ) ;
    Replace ( n ; Length ( n ) ; 0 ; "." )
)
の方がいいでしょう。<1 の処理を追加しています。負数の処理はいれていませんが...

Last edited by Shin (2022-10-16 11:51:04)

Offline

#9 2022-10-17 09:16:00

himadanee
Guest

Re: ODBC経由で数値項目にインサートするとデータが抜け落ちてしまいます

ああ、負数はテストしたけど<1はテストしてませんでした。まあ条件が不明でしたので1例として書きましたが、0.4が例に上がってたので手抜かりでしたね...

いずれにしても、ODBCからはあくまでも「数値」しか入れられないので、「データが抜け落ちてる」わけではありません。
FM的に何でも入れたいならテキストにしないとだめでしょう。数値の可能範囲がFMとは違うのも要注意。(doubleなので通常の使用では問題ないでしょうけど)
「最新のFM19_xDBC_19.5.1ではデータ取得をできなかった」のが気になりますが、ドライババージョンとは関係なく、FMの数字フィールドに入ってるデータはそのまま取得できないケースはあります。

と書いてから確認のためODBC経由で自己インポートしてみたら、数字の先頭37文字までしか入らず「データが抜け落ち」になってしまった。なんじゃこりゃ?
37桁を超える数字だと違うデータになってしまう?
精度超過で切り捨てられるのを予想したのだが、40桁の整数が37桁になってしまった。う~~ん??

https://help.claris.com/ja/odbc-jdbc-guide.pdf
には、「FileMaker の数字フィールドタイプには、最小 10-308 から最大
10+308 の正または負の値を最大 15 桁まで含めることができます」と書いてありますが...
16桁以上入れてしまうと結果は無保証ってこと??

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 560.8 KiB (Peak: 579.28 KiB) ]