みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FileMaker Pro Advanced 18
OSはWindows7です。
タイトルの通り「URLを開く」スクリプトステップでフォルダを開きたいのですが、URLを指定する計算式のことで困っています。
商品を管理する番号(管理番号)を手掛かりにフォルダを特定するようにしたいです。
例えば、「12345」という番号の商品は「C:\Users\ユーザー名\Desktop\商品\12301_12400\12345」というフォルダに入っています。
「変数を設定」スクリプトステップで、「$pathleft=Left(管理番号;3)」として123を抽出、「$path01=$pathleft & "01"」として「12301」を導き、
「URLを開く」スクリプトステップには「"C:\Users\ユーザー名\Desktop\商品" & "\\" & $path01 & "_" & path01+99 & "\\" & 管理番号」
とすることでフォルダを開けるようになりました。
しかし、商品の中には異なる管理番号が与えられていても共通するパーツがある場合にはフォルダをまとめているものがあり、
例えば「23456」という商品は「34567」と同一のパーツを持つ為ひとまとめにして「23456_34567」というフォルダに格納されています。
その場合のフォルダパスは「C:\Users\ユーザー名\Desktop\商品\23401_23500\23456_34567」となります。
こうなると上記の計算式ではフォルダを開くことができません。また、同一パーツが複数にわたることもあり、その場合「23456_34567_45678」のように増えていきます。
基本的にはひとつの商品には管理番号ひとつが与えられているので、8~9割は上記の計算式で対応可能なのですが、このようなイレギュラーにもできれば対応したいです。
どのような計算式であれば対応可能でしょうか。ご教示お願い致します。
>#1『商品の中には異なる管理番号が与えられていても共通するパーツがある場合にはフォルダをまとめている』
・そのためには、「商品」と「管理番号」との関連付け要素データが必須です。ありますか?
・また、共通[子]フォルダ「23456_34567_45678」と[親]フォルダ「23401_23500」の生成ロジック(代表順位付け?)も必要です。
Offline
フォルダーの中身と、管理番号を管理するテーブルを作るしかないのでは。
Offline
23456_34567
23456_34567_45678
これらが管理番号になっているのでしょうか?
でなければどのようにフォルダが決定出来るのでしょうか?
また、
23456_34567
この上の階層は、前の数字から得る
でいいのでしょうか?
さらに、
23456_34567_45678
この上の階層のフォルダの規則性は?
このような場合、
全てのケースに対応できる規則性を明示する必要がありますよ。
Offline
ひょっとして、
「C:\Users\ユーザー名\Desktop\商品\23401_23500\23456」
というフォルダーが、
「C:\Users\ユーザー名\Desktop\商品\23401_23500\23456_34567」
に変更され、さらに、
「C:\Users\ユーザー名\Desktop\商品\23401_23500\23456_34567_45678」
に変更される、という事ですか。
そうならば、命名規則を変える方がいいですよ。
Last edited by Shin (2019-07-10 15:49:52)
Offline
皆様回答有難うございます。
説明が足りず申し訳ありません。
管理番号は5桁の数字のみで構成されています。
「23456_34567」フォルダには、「23456」と「34567」の商品が格納されており、上の階層は「23401_23500」フォルダになります。
このような場合、若い番号の場所に格納するルールがあるため、「34501_34600」フォルダの中には、「34567」というフォルダは存在しません。
Shinさんの仰るように、新しい注文が来たとき既存のパーツを流用できる場合にこのような命名になるため、複雑になっている節がありますね。
命名規則の変更から考え直すべきかもしれません。
とりあえず、管理番号と商品名を管理する商品マスタテーブルがあるので、そちらにパーツを流用している商品の管理番号を入力するフィールドを作って、関連付けを行おうと思います。
直接の回答ではありませんが.....
PowerShell で以下のようにするとフォルダの検索が可能です。
$Dir="D:\!TEMP";
get-childitem -Name -Directory "*34567*" $Dir -Recurse;
FileMakerから実行する場合、
Event を送信 で
"powershell -Command \"$Dir='D:\!TEMP';(get-childitem -Name -Directory '*34567*' $Dir -Recurse)|clip;\""
このようにすると、見つかったフォルダパスが、クリップボードに保存されます。
※フォルダが多い場合、検索に時間がかかります。
参考:
以下戻り値をクリップボードで受ける以外の方法
FileMaker cmd.exe dirコマンドを実行して戻り値を取得。あれこれ。
https://qbxxdp.blogspot.com/2017/04/fil … e-dir.html
FileMaker PowerShell と連携、戻り値取得。cmdコマンドを実行。プラグイン不要
https://qbxxdp.blogspot.com/2017/03/
Last edited by qb_dp (2019-07-10 18:13:17)
Offline
ありがとうございます。
ひとまず、管理番号2つまで対応することができました。
Powershellについては不勉強なため、勉強して使えそうなら利用していこうと思います。
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 520.78 KiB (Peak: 525.69 KiB) ]