みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[Windows10] FileMaker Ver:[15]
「Eventを送信」で、他ソフトでcsvファイルを作成するexeファイルを実行させ、
その後に、作成したcsvファイルをインポートしたいと考えています。
現状では、csvファイルが作成される前に、インポートが実行されてしまい、ファイルがないとエラーが出ます。
自動的にcsvファイルが出来上がったのを確認し、その後、次のスクリプトに移る様な方法は何かないでしょうか?
ご教示いただければ幸いです。
よろしくお願いいたします。
Last edited by dds (2016-10-12 19:23:02)
Offline
>他ソフトでcsvファイルを作成するexeファイルを実行させ
そのファイルが、csvを書き出し後、終了するのであれば、
PowerShell経由で実行する方法:
「スクリプト:Return」を作成し、インポート スクリプトの記述をします。
Event を送信 は、以下のように記述。notepad.exe のところを対象のアプリケーションに書き換えて下さい。ファイル名:test も任意で書き換えてください。
Event を送信 [「aevt」; 「odoc」; 「 powershell -command notepad.exe | out-null;start fmp:test?script=Return」]
上記の例では、notepad.exe が、開き、手動で閉じるとFMPプロトコルで ファイル:test のスクリプト:Return が実行されます。
※対象のアプリケーションの記述は、フルパスを記述する必要があります。
Last edited by qb_dp (2016-10-12 19:52:57)
Offline
>他ソフトでcsvファイルを作成するexeファイルを実行させ
そのファイルが、csvを書き出し後、終了しない場合で、
FileMakerの機能のみで実行するには、
ファイルを挿入 で、2行ファイルパスを記述します。
1行目は、目的のCSVファイル
2行目は、error.txt (なんでもイイのですが、ココでは、error.txtとします。)
このように「ファイルを挿入」で2行記述すると、1行目がなければ、2行目のファイルを読み込みます。
なので、以下のようにLoopで回し、$FileName が、"error.txt" でなくなれば、1行目のファイルの存在を確認できます。
Event を送信 [「aevt」; 「odoc」; 「csvファイルを作成するexe」]
Loop
ファイルを挿入 [
filewin:/C:/XXXXX/Import.csv
filewin:/C:/Users/user/Desktop/!TEMP/error.txt
]
変数を設定 [$FileName; 値:test::obj]
Exit Loop If [$FileName ≠ "error.txt"]
スクリプト一時停止/続行 [間隔(秒): .5]
End Loop
インポートスクリプト
※2行目のファイル、error.txt は、必ず存在する事が前提です。テンポラリーフォルダに書き出して使用するのが良いでしょう。
上記のサンプルは、無限ループを考慮していません。Exit Loop If [$n > $MAX] などを入れて、無限ループ対策もしておいた方が良いです。
Last edited by qb_dp (2016-10-12 20:22:35)
Offline
詳しくご教示いただいイて、ありがとうございました。
exeファイルはCSVファイル書き出し後、終了しますので、最初の案で作成させていただきました。
本当にありがとうございました。
Offline
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 509.05 KiB (Peak: 515.84 KiB) ]