みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMS19とFMP19でWindows環境、ServerはMACMini(Ventura13.1)の構成です。
サーバにあるPDFを「Eventを送信」で表示しています。
実際の計算式は下記です。
"\\\SERVER01\Documents/111\\" & 受注伝票::図番 & ".pdf"
ここで、格納してあるPDFが図番の数字の後ろに品名を書いたものにしているのです。
たとえば、
123-45678取付金具.pdf
です。
あいまい検索の「*」をつけて
"\\\SERVER01\Documents/111\\" & 受注伝票::図番 & "*.pdf"
としましたが、うまくいきません。
ファイル名から品名の文字を無視して表示したいのです。
やっかいなことに、図番は桁数がまちまちです。また頭に英文字がはいることがあります。
PDFの表示の続きです。
Offline
*を解釈するのはコマンドプロセッサの機能なので、こんな感じでできるようです。
"cmd /c for %f in (d:\fmp\*" & 受注伝票::図番 & "*.pdf) do %f"
複数ファイルが見つかった場合に開くタイミングが遅いような気がするが、なんでかな。
エクスプローラで複数ファイルを選択して開くのと比べると、明らかに遅い...
できました。ただ、コマンドプロンプトの画面が開いたままです。これを閉じるのはどうするのでしょうか。
Offline
PDFをおいているServerのフォルダを指定するように変えてみました。
"cmd /c for %f in (\\\SERVER01\Documents/111\*" & 受注伝票::図番 & "*.pdf) do %f"
これだと、コマンドプロンプトは開くのですが、PDFが開きません。なにがわるいでしょうか
Himadaneeさんが書いておられる "cmd /c for %f in (d:\fmp\*" のfmp\の後ろのアスタリスクはなにを意味するのですか?
Offline
できました。
"cmd /c for %f in (\\\SERVER01\Documents\111\\" & 受注伝票::図番 & "*.pdf) do %f"
バックラッシュの前にもう一つつけくわえました。ただ、もう一度ひらくと一つになっています。でもこれでできました。
Offline
>fmp\の後ろのアスタリスク
「頭に英文字がはいることがあります」というのを、ファイル名の先頭が図番で始まらない場合があるのかと思って付けましたが、図番自体の頭に英文字が入ってるという意味なら、不要です。
*の意味わかりました。図番自体に英文字は入っています。まったくコマンドプロんプトの意味がわからないまま、コピーさせてもらっています。%f はどういう動作なんでしょうか?
コマンドプロンプトの画面も開いてしまうのはしかたありませんか。
Offline
「対象アプリケーションを手前に表示」をオフにすれば、見えないと思いますが、
Eventで実行しているのはコマンドプロンプトなので、開くこと自体は仕方ないですね。(そのコマンドプロンプトが、PDFを開く)
%fは「for」コマンドのヘルプを見ればわかるかな。
プロンプトで
for /?
#2で「遅い」と書いてましたが、PDFのアプリが実行したままでやってましたが、実行されてない状態でスクリプトを実行するとファイルを1つ開くたびにアプリを閉じるまで止まってしまいますね。(アプリによる?)
実際には1回のスクリプト実行で開くPDFは1つだけでしょうから、あまり関係ないかもしれませんが
for をつかってるせいなのかコマンドプロンプトが残ってるので、感じ悪いですね。
「ファイル名を取得」で直接ファイルを探してそれを実行した方がいいかなあ
https://fm-aid.com/bbs2/viewtopic.php?id=14995
ありがとうございます。受注伝票::図番 の図番が空白の場合を試したところ、
フォルダにあるPDFが次々とでてきてしまいます。
フォルダのほうに該当するPDFがない場合はなにも表示されないのですが、どういう動きなのでしょうか。
Offline
フィールド値が空白なら
*.pdf
を検索しますから、PDFがすべて表示されますね。
あぁ、なるほど。繰り返しをなくせばよいのでは。1回だけのコマンドにできませんか
Offline
コマンドを送る前に分岐すればいいです
Offline
ありがとうございます。分岐とは、どういう作業ですか
Offline
図番フィールドの内容で、スクリプトを分岐します
Offline
あ、なるほど。分岐はIF文でいいのかな。
Offline
下記のように作ってみました。Eventの送信を中止するのはどうするのですか?
If ( 受注伝票::図番閲覧用 = "" ; "" ;"cmd /c for %f in (\\\SERVER01\Documents\111\\" & 受注伝票::図番閲覧用 & "*.pdf) do %f")
Offline
それはIf関数です。
スクリプトステップのIf文で分岐です。
スクリプトステップのIF文分岐とは、ボタン設定のオプションのスクリプト引数ですか
Offline
あ、わかりました。Eventを送信」スクリプトの前でIf文で分岐すればいいのですね。
もう、頭がはれてました。
わかりました。完璧にできたと思います。
年の最後にながながとありがとうございました。
来年ばっちりできます。すっきりしました。
皆さん、よいお年を
Offline
ファイルを1つだけ検索する方法を考えてましたが、Powershellなら難しくないようでした。
"powershell -Command \"&{start ((Get-ChildItem -Path 'd:\fmp').FullName -Like '*" &
テーブル::t &
"*.pdf')[0]}\""
[0]の指定で、一致したもののうち最初の1つだけ開きます。
まだ多少手抜きがあって、フルパス(FullName)からフィールド値を検索しますから、フォルダ名やファイル名の途中で図番と一致するものがあるとそっちも見てしまいます。
これまた難しそうですぅ。
Offline
Pages: 1
[ Generated in 0.007 seconds, 12 queries executed - Memory usage: 555.68 KiB (Peak: 576.59 KiB) ]