7 返信 最新の回答 日時: Aug 17, 2014 11:00 PM ユーザー:dome

    指定フォルダのファイルを表示させるには

    dome

      タイトル

      指定フォルダのファイルを表示させるには

      フォーラムに投稿

           FM初心者で、わかりづらいかもしれませんがよろしくお願いします

            

           オブジェクトフィールドを使用して、ドラッグ&ドロップで挿入したファイルを指定フォルダに保管し、

           オブジェクトフィールドをクリックしたら、ファイルを開く処理を行いたいのですが、どなたか教えてください。

            

           ちなみに、データベース管理でのフィールド設定でオブジェクトデータを外部に保存にチェックしなければ、スクリプトを使って開くことはできました。

            

        • 1. Re: 指定フォルダのファイルを表示させるには
          sago350@未来Switch

               >オブジェクトフィールドを使用して、ドラッグ&ドロップで挿入したファイルを指定フォルダに保管し、

               ここをもう少し詳しく・・・

          • 2. Re: 指定フォルダのファイルを表示させるには
            dome

                 ありがとうございます。

                 【オブジェクトの管理】

                 基本ディレクトリに追加

                 G:\FileMaker\書類保管先

                 【テーブルのフィールド設定】

                 フィールドの設定

                 フィールド名:オブジェクト

                 タイプ:オブジェクト 

                 オプション:外部(オープン)

                    オブジェクトデータを外部に保存・・・ G:\FileMaker\書類保管先

                    オープン格納:空白

                 【スクリプト】

                 変数を設定[$AA;値:GetValue(添付書類::GetValue;2)]

                 Eventを送信[「aevt」;「odoc」;「$AA」]

                 Filewin:/G:/FileMaker/書庫管理/$AA

                 レイアウトに上のフィールドを貼り付けて、指定ファイル(PDF,WORD等)をドラッグ&ドロップで上記フォルダへ移動し、外部ハードディスクGドライブへ保存したいと考えています。

                 ドラッグ&ドロップすると、指定したフォルダには格納されているのですが、クリックしたらファイルを表示させたいのですがうまくいきません。

                  

            色々と試してみたのですが、初心者でいまいちうまくいきません。

                 エラー内容1:ファイル「PDF:●●●.pdf」が見つからないため、処理を完了できません

                 エラー内容2:前のスクリプトコマンドで「Event送信」は、エラーが発生したために完了できませんでした。このスクリプトを続行しますか? 『続行』『キャンセル』

                 が表示されてうまくいけません。

                 初歩的なところなのかもしれないのですが、Googleで検索をいろいろ試みたのですが、解決できません。

                 お忙しいんところ申し訳ございませんがよろしくお願い致します。

                  

                 あと、ここへの書き込みについても初めてで、ここ(アンサーの投稿)に書き込んで良いのかわからないですが。。。

                  

            • 3. Re: 指定フォルダのファイルを表示させるには
              sago350@未来Switch

                   「URLを開く」というスクリプトステップで指定したファイルを開くことが出来ますが、これで解決しますかね。

              http://www.filemaker.co.jp/help/html/scripts_ref2.37.62.html

                    

              • 4. Re: 指定フォルダのファイルを表示させるには
                dome

                     ありがとうございました。 URLで開くことができました。

                     ×URL を開く [ダイアログなし; "File:/G:/FileMaker/書庫管理/$AA"]

                     ◎URL を開く [ダイアログなし; "$AA"]

                          ×Eventを送信[「aevt」;「odoc」;「$AA」]
                          Filewin:/G:/FileMaker/書庫管理/$AA
                               ◎Eventを送信[「aevt」;「odoc」;「$AA」]
                               $AA
                                
                               $AAの変数に設定された値が私は●●●.pdfが設定されていると思っていました。
                               たぶん、Filewin:/G:/FileMaker/書庫管理/G:/FileMaker/書庫管理/●●●.pdf
                               という形でEventを送信していたのではないかと思います。
                                
                               上の入力にも間違いがありました
                                
                               ×変数を設定[$AA;値:GetValue(添付書類::GetValue;2)]
                               ◎変数を設定[$AA;値:GetValue(添付書類::オブジェクト;2)]
                                
                                

                      

                • 5. Re: 指定フォルダのファイルを表示させるには
                  dome

                  いろいろとヒントをいただきありがとうございました。

                  結論からいいますと、Event送信を使うことにしました。

                  URL送信の場合、ダイレクトにパスを指定する場合はいいのですが、PDFJPEGWordなどの異なる種類のファイルを開くときに、私の知識では対応できませんでした。

                  一応URL送信で実際スクリプトを作成してみました。

                  保管先フォルダ:G\Filemaker\書類管理

                  フィールド:添付書類::オブジェクト

                    変数を設定[$AA;値:GetValue(添付書類::オブジェクト)]  ==> PDF :工事原価日報140812.pdf

                    変数を設定[$bb;値:"File://G:\FileMaker\書庫管理" & Substitute ( $AA ; "PDF :" ; "/") ] ==> File://G:\FileMaker\書庫管理\工事原価日報140812.pdf

                   変数に設定する際に$AAの結果のように”PDF :”が含まれてしまうため、Substitute 関数を使って置き換えをすることで、ファイルを開くことができました。

                  但し、PDF以外のファイルを開くと、$AFILE: 工事原価日報140812.csvになるようで、$BBで変数を設定すると置き換えがうまくいかない状態になってしまいました。

                  おそらく、$AAと$BBの間にスクリプトでファイルを判定することができるのではないかと思いますが、現在の私には少しハードルが高そうです 

                   

                  もう一点、Event送信については

                   

                  〇外部データを保管する場所をオブジェクト管理で登録する

                  【オブジェクトの管理】-【新規】

                  基本ディレクトリに保管する場所を登録する

                   

                  <例>C:\Users\Desktop\111

                  〇フィールドの追加

                  【データの管理】-【フィールド】-【作成】

                  タイプ:オブジェクト

                  オプション:【データの格納】-【オブジェクトデータを外部に保存】-レ点を付けるか

                       保存先:上で基本ディレクトリに保存したフォルダを【選択】

                       オープン格納:"SavePDF"

                   

                  〇新規レイアウト/レポートへ該当フィールドを貼り付ける

                    レイアウトを起動してみる

                      貼り付けたフィールドに対象ファイルを貼り付ける

                       貼り付けると、オブジェクト管理とOpen格納で指定したフォルダの階層が作成され、該当データが貼り付けられる。

                   

                  〇スクリプト管理

                       スクリプト名:ファイルを開く Event

                       ・変数を設定

                         名前:$AA

                         値:該当するフィールドを指定する

                       Eventを送信

                         送信:ファイル/アプリケーションを開く

                         ファイル:指定:$AA

                   

                  〇フィールドのボタン設定

                       ・スクリプト実行指定:『ファイルを開く Event

                   

                   

                  ※わかりづらい説明ですがなんとかできました

                  ありがとうございました。

                   

                  • 6. Re: 指定フォルダのファイルを表示させるには
                    sago350@未来Switch
                         簡単な方法だと、想定されるパターンを全て書いとくとか。
                          
                         Substitute( $AA ; 
                         ["PDF :" ; "/"] ;
                         ["FILE :" ; "/"]
                         )
                          
                         エレガントな方法だと、一つ目の”:”までの文字数を判定して、それ以降の文字列を切り取る計算式を考えるとか。
                         使う関数はこの辺
                         Position ( テキスト ; 検索テキスト ; 先頭文字位置 ; 回数 )
                         Middle ( テキスト ; 先頭文字位置 ; 文字数 )
                          
                          
                          
                          
                          
                         動いているならそれでいいんじゃないかと思います。
                         ただ、そのスクリプトステップはMacだと動作しないので、気をつけて下さい。Windows環境のみならOKです。
                    • 7. Re: 指定フォルダのファイルを表示させるには
                      dome

                           ありがとうございました。

                           大変ごめんどうをお掛けしました。

                           MACでも動作するように頑張ってみます。