2 返信 最新の回答 日時: Jun 4, 2013 12:44 AM ユーザー:mahsa828

    OLE のサポート

    mahsa828

      タイトル

      OLE のサポート

      フォーラムに投稿

           マーサの主治医です。

           WIN7 FM12AD です。

           11で作成中のカルテでは、オブジェクトフィールドにスタンプ画像をドラック&ドロップで保存し、ペイントソフトで編集保存しようと考えていました。

           12からOLE のサポートがなくなりましたので、この方法が取れなくなり代わりの方法を考えていますが、皆さんはどのようにされていますか?

           良い考えがあればおしえてください。

      %E7%8A%AC_%E6%AD%AF%E5%BC%8F.jpg

        • 1. Re: OLE のサポート
          keeztha

               私も FileMaker Pro 12 で手書き入力用のフィールドを使いたかったので、あれこれ検討してみました。

               オブジェクトフィールドにはBMPファイルのみが格納されている前提、という制限付ですが、次の手順でそれらしいものを作ることができました。

               オブジェクトフィールドにオブジェクトを挿入すると、通常、データは「埋め込み」という形になるのですが、この埋め込みではなく「外部ファイルに保存」させる形にして、その外部ファイルをMSペイントから編集するというやり方です。

               1オブジェクトを保存する基本ディレクトリを登録します。

               ファイルメニュー>管理>オブジェクト、を選択すると、「オブジェクトの管理」ウィンドウが開きます。ここで、外部ファイルに保存する時の保存先となる基本ディレクトリを登録します。

               例) [データベースの場所]/Files/

               なお、「オブジェクトの管理」ウィンドウ>サムネールタブの「イメージのサムネールを生成して保存」はOFFにしておいた方が無難と思われます。ONで影響があるかないかは試していませんが・・・。

               2オブジェクトフィールドのデータを外部に保存する設定を行います。

               フィールド定義を開き、bmp画像を保存させるオブジェクトフィールドを選択し、オプションボタンをクリックします。

               そして「データの格納」タブを選択し、「オブジェクトデータを外部に保存」をONにします。

               保存先は上記で指定した基本ディレクトリ(のいずれか)を選択します。

               そして、必ず「オープン格納」を選択します。

               次に『指定...』ボタンで、外部保存するデータのパス&ファイル名を指定できるのですが、ここで「レコード×フィールドを特定できるようなファイルprefix」を指定します。

               例えば、テーブル名が「訪問記録テーブル」、このテーブルのレコードを特定するためのフィールド名を「レコードCD」(rec00001の形式で自動設定)、bmp画像を格納するオブジェクトフィールド名を「フリー記入」とする場合、
                     "訪問記録/"&レコードCD&"_フリー記入_:"
               といった計算式を指定します。

               すると、「フリー記入」フィールドに「20130601あいう社訪問.bmp」というファイルを挿入した場合、
                     [データベースの場所]/Files/訪問記録/rec00015_フリー記入_20130601あいう社訪問.bmp
               というパスファイル名で格納される形となります。

               3.対応する外部ファイルをMSペイントで開くスクリプトを作成します。

               「Eventを送信」のスクリプトステップを使って、MSペイントで外部保存されているbmpファイルを開きます。

               PDFやテキストファイルなどですと、そのファイル名を指定するだけで関連付けられているアプリケーションが起動するのですが、bmpファイルはMSペイントに紐付けてあっても開けませんでした。この理由はよく分かりませんでしたが、bmpファイルを右クリックしても「開く」というメニューはなく「編集」というメニューしかないためかもしれません。

               ということで、MSペイントで指定のbmpファイルを開くために、「mspaint.exe+半角スペース+対象bmpファイルのパス&ファイル名」というコマンドを使用します。

               新規にスクリプトを作成し、次のスクリプトステップを作成します。

               1)Eventを送信

               送信するイベント:ファイル/アプリケーションを開く。

               「計算」を選択し、次の計算式を記述します。

               "mspaint.exe" &
               Substitute( Get(ファイルパス) ;
               ["file:";""];
               [Get(ファイル名)&".fmp12";""];
               ["/";"¥¥"]
               ) &
               "_Files¥¥訪問記録¥¥" & 訪問記録テーブル::レコードCD&"_フリー記入_*.bmp"

               【補足1】 「¥」は半角です。

               【補足2】 ファイル名を「~_フリー記入_*.bmp」とアスタリスクにしているのは挿入するファイル名が特定できないためです。上記2できちんと設定してあれば、スクリプトはアスタリスクのままでもきちんと対象のファイルが開くはずです。

               【補足3】 「Substitute( Get(ファイルパス)~」の処理は外部保存ファイルが保存されている基本ディレクトリのパスを取得するための記述です。特に問題がなければ固定で記述してしまっても大丈夫だと思います。

               【補足4】 なおディレクトリのセパレータが「/」ではMSペイントは理解できず、「¥(半角)」である必要があるようですが、「¥」はFileMakerのエスケープ文字ですので「¥¥」と2つ重ねています。

               また、オプションで「対象アプリケーションを手前に表示」をONにしておきます。

               2)警告音

               3)カスタムダイアログを表示

               メッセージ: MSペイントで画像を修正し終わったら、OKボタンをクリックしてください。

               4)ウィンドウ内容の再表示。

               以上で動くと思います。

                

               なお、取得関数などで「外部保存しているファイルのパス&ファイル名」が取得できればもう少し簡単になるのですが、どうやらそうした関数は無いようでした。

                

               また、mahsa828さんの最初の投稿からかなり時間が経ってしまっているので、既にもっと良い解決方法を見つけていらっしゃいましたら、教えていただけるとありがたいです。

                

               では。

          • 2. Re: OLE のサポート
            mahsa828

                 flowplusさん、お返事ありがとうございます。

                 ご丁寧な解説感謝いたします。

                 時間が掛かると思いますが、参考にさせていただき導入してみようと思います。