初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-11-09 16:17:56

koko009
Guest

FileMaker_BaseTableFieldsとはどんなものですか

Claris FileMaker Pro 19.4.1 リリースノート
https://support.claris.com/s/answerview … =000035725
にあるFileMaker_BaseTableFieldsとはどんなものでどのような使い方があるのでしょうか?
FileMaker SQL リファレンスガイドの37ページに

FileMaker システムテーブル
各 FileMaker Pro データベースファイルには次のシステムテーブルがあります:
FileMaker_Tables、FileMaker_Fields、および FileMaker_BaseTableFields。ODBC アプリケー
ションの場合、これらのテーブルは SQLTables のカタログ関数が返す情報の中に含まれます。
JDBC アプリケーションの場合、これらのテーブルは DatabaseMetaData メソッドの getTables
が返す情報の中に含まれます。テーブルは ExecuteSQL 関数でも使用できます。・・・

等と説明されていますが、よく理解できません、
どうかもっと分かり易く具体的な内容と使い方を教えてくさい。
もし普通に今までと同様にExecuteSQL関数使えるなら高速化が可能かなと期待しています。

#2 2022-11-09 18:08:52

himadanee
Guest

Re: FileMaker_BaseTableFieldsとはどんなものですか

メタデータなので、直接的な使い道はないですね。
「今までと同様にExecuteSQL関数使える」の意味がよくわかりませんが、
ExecuteSQL関数でも使えるテーブルです。
FileMaker_Fieldsではテーブル名がテーブルオカレンス名でしたが、FileMaker_BaseTableFieldsではテーブル定義での名前になってますね。

#3 2022-11-09 19:42:14

koko009
Guest

Re: FileMaker_BaseTableFieldsとはどんなものですか

メタデータなので、直接的な使い道はないですね。

なるほど、レコード内容ではなく・BaseTableName ・FieldName ・FieldType のように名称とかタイプを扱うためのものですか。
普通にレコード処理に使えるものかと期待していましたが残念です。
有り難うございました。

#4 2022-11-10 12:29:34

koko009
Guest

Re: FileMaker_BaseTableFieldsとはどんなものですか

蛇足ですが
何か使えないかと思い、ヒットしたサイトに「FileMaker グローバルフィールドをすべてクリア 」があったので、inner joinを使った複数テーブル結合条件フォーム(グローバルフィールドのみで構成・・テキスト;5,計算;1)にフィールド値の消去に繰り返しフィールド処理の部分を除き下記のスクリプトにして使ってみました。

    変数を設定 [ $sa; 値:Let ( [~sql = "SELECT BaseTableName, FieldName, FieldReps FROM FileMaker_BaseTableFields WHERE FieldType LIKE ?and FieldClass LIKE ?" ] ; ExecuteSQL ( ~sql ; "" ; "" ; "global%";"Normal" )) ]
    変数を設定 [ $i; 値:"" ]
    変数を設定 [ $imax; 値:ValueCount ( $sa ) ]
    Loop
    Exit Loop If [ Let ( $i = $i + 1 ; $i > $imax ) ]
    変数を設定 [ $va; 値:Substitute ( GetValue ( $sa ; $i ) ; "," ; ¶ ) ]
    フィールドを名前で設定 [ GetValue ( $va ; 1 ) & "::" & GetValue ( $va ; 2 ); "" ]
    End Loop

#5 2022-11-13 09:52:30

koko009
Guest

Re: FileMaker_BaseTableFieldsとはどんなものですか

蛇足の追加 環境:Windows10 FM19.5.4.401
私の環境で繰り返しフィールドを含んだ場合、参考サイトのの方法では繰り返しフィールドのクリア出来なかったので一部改変したものです。

    変数を設定 [ $sa; 値:Let ( [ ~sql = "SELECT BaseTableName, FieldName, FieldReps FROM FileMaker_BaseTableFields WHERE FieldType LIKE ?and FieldClass LIKE ?" ] ; ExecuteSQL ( ~sql ; "" ; "" ; "global%";"Normal" )) ]
    変数を設定 [ $i; 値:"" ]
    変数を設定 [ $imax; 値:ValueCount ( $sa ) ]
    Loop
    Exit Loop If [ Let ( $i = $i + 1 ; $i > $imax ) ]
    変数を設定 [ $va; 値:Substitute ( GetValue ( $sa ; $i ) ; "," ; ¶ ) ]
    変数を設定 [ $j; 値:"" ]
    変数を設定 [ $jmax; 値:GetAsNumber ( GetValue ($va;3) ) ]
    Loop
    Exit Loop If [ Let ( $j = $j + 1 ; $j > $jmax ) ]
    フィールドを名前で設定 [ GetValue ( $va ; 1 ) & "::" & GetValue ( $va ; 2 ) & "[" & $j & "]"; "" ]
    End Loop
    End Loop

繰り返しフィールドが無い場合は、すこし簡略化して(この場合は、対象テーブルを限定)

    変数を設定 [ $sa; 値:ExecuteSQL ( "SELECT BaseTableName, FieldName FROM FileMaker_BaseTableFields WHERE BaseTableName LIKE ? AND FieldType LIKE ?and FieldClass LIKE ?" ; "::" ; "" ;"table_0";"global%";"Normal" ) ]
    変数を設定 [ $i; 値:"" ]
    変数を設定 [ $imax; 値:ValueCount ( $sa ) ]
    Loop
    Exit Loop If [ Let ( $i = $i+1 ; $i > $imax ) ]
    フィールドを名前で設定 [ GetValue ( $sa ;$i); "" ]
    End Loop

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 559.95 KiB (Peak: 583.42 KiB) ]