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

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

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

You are not logged in.

Announcement

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


#1 2013-12-18 10:38:09

あると
Guest

テキストファイルのインポート

Win8、FM12

テキストファイルのインポート、出来ないかもしれないのですが。
タブ区切りやカンマ区切りではなく、改行で行われた場合、どうやって取り込みすれば良いでしょうか?


-----------------
ID:
商品名:
日付:
備考:
-----------------
となっています。
インポートしようとしても、1行目のみしか取れません。

タブ区切り(投稿でタブが使えないので、スペースで代用)
ID:  商品名:  日付:  備考:
カンマ区切り
ID:,商品名:,日付:,備考:
このようであれば。出来るのですが、そうなってないテキストファイルでしたので。

よろしくお願いします。

#2 2013-12-18 11:23:30

チポ
Member

Re: テキストファイルのインポート

1行が1レコードになりますよね。

別テーブルにインポートして加工すればいいのでは。

Offline

#3 2013-12-18 11:31:30

あると
Guest

Re: テキストファイルのインポート

>1行が1レコードになりますよね。
>別テーブルにインポートして加工すればいいのでは。
1行1レコードになってました。
加工とは、どのようにすれば良いのでしょうか?

#4 2013-12-18 11:41:45

keima
Member

Re: テキストファイルのインポート

インポートする前に加工しておいた方が簡単かと。

エディタで "¶商品名:" を  ",商品名:" のように置換を3度する。

もしくはFMで変換するのなら、フィールドをふたつ
、ひとつめにテキストファイル全部を選択しコピペ。
ふたつめのは計算で、式は
Substitute ( フィールド ; [ "¶商品名:" ;  ",商品名:" ] ; [ "¶日付:" ; ",日付:" ] ; [ "¶備考:" ; ",備考:" ] )
変換したテキストを全部選択しメモ帳にコピペ、保存。
それをFMにインポート。

Offline

#5 2013-12-18 11:51:11

チポ
Member

Re: テキストファイルのインポート

一例です

4レコードごとに同じIDを振って、
インポートを4回。

1回目はIDのレコードだけを新規に
2,3,4回はIDの照合で、各フィールドに。

スクリプトにすればクリック1回だけです。

Offline

#6 2013-12-18 12:19:42

あると
Guest

Re: テキストファイルのインポート

お返事いただき、ありがとうございます。

keimaさんへ
>もしくはFMで変換するのなら、フィールドをふたつ、ひとつめにテキストファイル全部を選択しコピペ。
出来ましたが、かなり手間ですね。ミスも起こしやすそう。でも、こういう方法もあるのですね。勉強になります。
テキスト→(コピペ)→FM→変換→(コピペ)→テキスト→(インポート)→FM

チポさんへ
IDは、手動で割り当てでしょうか?
インポート時に、自動でいれるのは出来ないのでしょうか?

手動で行わずに出来ないかと思っております。

#7 2013-12-18 13:45:35

チポ
Member

Re: テキストファイルのインポート

インポート用のテーブルで計算フィールドを作り、
  Div ( レコード番号 - 1 ; 4 ) + 1
これで、4レコードごとに同じ番号が振られます。

Offline

#8 2013-12-18 15:39:26

variant
Guest

Re: テキストファイルのインポート

インポート用のグローバルフィールドを1個作る。計算値自動入力既存値置き換え
Let ( [
s = Substitute ( Self ; ":" ; ¶ ) ;
$field = GetValue ( s ; 1 ) ;
value = GetValue ( s ; 2 ) ;
$set = Evaluate ( "Let($" & $field & "=" & Quote ( value ) & " ; $field = \"備考\" )" )
] ;
Case ( $set ; 1 )
)

ID以下データの入るフィールドは計算値自動入力
Case ( インポート用 ; Evaluate ( "$" & GetValue ( Substitute ( GetFieldName ( Self ) ; "::" ; ¶ ) ; 2 ) ) )

データがそろった時点(例では4行目の備考の行)で全フィールドに入るようになるので、
どれかのフィールドを空欄禁止・常時にするとインポート時に自動削除される。

#9 2013-12-19 11:40:56

あると
Guest

Re: テキストファイルのインポート

チポさんのは、
フィールド:レコード番号、入力自動化、シリアル番号を増加1
フィールド:先のレコード番号フィールドを、チポさんの式に当てはめる。
で、こちらの方は出来ました。

variantさんの方は・・・難しいですね。
ここまで書いていただけていれば、出来そうな気もするのですが、なかなか。
頑張ります。

#10 2013-12-19 12:02:22

variant
Guest

Re: テキストファイルのインポート

例がフィールド4個だったので作ってみましたけど、全部のフィールドに計算値自動入力を(同じ式ですが)設定しないといけないので、面倒なだけかも。
$フィールド名という変数に順次保存しておいて、備考の行が出てきた時にフィールドに入る仕組みです。
テーブルを作ればあとはインポートするだけなので、スクリプトは1行で済む。

#11 2013-12-26 10:19:01

あると
Member

Re: テキストファイルのインポート

なんとか、運用出来るようになりました。動作確認に手間取りまして、返事が遅くなりました。
みなさまには、お返事いただきありがとうございます。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 564.09 KiB (Peak: 568.98 KiB) ]