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

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

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

You are not logged in.

Announcement

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


#1 2023-03-10 22:30:27

ひろひろ
Guest

データーを抜き出し、レコード作成

お世話になります。
アドバイスいただけたら幸いです。

『12345002023/03/10005000工場A』これがデーターの一つの塊で、このような様式で
データーがあり、複数あるときは、(□はスペースです)
一つのテキストファイルに
12345002023/03/10005000工場A□□□□□□67890002023/0310002500工場B
・・・・・と続きます。

このデーターを読み込み、

テーブル名:データー

レコードIDフィールド           管理IDフィールド      日付フィールド    数値フィールド      所属フィールド
        1                                      12345           2023/03/10            5000              工場A
        2                                      67890           2023/03/10            2500              工場B

上記のような感じで、
一つのテキストファイルから、一つのデーターの塊を一つのレコードとして作成することができるのでしょうか?
よろしくお願いいたします。

#2 2023-03-10 23:42:45

Shin
Member

Re: データーを抜き出し、レコード作成

データの区切りのスペースが必ず入るのでしたら、
Let (
[
    txt = データ ;
    s = 1 ;
    e = 5 ;
    txt = Substitute ( txt ;[ “ “ ; Char(1) & Char(2) ];[ Char(2) & Char(1) ; “” ];[ Char(1) & Char(2) ; ¶ ]) ;
    txt = GetValue ( txt ; Get ( レコード番号 ) )
] ;
    Middle (  txt ; s ; e )
)
この式を、管理IDフィールド  の自動入力の計算式に設定しておきます。
日付フィールド  では、
    s = 8 ;
    e = 17 ;
数値フィールド  では
    s = 18 ;
    e = 23 ;
所属フィールド では
    s = 24 ;
    e = 33 ;
に設定し、全レコードを対象外にした上で、必要なだけ新規レコードを作ります。
または、同じような事をスクリプトで行ってもいいでしょう。

Last edited by Shin (2023-03-11 14:04:31)

Offline

#3 2023-03-11 07:59:15

himadanee
Guest

Re: データーを抜き出し、レコード作成

管理IDの後ろ、と数値の前、に00が入ってるのが気になります。数値の桁数が違う場合はどうなのか?実は0でなくスペース?
行区切りのない固定長データのような気がしますが...

#4 2023-03-11 08:25:58

ひろひろ
Guest

Re: データーを抜き出し、レコード作成

Shinさま、
アドバイスありがとうございます。
現時点では、内容はさっぱり理解できておりませんが、
filemakerでできるということは、理解できました。
アドバイスをもとに、勉強していきます。
ありがとうございます。

#5 2023-03-11 08:28:28

Shin
Member

Re: データーを抜き出し、レコード作成

固定長データだと、漢字が混じるのが面倒ですね。

Offline

#6 2023-03-11 08:32:26

ひろひろ
Guest

Re: データーを抜き出し、レコード作成

himadaneeさま、
その00は00です。
これは、管理IDですが、実際に管理IDフィールドに取り込んでも管理IDフィールドでの計算で消すことができると思いましたので、書き込んではいません。
生データは『12345002023/03/10005000工場A』です。
桁数が変わるかもしれない箇所は工場Aの前の005000です。あと、工場Aの部分です。
1234500の文字数は変わらず、2023/03/10の文字数も変わりません。
「行区切りのない固定長データ」と仰っておられますが、その意味すらわからないスキルです。

#7 2023-03-11 08:37:45

ひろひろ
Guest

Re: データーを抜き出し、レコード作成

Shinさま、

Shin wrote:

固定長データだと、漢字が混じるのが面倒ですね。

とのことですが、よくわかりません。スキルがありません、
漢字が混ざって難しいのであれば、
管理IDでリレーションして所属フィールドを引っ張ってくればいいかと考えてます。
だとすれば、
レコードID、管理ID、日付、数値フィールドを抜き出せば
いいのではと今思いました。

#8 2023-03-11 08:46:19

Shin
Member

Re: データーを抜き出し、レコード作成

元データが、JISでのバイト長の固定の可能性があります。
FMはUnicodeを使っているので、バイト長という概念がありません。テキストの長さをみるときに、例えば、 aあ は2文字ですのでFMは2と判断しますが、JISでは3バイトと数えます。(あ が2バイト文字、文字によっては、1文字4バイトのものもあります)ですから、一旦JISへ変換して、そこで切り分けて、戻してくる必要があります。今回は、最後の工場名だけのようですので、比較的楽ですが。

Offline

#9 2023-03-11 08:51:52

ひろひろ
Guest

Re: データーを抜き出し、レコード作成

Shinさま、
データーは
Unicode UTF-8 です。
そこのところの違いなどもさっぱり知識はありません。

#10 2023-03-11 08:59:03

Shin
Member

Re: データーを抜き出し、レコード作成

元データの話ではなくて、FM内部の話です。インポート(データフィールドに格納)した時点で、コードが変換されています。

Offline

#11 2023-03-11 09:15:21

himadanee
Guest

Re: データーを抜き出し、レコード作成

最後の所属フィールド以外は固定長で問題なさそうなので、「データの区切りのスペースが必ず入る」かどうか、だけ気にすればいいのかな。
スペースが1個じゃないので、そこも固定長の感じですが、たまたまデータが長くてスペースが入らない場合があるのかどうか、その場合には区切り位置の判定が多少面倒になります。
元データの生成ソフトや、そのデータ仕様が公開されてますか?

#12 2023-03-11 10:10:35

ひろひろ
Guest

Re: データーを抜き出し、レコード作成

Shinさま、

Shin wrote:

元データの話ではなくて、FM内部の話です。インポート(データフィールドに格納)した時点で、コードが変換されています。

理解しました。

#13 2023-03-11 10:14:40

ひろひろ
Guest

Re: データーを抜き出し、レコード作成

himadaneeさま、

himadanee wrote:

元データの生成ソフトや、そのデータ仕様が公開されてますか?

生成ソフトはわかりません、データーの仕様もわかりませんが、
LPWAで取得し、おそらくデコードされたデータではないかと思います。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 568.13 KiB (Peak: 584.67 KiB) ]