みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
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関数使えるなら高速化が可能かなと期待しています。
メタデータなので、直接的な使い道はないですね。
「今までと同様にExecuteSQL関数使える」の意味がよくわかりませんが、
ExecuteSQL関数でも使えるテーブルです。
FileMaker_Fieldsではテーブル名がテーブルオカレンス名でしたが、FileMaker_BaseTableFieldsではテーブル定義での名前になってますね。
メタデータなので、直接的な使い道はないですね。
なるほど、レコード内容ではなく・BaseTableName ・FieldName ・FieldType のように名称とかタイプを扱うためのものですか。
普通にレコード処理に使えるものかと期待していましたが残念です。
有り難うございました。
蛇足ですが
何か使えないかと思い、ヒットしたサイトに「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
蛇足の追加 環境: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
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 556.66 KiB (Peak: 579.56 KiB) ]