みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
お世話になります。
FileMaker Pro 15 Advを使っています。
表題の通り、Get(ドキュメントパス一覧)で取得したテキストから、必要な行のみを取り出すにはどうすればいいのか思いつきません。
User/Documents/A/1.xls
User/Documents/A/2.xls
User/Documents/B/1.xls
User/Documents/B/2.xls
User/Documents/B/3.xls
上記のようなドキュメントパス一覧が得られたとします。
フォルダBの行のみを取り出して、順にインポートを行いたいです。
方法を教えていただけませんでしょうか。
よろしくお願いします。
Offline
ループ計算式で求める方法。
Let(
[
$lst=Get(ドキュメントパス一覧);
$key="/B/"; // ←検出"キーワード"を指定
$i=0;
$res="";
$fnc=
"Case($i=ValueCount($lst); $res;
Let([
$i=$i+1;
#itm=GetValue($lst; $i);
$res=List($res; Case(PatternCount(#itm; $key); #itm))
]; Evaluate($fnc))
)"
];
Evaluate($fnc)
)
Offline
【補足】
あぁ、
> 取り出して、順にインポートを行いたい
がお望みだから、スクリプト処理でないとダメでしたネ。
【スクリプト】
・変数を設定 [$variables; 値: Let([$lst=Get(ドキュメントパス一覧); $key="/B/"; $i=0 ]; "")]
・Loop
・ Exit Loop If [$i=ValueCount($lst)]
・ If [Let([$i=$i+1; $itm=GetValue($lst; $i)]; PatternCount($itm; $key))]
・ レコードのインポート [ダイアログなし; 「$itm」; 追加; シフト JIS]
・ スクリプトの一時停止/続行[制限時間なし]
・ End If
・End Loop
Offline
Hiro様
ありがとうございます。
とりあえず中間報告です。
2番めに示していただいた方法を組み込んでみました。
実行したところ、「B」を含むフォルダがカウントされてしまい、インポートするファイルが無いことでエラーになってしまいました。
ここをなんとかすべく色々試してみているところです。
引き続きよろしくお願いします。
Offline
お陰様で、フォルダがカウントされてしまう分も回避することができ、希望の動作ができるようになりました。
フォルダの回避には、$itmの右側1つ目の文字が/の場合は読み込みしないとしました。
Right ( $itm ; 1 )="/"
ありがとうございました。
Offline
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 509.2 KiB (Peak: 515.97 KiB) ]