このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ファイルメーカーPro 3.0について(スクリプト)

発言者:重松修
( Date Friday, May 23, 1997 22:31:23 )


いつもお世話になっています。

ファイルメーカーでどうしてもうまくいかないことがあります。
アドバイスを戴ければと思います。

●ファイルメーカーのファイル「会議室」の状態
MessageID:メッセージのID
CommentID:コメント先のメッセージID
Author:メッセージ投稿者のID
MessageBody:メッセージの内容
DateTime:メッセージID(TimeStamp)をYY.MM.DD hh:mm:ssに計算したもの
List:書き込みの一覧表にHTMLに整形(計算)したもの

このとき、例えば、現状一つ前の発言に対する関連のメッセージの取得に

tell application "ファイルメーカー Pro"
  try
    set prev_records to every record of database db_name ツ
      whose cell "CommentID" is commentID and cell "MessageID" is not messageID
    if class of item 1 of prev_records is not list then set prev_records to {prev_records}
    repeat with this_record in reverse of prev_records
      set prev_lists to prev_lists & last item of this_record
    end repeat
  on error
  end try
end tell

とかなり面倒なことをしているのですが、これを
set prev_lists to cell "List" of records of database db_nameツ
  whose cell "CommentID" is commentID and cell "MessageID" is not messageID
とするとうまくいきません。

レイアウト(layout1)を追加して、そのレイアウトに、Listだけしか見えなくして
set prev_lists to every records of "layout1" of database db_nameツ
  whose cell "CommentID" is commentID and cell "MessageID" is not messageID
としても、今度は全部が取り込まれます(関係無い項目も)

条件を付けずに単に、
set prev_lists to every records of "layout1" of database db_name
とすると、Listの項目だけのリストになります。

抽象的な質問かもしれませんが、よろしくお願いいたします。

kozka さんからのコメント
( Friday, May 23, 1997 23:19:58 )

括弧をつけて

set prev_lists to cell "List" of (records of database db_nameツ
  whose cell "CommentID" is commentID and cell "MessageID" is not messageID)

として試してみてください。

平岡憲人 さんからのコメント
( Friday, May 30, 1997 00:03:25 )

はじめまして、

Filemaker pro3をつかっていて、どうしてよいのかわからなくて
こまっています。

現在、pictイメージをオブジェクトフィールドにはりこんだFM
のファイルをもっています。そのフィールドを、GIFファイルで
かき出して、ファイルのパス名をFMのファイルの別のフィールドに
格納する方法をさがしています。

このような方法をごぞんじのかたおられませんか?
clip2gif, FMのスクリプト、AppleEventあたりをくみあわせれば
いいんだろうとおもうのですが、かいもく方法がわかりません。

よろしくおねがいします。

元永二朗 さんからのコメント
( Saturday, May 31, 1997 03:33:06 )

確かここで以前話題になったと思うのですが・・clip2gifで検索したら
引っかかりそうですけど。
それはそれとして、以前clip2gifに付属のサンプルをいじってでっち
上げたものを書いておきます。

property crlf : (ASCII character 13) & (ASCII character 10)
property http_10_header : "HTTP/1.0 200 OK" & crlf & "Content-type: image/gif" & crlf & crlf

on ヌevent WWWスsdocネ path_args
  try
    tell application "ファイルメーカー Pro 3.0"
      set errApp to "FileMaker"
      set currPict to cell "画像" of record ID path_args of document "gif画像データ"
    end tell
    --if currPict is not defined then set errApp to "FileMaker"
    tell application "clip2gif"
      set errApp to "clip2gif"
      set currGif to save currPict as GIF in string scale 100 ツ
        colors palette input colors depth 8 without interlacing
    end tell
    return http_10_header & currGif
  on error errMsg number errNum from errFrom
    tell application "clip2gif"
      if errApp is "clip2gif" then
        if errNum is -50 then
          set currDraw to {{rectangle:{0, 0, 320, 240}, color:{55000, 55000, 65535}}, ツ
            {drawn text:"Database上に画像がありません。", justification:centered, size:18}}
        else if errNum is -2753 then
          set currDraw to {{rectangle:{0, 0, 320, 240}, color:{55000, 55000, 65535}}, ツ
            {drawn text:"Database上の画像が大きすぎるため、表\示できません。", justification:centered, size:18}}
        end if
      else
        set currDraw to {{rectangle:{0, 0, 320, 240}, color:{55000, 55000, 65535}}, ツ
          {drawn text:"エラーのため、画像を表\示できません。", justification:centered, size:18}}
      end if
      set currGif to save {320, 240} as GIF in string ツ
        drawing currDraw without interlacing
    end tell
    return http_10_header & currGif
    --return "HTTP/1.0 400 ERR" & crlf & crlf
  end try
end ヌevent WWWスsdocネ

元永二朗 さんからのコメント
( Saturday, May 31, 1997 03:39:52 )

あ・・・。
良く見ずにCopy & Pasteしたら、変なデバッグ用の行を削除し忘れている・・。
えー、コメントアウトしてある行は気にしないでください(^_^;;。
一応、動くはずです。clip2gifへは、相当メモリをくれてやらないと
エラーになりやすいです。

あと、確かWebFMの発売元からそのものずばりの、FileMakerに貼り込まれた
PICTをgifにして送り出すWebStarのプラグインが出ていたはずです。

元永二朗 さんからのコメント
( Saturday, May 31, 1997 03:50:31 )

度々すみません。ちょっと勘違いしていました。
私が書いたスクリプトやプラグインの話は、
ファイルに書き出さずダイレクトに画像をリプライするものです。
スクリプトのほうは、かなり環境に依存するので(ファイルメーカー
のフィールド名とか)ご注意下さい。

set currPict to cell "画像" of record ID path_args of document "gif画像データ"

の行からもお分かり頂けると思いますが、"gif画像データ"という
ファイルの"画像"というフィールドにPICTが格納されているものと
して処理しています。