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

FileMakerの値一覧を書き出すには?

発言者:kubo
( Date Monday, January 22, 2001 18:23:47 )


FileMaker初心者です。
参照ファイルやリレーション等の
影響が全くない一つのFMPデータの
定義済みの値一覧のリスト項目を
改行を生かした形でテキストデータ
として書き出したいのですが…
Filemakerのスクリプトで可能なのか、
それ以外の策として例えば、
AppleScriptでデータを引っぱってこれるのかetc.....
などと模索中ですが、具体的にどうすれば
できるのかが全然見えてきません(T T

全然とんちんかな質問かもしれませんが、
ご存じの方がいらっしゃったら
教えてください。
『それは無理だ』などでも結構ですので…
(その場合は諦めます…)
よろしくお願いします。

コマツヤ さんからのコメント
( Monday, January 22, 2001 20:24:13 )

ValueListItems (ファイル名, 値一覧名)という関数があり
ますので、これで個々の値一覧の内容は取り出せます。
ですので、別データベースをつくりそこに計算フィールド
として上記関数で値一覧の内容を取り出すフィールドを作
り後でレコード書き出ししてしまえばいいと思います。
大量のデータベースから何度も取り出したいのでしたら、
やはりプログラムする方がいいかもしれませんね。
実際に簡単なデータベースを作ってファイルダンプしてみ
ましたらデータベースには以下のフォーマットで記録され
ていました。
FileMaker ver.5にて確認
DLIST#値一覧データ
#(1byte):値一覧データ長
値一覧データ(#byte):格納されている値一覧データ
 各値のセパレータ:&h0D
ということはPascal文字列なのでしょうか?


木下@キー・プランニング さんからのコメント
( Monday, January 22, 2001 20:25:04 )

ValueListItems関数を使えば、値一覧の内容をフィールドに持てますので、
レコード書き出しでテキストファイル化できます。

オンラインヘルプのデザイン関数のところに記述があります。
ValueListItems (ファイル名, 値一覧名) 

kubo さんからのコメント
( Monday, January 22, 2001 21:55:11 )

コマツヤ さん、木下@キー・プランニングさん
早速のレスありがとうございます。
これから試してみます。
報告は後日必ずします。
すみません。

kubo さんからのコメント
( Tuesday, January 23, 2001 12:38:41 )

度々kuboです。
おかげさまで 値一覧のリスト項目を
書き出すことができました。
コマツヤ さん、木下@キー・プランニングさん
改めてありがとうございました。
なのですが…
書き出されたテキストデータに問題が…

値一覧のリスト項目は改行で区切っています。
書き出されたデータを開いてみると
改行マークが特殊文字のような
リターンマークとしてしてしか書き出されません。
ファイルメーカー特有のリターンキーなのでしょうか?
(参考までにキー配列では"control + kキー"で表示されるものです)
しかもリスト項目の文字の後にこのリターンマークが入り、
リスト項目中の個数分テキスト最後尾に改行が入っている状態です。
以下半角ハイフンで囲まれたもの
書き出されたテキストデータの中身です。
(文字バケしているのが、リターンマークです)

-----------------------------------------
12345678








-----------------------------------------

解決策として Jeditを使って正常な改行コードに置き換えようと
以下の簡単なscriptを作り、FMPのスクリプト定義に組み込んだのですが、
リターンマークが読み込まれず、エラー-1728が出てしまいます。

tell application "Jedit4"
  activate
  tell document 1
    replace "" to return in selection
  end tell
end tell 

FMPにこのScriptを組み込むのはまずいのでしょうか?
AppleScript上で実行させれば問題なく処理されるのですが…
ご助力願います。

kubo さんからのコメント
( Tuesday, January 23, 2001 12:41:10 )

すみません。
postしたらテキストデータの中身の
文字バケが消えてしまいました。
(当たり前ですよね、すみません)
全角数字の間にリターンマークが入っている状態です。

しあわせのツボ さんからのコメント
( Tuesday, January 23, 2001 13:18:32 )

replace "[^K]" to "\\r" in selection
でいけると思います。
([^K]は矢印。\\rのかわりに直接改行を打っても可)

kubo さんからのコメント
( Tuesday, January 23, 2001 18:04:13 )

しあわせのツボさん、こんにちは。
ご助力ありがとうございました。
せっかくpostしていただいのに
恐縮なのですが、状況は変わりません(T T
そこでFinderから直接と思い、
以下のようなscriptに書き換えたのですが
これもまた変化なしです。

tell application "Finder"
 run script "return convert"
end tell

FMPがJeditにデータを
うまく受け渡せないんですかねぇ…
FMPはver.4です。
バージョンが古いからなのでしょうか?

現在他の方法を模索中です。
重ねてありがとうございました。

しあわせのツボ さんからのコメント
( Tuesday, January 23, 2001 18:36:41 )

スクリプト単独では正しく動作しますか?

ちょっと気になっていたのですが、in selectionと
なっているのに、範囲選択をしていませんね。
予め範囲選択(全文ならselect document 1)するか、
in selectionを外すかするとどうなるでしょうか。

kubo さんからのコメント
( Tuesday, January 23, 2001 19:21:08 )

しあわせのツボ さん
早速のレスありがとうございます。

<スクリプト単独では正しく動作しますか?
動作します。

ちょっと視点を変えて、script部分では
単純にopenコマンドで"Jedit"で開いてから
処理させるようにしました。
以下が現在のものです。
一応正常に動作します。

tell application "Jedit4"
  activate
      open file "Macintosh HD:Desktop Folder:ab" kanji type ShiftJis lf type mac
tell document 1
    replace "[^K]" to "\\r" in selection
  replace return to "" in selection -----最後尾に入っているリスト個数分の改行を削除しています。
end tell
end tell

上記の"open file "Macintosh HD:Desktop Folder:ab" 〜 部分の
ファイル名を変数扱いにして、FMPのスクリプト定義の
『レコード書き出し』時の『書き出しファイル名』を
この変数に代入できれば汎用性があると思うのですが…
無理かもしれませんね…
もうちょっと試行錯誤してみたいと思います。

ちなみに上記のscriptの" in selection"を外すと単独、FMP組み込み共に
エラーがでました。

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