アーカイブ: filemakerチョコット

 
FileMakerとWebビューア(内のJavaScript)とのデータ受け渡し方法について説明します。バージョン18までのFileMakerはこの受け渡しが少し複雑だったのですが、バージョン19で簡単に扱えるようになりました。
 

 

1.はじめに(Webビューアについて)

FileMakerバージョン8.5で、Webビューアという機能が導入されました。Webビューアを使うと、FileMakerのレイアウトの中でWebページを表示することができます。
 
例えば、

  • 商品名フィールドの値をキーワードにして、Google検索の結果を表示する
  • 住所フィールドの値をもとに、Googleマップで地図を表示する

といったことが、ノーコードで実現できるようになっています。
 
さらに、コードを書く必要はありますが、JavaScript(ライブラリ)を使って

  • 成績データを複雑なグラフで表示する
  • イベントデータをカレンダー形式で表示する
  • マウスでお絵描きした結果をFileMakerのフィールドに保存する

といったことができるようになります。
 
ここで必要になるのが、FileMakerとWebビューア(内のJavaScript)とのデータの受け渡しです。バージョン18までのFileMakerはこのデータの受け渡しが少し複雑だったのですが、バージョン19で簡単に扱えるようになりました。
 
リッチな表示や動きを実現するJavaScript(ライブラリ)の解説については他の記事におまかせするとして、ここでは簡単な例を用いて、データ連携の基礎について説明したいと思います。

 

2.準備

今回は、FileMakerデータベースのフィールドと、Webビューア内のinputフィールドとの間でデータを受け渡しすることにします。
 
まず、sampleテーブルにFieldAというフィールドを作成します。

 
FileMakerのレイアウトにfieldAフィールドと[Webビューアへ]ボタンを配置します。
その右側にWebビューアを配置します。

 
Webビューアにオブジェクト名を付けます。今回は[viewer]とします。

 
Webビューアの中に、inputフィールド(fieldBとします)と[FileMakerへ]ボタンを表示するためのHTMLソースを用意します。
用意したソースを、「Webビューアの設定」画面の「Webアドレス」に貼り付けます。

"data:text/html,"
"<html>
  <head>
  </head>
  <body>
    <input id="fieldB" type="text" />
    <button>FileMakerへ</button>
  </body>
</html>"

 
また、
・Webビューアの内容とのインタラクションを許可
・JavaScriptによるFileMakerスクリプトの実行を許可
にチェックを入れます。


 
準備は以上です。この後、データの受け渡しの処理を組み込んでいきます。
 

3.FileMakerからWebビューア内のJavaScriptへ

FileMakerの [Web ビューアで JavaScript を実行] スクリプトステップで、JavaScriptの関数を実行することができます。
 
【Webビューア側】
HTMLソースに[callFromFM]関数を記述します。
この関数は引数を1つ受け取り、fieldBにセットします。

"data:text/html,"
"<html>
  <head>
  <script language='JavaScript'>
      function callFromFM(param){
        const target = document.getElementById('fieldB');
        target.value = param;
      } 
    </script>
<input id="fieldB" type="text" />
<button>FileMakerへ</button>
  </body>
</html>"

 
【FileMakerレイアウト側】
ボタンを右クリックし、[ボタン処理]-[単一ステップ]を選択します。

 
[Web ビューアで JavaScript を実行]スクリプトステップを選択し、Webビューアの名前、呼び出すJavaScript関数名、引数を指定します。

 
fieldAに値を入力して[Webビューアへ]ボタンを押すと、WebビューアのfieldBに反映されます。
 

4.Webビューア内のJavaScriptからFileMakerへ

JavaScriptの[FileMaker.PerformScript]関数もしくは[FileMaker.PerformScriptWithOption]関数で、FileMakerのスクリプトを実行することができます。
 
【FileMakerレイアウト側】
[CallFromJS]スクリプトを作成します。
このスクリプトは引数を受け取り、fieldAにセットします。


 
【Webビューア側】
HTMLソースに"buttonClick"関数を記述します。
この関数はfieldBの値を引数として、FileMakerの[callFromJS]スクリプトを実行します。
ボタンのonClickイベントで、この関数を実行するように設定します。

"data:text/html,"
"<html>
  <head>
    <script language='JavaScript'>
      function callFromFM(param){
        const target = document.getElementById('fieldB');
        target.value = param;
      } 
      function buttonClick(){
        const target = document.getElementById('fieldB');
        FileMaker.PerformScript('callFromJS', target.value);
      }
    </script>
  </head>
  <body>
    <input  id='fieldB'>
    <button onClick='buttonClick();'>FileMakerへ</button>
  </body>
</html>"

fieldBに値を入力して[FileMakerへ]ボタンを押すと、FileMakerレイアウトのfieldAに反映されます。
 

5.まとめ

FileMakerレイアウトの中に置いたWebビューアに対して、1つの値を受け渡す方法について説明しました。JavaScriptでグラフやカレンダーを表示するためにはたくさんの値のやり取りが必要になりますが、基本は変わりません。いろいろと試してみましょう。

詳細

■fmsadminコマンドメモ一覧


 すぐ忘れちゃうよく使うコマンドまとめ。
 コンソールを使用するので、中級~上級レベルの内容となります。

クラリス社のFileMaker Server コマンドラインリファレンスはこちらになります。

■設定確認


FileMakerServer18からコマンド上でしかサーバーの詳細設定できないものが存在します。
(例えば、キャッシュ設定や接続人数設定などがコマンド操作に変更なりました)
アドミンコンソール画面で設定できないときはコマンドで確認しましょう!

1. 簡易表示

 serverconfigでは、サーバー設定のみの内容を表示します。

 fmsadmin get serverconfig

結果(デフォルト値が出ています)

BackupInterval = 5 [default: 5, range: 1-99]
BackupPauseTime = 6 [default: 6, range: 6-60]
CacheSize = 512 [default: 512, range: 64-1048576]
HostedFiles = 125 [default: 125, range: 1-125]
LogSize = 40 [default: 40, range: 1-1000]
ProConnections = 250 [default: 250, range: 0-2000]
ScriptSessions = 100 [default: 100, range: 0-500]
SecureFilesOnly = true [default: true]
ServerDiscovery = true [default: true]
StatsInterval = 30 [default: 30, range: 1-300]

BackupInterval :プログレッシブバックアップの頻度(分単位)
BackupPauseTime :
CacheSize :キャッシュメモリ(メガバイト単位)。
HostedFiles: ホストできるカスタム App の最大数
LogSize :各ログファイルの最大サイズ(メガバイト単位)。
ProConnections : Pro Advanced クライアント接続の最大数。
ScriptSessions :サーバー上で同時に実行できるスクリプトセッションの最大数。
SecureFilesOnly :フルアクセス権限セットを割り当てられたパスワードで保護されたアカウントを持つカスタム App のみをホスティング用に開くことができるかどうか。
StatsInterval: FileMaker Server が統計情報を収集する頻度(秒単位)

2.詳細表示

 serverprefsではサーバー環境設定の内容を表示します。
 サーバー設定よりもより詳しい設定を確認することが出来ます。そのため、サーバー設定と同じ内容も一部あります。

fmsadmin get serverprefs

結果(デフォルト値が出ています)

MaxGuests = 250 [default: 250, range: 0-2000]
MaxFiles = 125 [default: 125, range: 1-125]
CacheSize = 512 [default: 512, range: 64-1048576]
UseCustomHostName = true [default: true]
CustomHostName = GPSE-FM
MaxLogSize = 40 [default: 40, range: 1-1000]
UseStatsLog = false [default: false]
StatsTimeInterval = 30 [default: 30, range: 1-300]
UseSecureConnection = false [default: false]
IncrementalBackupInterval = 5 [default: 5, range: 1-99]
AllowPSOS = 100 [default: 100, range: 0-500]
UseTopCallsLog = false [default: false]
UseClientStatsLog = false [default: false]
RequireSecureDB = true [default: true]
CollectFeatureInfo = true [default: true]
DenyGuestAndAutoLogin = false [default: false]
WPERedirect = true [default: true]
HSTSEnable = false [default: false]
ServerDiscovery = true [default: true]
IncrementalBackupPauseTimeoutSec = 6 [default: 6, range: 6-60]
AuthenticatedStream = 1 [default: 1, range: 1-2]
AllowUnknownSSLCertificateRevocation = false [default: false]
ParallelBackupEnabled = false [default: false]

.
.

■よく使う初期設定コマンド

 ここからは、サーバー設定時の初期設定でよく使うコマンドになります。

キャッシュ設定

デフォルト値だと小さいので、各マシンごとに設定しなおしましょう。
 キャッシュはマシンのキャッシュの半分くらいの数値がおすすめです。
 99999のサイズをマシンのキャッシュに合わせた数値にして実行します。

fmsadmin set serverconfig cachesize=99999

パスワード無しでファイルアップの許可時

デフォルトはパスワード無でのファイルはアップ許可されていません。
 パスワードの設定が難しいファイルが存在した場合、無効の設定をおこないます。

fmsadmin set serverconfig securefilesonly=false

バックアップ設定

1.リスト確認

 バックアップ設定をコマンドでリスト表示できます。
 コンソール画面では詳細を見ることが出来ない初期から入っている自動バックアップ設定も、ここでは確認できます。

fmsadmin LIST SCHEDULES

結果

ID Name                Type   Last Completed  Next Run         Status
1  FMS                 Backup 2022/09/02 0:00 enable         OK
2.自動バックアップの実行無効設定

 自動バックアップを無効にするときはdisable を指定。
 ※1はバックアップリストのデフォルトで1で入っているため、1で指定。

fmsadmin disable schedule 1

 戻すときはenable を指定。

fmsadmin enable schedule 1 
3.自動バックアップの実行時間の変更
fmsadmin set backuptime HH:MM

 接続人数の制限

制限を行いたい場合、99の部分を接続する人数で実行します。

fmsadmin set serverprefs MaxGuests=99

■その他

[ホスト]表示時の アカウントダイアログボックスの機能のオフ

Admin Console画面上で
 構成 > FileMaker クライアント > クライアントアプリケーション
 この画面の「クライアントアプリケーションでのデータ」を 「無効」に設定

詳細

FileMakerではアプリを起動することが出来ます
初めてでも実行できるものからやってみませんか?

  • 簡単なメール起動
  • アプリ起動1:ブラウザー起動
  • アプリ起動2:ディレクトリを指定して起動
  • アプリ起動3:それでも出来ないものは 
  • リモートアクセスも起動?!

ということで簡単に試せるファイルを作成してみました。

●環境

・Windows
・FileMaker19
 お試しファイルはこちら >> ダウンロードファイル
.

実行しているスクリプトは「T_EventOpen」です。こちらをご確認ください。
リストに表示しているドロップダウンの値をIf文で判別して処理の切り替えを行っています。
アイコンが付いているボタンをクリックすると起動します。

1)メール起動

 [メールを送信]スクリプトステップでメールアドレスを指定してメールソフトを起動。これは基本ですね!

.

2)アプリ起動1:URLをブラウザー起動

 ブラウザーアプリの指定で起動してみましょう
 今回三つ記述していますが、お試しファイルではChromeが起動します!
 ※もしもChromeが入っていない場合、「T_EventOpen」スクリプトを開いてコメントアウトしているedgeかIEのスクリプトを有効化し、Chromeはコメントアウトしてください。

 Chrome.exe {URL}
 msedge.exe {URL}
 IEXPLORE.exe {URL}


.

3)アプリ起動2:ディレクトリを指定して起動

 ディレクトリを指定してみましょう
 Windowsのディレクトリをエクスプローラーで起動できます。記述は下記になります

  explorer {指定ディレクトリ}

 デスクトップをご自身のデスクトップのアドレスに書き換えて実行してください。
 (例:C:\Users\admin\Desktop)

.

4)アプリ起動3:それでも出来ないものは 

 アプリ指定のExeで指定しても起動しないものも中にはあります。
 その場合はコマンドで実行します。
 今回は、ローカルのFileMakerをコマンド起動させるようにします。

 cmd /c {アドレス}

 実行動作としては、「cmd」でコマンドプロントを立ち上げます。
 次にオプションの「/c」で実行後のコマンドプロントを閉じています。
 ここでの注意点は、お試しファイルではアドレスが「C:\Users\admin\Desktop\Event送信_サブファイル.fmp12」となっていますが、
 こちらはご自身のデスクトップに「Event送信_サブファイル.fmp12」名の空ファイルを作成・設置をし、ディレクトリ(C:\Users\{ログインユーザー名}\Desktop\)に書き直してください。

.

〇リモートアクセスも起動?!

 実はコマンド実行でIPを指定することでリモートアクセスの起動も出来ちゃいます。
 これは特殊な内容ですが、外部にあるサーバをリモート管理する場合に、IP管理が大変! となったら便利ですよ!
 お試し版にはIPは登録していませんが、XXX.XXX.XXXの箇所を修正して接続可能なリモートアクセス先に設定することで起動ができます。

 
.

そのほか

いかがでしたか?
応用としては、サイトやIP、社内ソフトの管理ファイルの作成も可能になります。
スクリプト「T_EventOpen」を弄ってみましょう

Event送信を駆使すれば、パラメータを持たせて付随する情報を載せることも可能ですね。
また、ログインユーザーを設定して、どのユーザーが何を見ることができるか管理することも可能です。

詳細
FileMakerで、チェックボックスで値を選択するフィールドを用意し、複数の選択肢にチェックを入れると、チェックした順に値が格納されていきます。これを値一覧の並び順通りに表示するには、どうすれば良いでしょうか。

 

1.テスト環境準備

例として、自分がこれまで行ったことのある地方名を選択する画面を用意することにします。

1-1.「名前」「行ったことのある地方」というテキストフィールドを持つテーブルを作成します。

1-2.地方名を登録した値一覧「地方リスト」を作成します。

1-3.「行ったことのある地方」フィールドのコントロールスタイルに「チェックボックスセット」を指定し、値一覧に「地方リスト」を設定します。

 

2.データ入力

下図の例では、田中、山川、鈴木、大西の4名はいずれも「北海道」「関東甲信」「近畿」の3つにチェックを入れました。ところが、チェックを入れた順序が異なっていたため、

田中 : 北海道 ¶ 近畿 ¶ 関東甲信
山川 : 近畿 ¶ 関東甲信 ¶ 北海道
鈴木 : 近畿 ¶ 北海道 ¶ 関東甲信
大西 : 関東甲信 ¶ 近畿 ¶ 北海道

といった具合に、バラバラの並びで登録されました。

これを、いずれも値一覧「地方リスト」の並び順の通り

北海道 ¶ 関東甲信 ¶ 近畿

と表示したい時、どうすればよいでしょうか。

 

3.入力した値の並び替え ~ FilterValues ~

いくつかの方法が考えられるかと思いますが、今回はFilterValues関数を使用してみます。

【FilterValues】
フィルタ値で指定した値のみを含むテキスト結果を、フィルタするテキストに入力されている順序で返します。

FilterValuesは、不要な値を含むテキストの中から、必要な値のみを抽出するときに用いる関数です。

例えば、

"北海道¶福島¶大阪¶埼玉¶宮崎¶東京¶青森¶福岡¶岩手"

の中から東北地方の都道府県名のみを抽出する場合、

FilterValues ( 
  "青森¶秋田¶岩手¶宮城¶山形¶福島" ; 
  "北海道¶福島¶大阪¶埼玉¶宮崎¶東京¶青森¶福岡¶岩手" 
)

とすると、抽出結果は

"青森¶岩手¶福島"

となります。

今回は不要なものを排除するという用途ではありませんが、フィルタテキストの順序に並び替えてくれるという特性を活用します。

計算フィールド「行ったことのある地方_並び替え」を作成し、計算式に

FilterValues ( 
  ValueListItems ( "" ; "地方リスト" ) ; 
  行ったことのある地方 
)

と記述します。

この計算フィールドを表示すると、4名とも

北海道 ¶ 関東甲信 ¶ 近畿

となりました。

 
なお、計算フィールドを用意せずに、「行ったことのある地方」フィールドの「入力値の自動化」オプションにFilterValuesの計算式を設定することも可能です。

 

4.まとめ

チェックボックスで選択された値を、FileMakerレイアウト上でチェックボックス形式のまま表示するのであれば、登録された順番を気にする必要はありません。しかし、テキスト形式で表示したりExcelやcsvでエクスポートしたりする際に、並びを揃えておきたいことがあります。FilterValues関数を使うことで、簡単に値一覧の順番に並び替えることができます。

詳細

時々、WEB画面のような可変項目や横並びも対応した内容の画面表示の要望があった場合、Filemakerのポータルでは横並び表示はできません。その対処として「Webビューア」という選択肢なんていかがでしょう?

Webビューアは
HTMLコードに書き直して可変項目も対応!
簡単なものから複雑なものまで!

できますが!今回は初級編として簡単なJavaScriptを使用した方法で軽く触れるだけです。お遊びレベルの特にエラーチェックもないレジっぽいシステム風なもので試してみましょう!

.

Webビューアの良いところはWEB画面と同じレイアウトが出来るという事でしょう。
そしてFileMakerでは面倒な横並びがCSSで組めば簡単に出来るという点です。

という事で横並びにしてみました!

.

★仕様

シンプルに、商品名をクリックしたら、右のポータルの明細一覧に追加されるという動きです!
.

サンプルファイル: WEBビューア.fmp12
.

★初級レシピ

・対象バージョン
FM19

データーベース

【Info】テーブル

  • Ct_HTML
  • Ft_Js
  • Ft_CSS

【商品マスタ】

  • Ft_商品名
  • Fn_金額

【レシート】テーブル
レシートっぽくするためのヘッダーです。
【レシート明細】テーブル
Webビューアで表示しクリックしたものを入れる場所です。
.
.

実際の画面

お試し画面では、生成された計算フィールドのHTMLソースと、編集可能なJavaScriptフィールドとCSSフィールドを表示しています。
実際にいじりながら画面の変化がみられるので、好きな幅や色味など変更してみましょう!。

ダウンロードしたファイルを見て、軽く弄って分かった方は以下は説明なので読まなくても大丈夫です。
どんどんカスタマイズしてみましょう!
.


.

★中身の説明

Webビューアで重要な場所のみ説明しています。

.

リレーション

とってもシンプル。このリレーションは今回のWebビューアのボタンを押下した後のデータ作成に必要なリレーションです。
ここでは、レシートテーブルとのリレーションで「このリレーションシップを使用して、このテーブルでのレコード作成を許可」にチェックしておきます。
チェックすることで面倒な新規レコード作成をなくしています。

.

フィールド設定

★HTMLの計算フィールド

HTMLを生成する基本枠は計算フィールドにしています。
メインの値を表示するHTMLはカスタムしやすく変数にしています。変数にすることで書き換えるたびにレコードの更新日が変わるという事を阻止します。

記述の説明
    • <HTML lang=’ja’>  …は文字化けしないように日本語指定するために必要です。
    • <meta charset=’UTF-8’ /> …はFileMakerの文字コードに合わせてUtf-8だよと教えるために記述。
    • Ft_CSS …CSSフィールドを置くことで、ここに置くことで書き換えたものが即時反映されます。
    • $$HTML …スクリプトでHTMLを生成したものを変数にセットし、Bodyに出力しています。
    • Ft_Js  …JavaScriptフィールドです。ここに置くことで書き換えたものが即時反映されます。
.

★JSの設定フィールドの中身
document.addEventListener('DOMContentLoaded',function(){
var btns = document.querySelectorAll('.button');
for(var i = 0; i < btns.length; i++){
btns[i].addEventListener('click',function(){
this.style.color = 'blue';
FileMaker.PerformScriptWithOption("JS_addMeisai", this.id + '\n' + 1 );
},false);
}
},false);

今回はシンプルなので、難しいことはしていません。
素のJavaScriptでDivタグのClass名「button」がクリックされたらFileMakerのスクリプトをキックするという動きです。
ポイントはこの後説明する商品名をボタンとして表示させるHTMLと合わせる部分があるという事です!
まずは、DivタグのClass指定をしている「button」がクリックされたら、IDの値(ここでは商品IDがはいっています)を取得します。
そのあと、FileMaker独自のJavaScriptコードでスクリプト名と引数記述します!

Clarisのヘルプはここ
公式:FileMaker.PerformScriptWithOption (スクリプト, 引数, オプション);
ソースの記述箇所: FileMaker.PerformScriptWithOption("JS_addMeisai", this.id + '\n' + 1 );

引数を改行区切りで連結することで複数の値を引数として設定できます。今回は簡単に個数としての1を足しています。
.

★CSSの設定フィールドの中身

ここで横並びの設定を行います。
Webビューアの横幅サイズをCSSで調整するとき、%だとうまく取得できずに幅調整がうまくできないため、ここでは、ボタンを囲む親のDIVタグで横幅サイズを指定し、子のクラスで良い感じに設定するようにflex-basisで幅を%で指定しています。
シンプルに設定しているので自由に変更して、気に入るデザインに変えていきましょう!

.

Webビューア設定

ここで重要なのはカスタムWebを選択、HTMLを生成する計算フィールドを指定し、JavaScriptのチェックをOnにすることとです。

.

スクリプト

★HTML生成スクリプト

このスクリプトでは、横並びのボタン用のHTMLを生成しています。
まず、商品マスタに移動して、ループ処理で商品名と商品マスタIDを取得しています。
その際に、HTMLコードで取得した商品名と商品マスタIDを挟みながら変数に追加していってます。
ポイントは、HTMLコードの生成です!
ClassはJavaScriptで拾うために決めた”button"を指定。Idは、商品IDをセットします(レシート明細にセットするのに使います)
変数はすでに計算式に埋め込んでいるので自動で反映されます。画面が重くなって読み込まなくなってきた場合は「ウインドウ内容の再表示」スクリプトを活用しましょう。

.

★JavaScriptからキックするファイルメーカー内のスクリプト

次に、JavaScriptでキックされるスクリプトです。
JavaScriptで記述する名称と同じ名称を使用します。なるべく半角英数字でスクリプト名を設定しましょう(設定時の全角などの名称間違い防止のために!)
スクリプト引数でJavaScriptで設定した引数を取得し、セットしていきます。改行区切りで複数取得できるのでGetValueで取得しなおしましょう。
あとは、いつも通りスクリプトを組むだけ!簡単!

.
以上で、今回の簡単Webビューア画面の説明は終了です。

ココから細かい設定を追加していくとより複雑なものが出来ていきます。

詳細

FileMakerの計算式の中で、/* */で囲まれた部分はコメントとして扱われます。計算式を/* */で囲んでコメント化すると、ただの文字列とみなされて計算処理は行わません。
ただし、「次の場合にオブジェクトを隠す」に記述した条件式をコメント化する場合は、少し注意が必要です。

1.はじめに (「次の場合にオブジェクトを隠す」とは)

FileMakerでオブジェクトの表示・非表示の設定を行う際は、「次の場合にオブジェクトを隠す」を使用します。ここに真(True)か偽(False)かを返す条件式を記述し、結果が真(True)であれば非表示となります。

 

例えば、会員レイアウトにおいて、備考フィールドの「次の場合にオブジェクトを隠す」に

IsEmpty ( 会員::氏名 )

と記述すると、氏名フィールドが空の時に真(True)と判定され、備考フィールドが非表示になります。

 

 

2.現象

さて、この条件式を一時的に無効にしたい(また使うかもしれないので消さずに残しておきたい)という場合、どうすればよいでしょう。式を/* */で囲ってコメント化する、という方法を思いつくのではないでしょうか。

/*IsEmpty ( 会員::氏名 )*/

確かにこの例の場合、氏名フィールドが空であってもなくても、備考フィールドは表示されるようになります。

 

ところが、この方法を使っても備考フィールドが表示されないケースがあります。

例えば、条件式が

IsEmpty ( 会員::住所1 )

の場合、これをコメント化して

/*IsEmpty ( 会員::住所1 )*/

としても、住所1フィールドが空かどうかに関わらず、備考フィールドは表示されません

 

この違いは一体なんなのでしょうか。

 

3.原因

実は、先程のように「次の場合にオブジェクトを隠す」の条件式全体をコメント化すると、自動的に" "で囲まれます。つまり、コメントではなくテキストデータとして扱われます。
FileMakerでは、真偽判定の条件式にテキストデータが与えられた場合、この文字列から数字のみを抜き出して判定に利用します。0または空であれば偽(False)、それ以外は真(True)です。

"/*IsEmpty ( 会員::氏名 )*/"

この場合、数字がありませんので、空、すなわち偽(False)と判定されます。
一方、

"/*IsEmpty ( 会員::住所1 )*/"

こちらの場合は、文字列から数字(1)が抜き出され、真(True)と判定されます。そのため、備考フィールドは表示されないのです。

 

条件式にコメントを記載しているときも注意が必要です。

/* 2022-05-20 氏名未入力時、非表示にする */
IsEmpty ( 会員::氏名 )

この場合、条件式の部分を/* */で囲ってコメント化すると、

"/* 2022-05-20 氏名未入力時、非表示にする */¶
/* IsEmpty ( 会員::氏名 ) */"

のように、1行目のコメント文を含めた全体が" "で囲まれ、テキストデータ扱いとなります。そして、ここから数字(20220520)が抜き出され、真(True)と判定されます。

 

「次の場合にオブジェクトを隠す」の条件式をコメント化した場合、計算処理は行われませんが、真偽判定が行われないわけではありません。条件式欄に何か書いている限り真偽判定は行われる、ということになります。

 

4.解決策

一時的にコメント化しておきたい場合は、その前か後ろに False(もしくは0) または True(もしくは 1)を書いておきましょう。
そうするとコメント化した条件式が" "で囲まれることはなく、コメントとして残ります。

/* IsEmpty ( 会員::住所1 ) */
False

 

5.補足

真偽判定の条件式を記述する場所としては、他にも
・ポータル:「ポータルレコードのフィルタ」
・データベースの管理:「入力値の自動化」の「計算式で制限」
などがありますが、これらは上記内容とは動きが異なります。

これらの条件式は/* */で囲っても、自動的に" "で囲まれることはなく、あくまでコメント文として残ります。その結果、空ではない、つまり真(True)と判断されます。

これらの項目は、条件式の適用・不適用をチェックボックスで制御できます。
一時的に無効にしたい場合も、(わざわざコメント化せずとも)チェックボックスをOFFにするだけで良いという点が、「次の場合にオブジェクトを隠す」と動きが異なる要因だと思われます。

 

詳細

1.現象

同じサイズ(幅・高さ)の画像を2枚用意し、FileMakerのオブジェクトフィールドに取り込んだところ、異なる大きさで表示されるという現象に遭遇しました。

2.再現

問題の現象を再現してみます。

1)画像の準備

同じサイズの画像を2枚用意します。

2)ブラウザで表示

画像を表示するための、最低限のHTMLコードを書きます。

<html>
  <head></head>
  <body>
    <div>
      <img src='image1.png'>
      <img src='image2.png'>
    </div>
  </body>
</html>

これをブラウザで実行すると、2つの画像が同じサイズで表示されます。

3)FileMakerで表示

FileMakerでオブジェクトフィールドを2つ持つテーブルを作成します。

レイアウト上に2つのオブジェクトフィールドを配置します。
自動で拡大縮小されないように、データの書式設定は「枠に合わせてそのままのサイズで表示する」にしておきます。

画像をそれぞれのフィールドに取り込むと、異なる大きさで表示されました。

レイアウトモードで[挿入]-[ピクチャ]を選択し、レイアウトに貼り付けた場合も同様です。

3.原因

2つの画像の「dpi値」が異なっていることが原因でした。


dpi(Dots Per Inch)とは、1インチの中に占めるドット数、つまり解像度です。
dpiの詳しい説明はここでは省略しますが、画面表示で重要なのはあくまでピクセル数であり、画像が持っているdpi値は基本的には画面表示に影響しない、とされています。
ブラウザで2つの画像が同じ大きさで表示されるのはこのためです。

ところがFileMakerでは、同じピクセル数の画像でも、dpi値によって表示される大きさが変わります。
WordやExcel、PowerPointといったOfficeアプリケーションも同様です。
一方、同じMicrosoft製品でも、OneNote、Word Online、Excel Onlineなどではdpi値の影響を受けないようです。

この違いについて、「アプリケーションが画面表示のみを前提としているか、印刷されることも想定しているかによる」という情報もありました。
言い換えると、「画像の作成者が期待したサイズで忠実に印刷することに重きを置くかどうか」ということでしょうか。
いずれにせよ、FileMakerで画像を扱う際は、画像に設定されたdpi値に注意する必要があるようです。

4.解決策

画像のdpi値を揃えると、同じ大きさで表示されました。

もしFileMaker上で、思ったより画像が小さく表示される、あるいは大きく表示されるといったことがありましたら、画像ファイルのdpi値を確認してみてください。

詳細

FILEMakerでは数字を9桁以上含む数値フィールド、戻り値が数値型の計算フィールドを画面上に表示する場合、書式の設定に注意が必要です。

書式の設定により表示のされ方が異なります。
※書式はインスペクタの【データ】-【書式】から設定出来ます。

 

例:8桁以下の場合

「第12345678」と入力
書式に関係なく「第12345678」と表示されます。

 

9桁の場合

「第123456789」と入力
書式設定「一般」(デフォルト設定)とすると「123456789」と表示されます。
フォーカスを当てると「第123456789」となります。
書式設定「入力モードそのまま」とすると「第123456789」と表示されます。

 

10桁以上入力すると

書式設定「一般」では「1.2346e+09」のように表示されます。
フォーカスを当てると「第1234567890」となります。
書式設定「入力モードそのまま」とすると「第1234567890」と表示されます。

 

 

「第」(文字)を表示させる場合には、入力モードそのままで設定しておく必要があります。

 

 

 

詳細

2021年06月時点
FileMaker Pro 19になってからホストのファイルが、ある動作の時のみ開かない!!という現象が確認されています。

【開かない手順】

  1. FileMaker Pro 19を起動
  2. メニューの「ファイル」 >「 ホスト」 を表示し、 開きたいファイルがあるホスト名を選択
    (※お気に入りに追加したホストが表示されます)
  3. ファイルを選択

この順番の場合ファイルが開きません!

選択して開くを押しても何も起きずにポップアップ画面が終了。

【開く手順】

Aパターン

  1. FileMaker Pro 19を起動
  2. お気に入り登録したファイル or 最近使ったファイル から選択して開く



Bパターン

  1. FileMaker Pro 19を起動
  2. 何かしらファイルが開いてる状態(ローカルファイルを開く or  お気に入り or 最近使ったファイル などで)
  3. メニューの「ファイル」 >「 ホスト」 を表示し、 開きたいファイルがあるホスト名を選択
  4. ファイルを選択し、開く

Cパターン

  1. FileMaker Pro 19を起動
  2. メニューの「ファイル」 >「 ホスト」 >「 ​ホストを表示」でホスト一覧画面を表示
  3. 開きたいファイルがあるホスト名を選択後、ファイルを選択し、開く

Dパターン

  1. ショートカットを作成し直接開く方法
    (fmp://{IP}/ファイル名 or fmp19://{IP}/ファイル名)をショートカットのアドレスに書き込み、ワンクリックで開きます。


!注意!


2020 年より、Claris 社では継続中の年間ライセンスをご利用のお客様と永続ライセンスで有効な保守契約をご利用のお客様にのみ製品リリース(新機能、バグ修正、オペレーティングシステムとの互換性)が提供されます。

もしも永続ライセンスのみで保守契約をされていない場合は、この問題が解消されない可能性がありますので、上記パターンでご使用ください。

詳細

Filemakerのシステムで、入れ替えなどで時々発生することとして、旧バージョンも並行して一時的に利用する…という事があります。

ファイルをダブルクリックしても、fmpプロトコルで起動しても、最新のFileMaker(最後にインストールしたFileMakerのバージョン)で開いてしまうため、旧ファイルを一発で開きたい!という時に困ります。
FileMaker18からはfmpプロトコルでバージョン指定が出来ますが、過去のFileMakerではできないのです。


【対策】
Windows10のみの検証になります。
あしからず。

【環境】
Windows10

【作成方法】
1)ショートカットを作成時に、プログラムフォルダーにあるFileMakerの対象バージョンのexeを指定。

2)できたショートカットを右クリックでプロパティを表示
3)リンク先 を編集します。
現在は言っているexe指定の後ろに半角スペースを入力、そのあとに開きたいファイルのパスを書き込みます。
※スペース入りのフォルダーなので、保存時にエラーになりやすいです、その時はダブルコーテーションで囲みましょう

保存が完了すると、アイコンがショートカットからFMの対象バージョンのアイコンに変わります。

■ローカルファイル指定例
"C:\Program Files\FileMaker\FileMaker Pro 13 Advanced\FileMaker Pro Advanced.exe" C:\ファイルのあるディレクトリー\testfm13.fmp12

■サーバー指定例
"C:\Program Files\FileMaker\FileMaker Pro 15 Advanced\FileMaker Pro Advanced.exe" fmp://999.999.999.999/testfm15.fmp12

詳細

こんなときー!

FileMaker上で画像をオブジェクトフィールドに取り込む際、やたら時間がかかることがあります。
テスト環境では問題なく登録が出来たのに、本番では激遅?!など。

 

【環境】

今回起きた環境

  • サーバー:Windowsサーバー
  • FileMaker Server 17
  • FileMaker Pro Advanced 17

【原因】

ポート番号:443  が空いてるか確認しよう!

FileMakerのドキュメントには、「オブジェクトフィールドへのデータの挿入には443番ポートが使われる」と書かれています。
しかし、443番ポートを開放しなくても、(時間はかかるものの)挿入が出来てしまうんです!
小さい容量であれば環境によってすぱっとデータが入ってしまいます。
テスト環境上では問題なかったのに、本番稼働では重い!というような時は443番ポートを確認しましょう。

詳細

FileMakerで変数にテキストを設定する際、一般的には「変数を設定」スクリプトステップを使うことが多いのではないかと思います。「変数を設定」スクリプトステップは、FileMakerに変数という機能が登場したVer.8から存在しています。

さて、この変数へのテキスト設定という場面で、「テキストを挿入」スクリプトステップも使えるということをご存知だったでしょうか。「テキストを挿入」スクリプトステップは、もとは指定したフィールドにテキストを挿入するためのものでしたが、Ver.16でテキストの挿入先として変数も指定することができるようになりました。

「変数を設定」スクリプトステップが用意されているにも関わらず、わざわざ「テキストを挿入」スクリプトステップを使うメリットはあるのでしょうか。

両スクリプトステップの違いを見ていきましょう。

 


 

【1】挿入する値として指定できるものの違い

「テキストを挿入」で指定できるのは、その名の通り、テキスト(文字列リテラル)のみです。変数などを指定することはできません。例えば「$a」と記述すると、「$a」というテキストがセットされます。

「変数を設定」スクリプトステップは、文字列リテラルだけでなく、変数やフィールド、関数などを指定することができます。「$a」と記述すると、$aという変数にセットされている値がセットされます。「"$a"」と記述すると、「$a」というテキストがセットされます。

したがって、固定のテキストを挿入する時はどちらのスクリプトステップも使用可能ですが、それ以外の場合は「変数を設定」を使用することになります。


 

【2】ダブルクォーテーションの扱いの違い

「変数を設定」スクリプトステップの場合、挿入するテキスト全体をダブルクォーテーション(")で囲む必要があります。そのため、挿入するテキストにダブルクォーテーションを含んでいる場合は、エスケープ処理が必要です。具体的には、テキスト内のダブルクォーテーションの前にバックスラッシュ(日本語環境では¥マーク)を付けます。

 

一方「テキストを挿入」スクリプトステップでは、全体をダブルクォーテーションで囲む必要がありません。したがって、テキスト内にダブルクォーテーションを含む場合でも、エスケープなしで記述することができます。

テキスト内にダブルクォーテーションが多く含まれる場合(例えばHTMLソースなど)は、「テキストを挿入」スクリプトステップが便利です。


 

【3】上書き/追記の指定の違い

すでにテキストがセットされている変数を更新する場合、内容を上書きするケースと、テキストを追記するケースとがあります。それぞれのスクリプトステップで、上書き・追記の指定のしかたに違いがあります。

 

[3-1]変数を設定

「変数を設定」スクリプトステップでは、上書きと追記とで「値」の書き方が異なります。

 

・上書き

「値」に上書きするテキストを入力します。

・追記

「値」に「$変数名 & "追記するテキスト"」 を入力します。

 

 

[3-2]テキストを挿入

「テキストを挿入」スクリプトステップの場合、テキストの内容に違いはありません。「内容全体を選択」チェックボックスによって上書き・追記を指定します。

 

・上書き

「内容全体を選択」チェックボックスをONにします。

・追記

「内容全体を選択」チェックボックスをOFFにします。

 

これについては好みが分かれるところだと思います。
(個人的には、「テキストを挿入」の「内容全体を選択 = 上書き」、というのが直感的でないように思います。)


 

【4】処理速度の違い

変数($message)にテキスト(あいうえおかきくけこさしすせそたちつてと)をセットする処理をループで繰り返し実行し、その時間を測定しました。

・上書き

ループ回数 テキストを挿入 変数を設定
10,000回 1秒 0秒
50,000回 3秒 3秒
100,000回 5秒 5秒
200,000回 10秒 13秒
400,000回 21秒 24秒

上書きの処理時間は、両スクリプトステップにほとんど差はありませんでした。

・追記

ループ回数 テキストを挿入 変数を設定
10,000回 1秒 1秒
50,000回 3秒 38秒
100,000回 5秒  2分56秒
200,000回 10秒 11分11秒
400,000回 22秒 44分11秒

追記処理の速度は、ループ回数が増えるにつれて大きな差が生じました。
「テキストを挿入」は上書き処理と変わらない時間で処理しているのに対し、「変数を設定」は指数関数的に時間が遅くなっていきました。


 

【結論】

以上のことから、「テキストを挿入」を変数に対して使用するメリットは、ダブルクォーテーションのエスケープ処理が不要だという点と、大量テキストの処理が高速に行えるという点だと言えそうです。

例えばHTMLをWEBビューアで表示するケース。HTMLヘッダ部分は、ダブルクォーテーションを含む定型文であることが多いと思います。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<script src="https://hoge/fuga.js"></script>
...

他にも、jsonを扱う際にもダブルクォーテーションが数多く登場します。
フィールドや変数の値をjsonに反映する場合は「変数を設定」を使用することになりますが、定型の箇所には「テキストを挿入」を使うと便利かもしれません。

また、大量の固定テキストを扱うことはあまりないかもしれませんが、そういう場面では「テキストを挿入」を採用することも選択肢の一つとして覚えておくと良さそうです。

詳細

時々お問い合わせがある自動ログイン問題。
便利なんですが、パソコンの使用者が変わって同じアカウントでパソコンにログイン(あまりよろしくないのですが)とか
共有のパソコン一台を色々な人が使用しているとか、という時に誰かが自動ログインにチェックをしてしまうと、それ以降の人の個別アカウントが使用できなくなることがあります。

今回はその情報をリセットする方法をご紹介。

🔷Windows
ファイル検索で「資格情報」と検索しましょう!

すると、「資格情報マネージャー」が出てきます。
WINSOWS資格情報 をクリックし、対象のファイル名
FileMakerだと「FM:<ファイル名>」と登録されているかと思います。

🍎MAC
名称が「キーチェーン」になります。
Mac の「キーチェーンアクセス」アプリケーション で、キーチェーンが隠れている場合は、
「表示」>「キーチェーンを表示」と選択します。

「キーチェーン」リストでキーチェーンを選択します。

「ファイル」>「キーチェーン<キーチェーン名>を削除」と選択します。

「参照を削除」をクリックします。

詳細

上がってほしくない消費税、ですが10%に上がってしまいます。
お客様のシステムで時々あるのですが、昔はそうそうに上がらなかった消費税のため固定や直接指定されているシステムがあったりします。
この機会に汎用的な運用に切り替えるのはいかがでしょう?!

【利点】
・過去の消費税の期間が分かる!
・未来の消費税を前もって登録できる!(消費税変更日に張り付いて変更なんてしなくても大丈夫!)
・軽減税率のように複数の消費税登録時に複数表示が可能になる!

 今回は簡単に作成!消費税マスタ、応用編は簡易経過措置付き★のご紹介!

今回の経過措置は4/1前までの契約の場合は8%
それ以降で、10/1を超えた契約は10%計算です!きゃーーー

<豆知識という名のメモ!>経過措置とは?

企業だと長いスパンでの契約があるかと思います。消費税8%だった時に契約したのに完了時&支払時は10%という時の消費税をどうするか!という決まりだそうです。
ですが、経過措置が適用される契約とされない契約があるそうですのでご注意を!今回のファイルには契約の判別を備え付けておりませんのであしからず!
 詳しくは国税庁のHPで! http://www.nta.go.jp/index.htm
消費税率等の引上げについて(平成31年(2019年)10月1日~)あたりを参照です。(2019年5月情報)

.

見本のファイルはこちら>>ダウンロードファイル
.

★初級レシピ

 マスターに登録した消費税を、どんなレイアウトでもドロップダウンで取得しよう!
★初級1:ドロップダウン表示・・・簡単に表示非表示が行われてなんて便利!
★初級2:表示順指定しちゃうぞ!・・・表示非表示しつつ、選択もしやすくなっちゃう!

①データーベース

【消費税マスタ】
・表示順
・消費税
・消費税開始日
・消費税終了日
・削除フラグ
・表示順
・経過措置開始日(応用編で使用)
・経過措置施行日(応用編で使用)

【システムマスタ】
・ct_1 ...どこでも使えるようにグローバルフィールド

①-1)マスターテーブルの登録方法
消費税情報を登録していきます。
・消費税率を数字で入力、消費税の開始日、終了日の登録を行います。
 開始日終了日を入れることで、事前に消費税の登録が可能に!
・「表示順」は★初級2のドロップダウンリストのソート用です。
・削除フラグチェックのために、消費税0を作成。
・経過措置は応用編にて。

①-2)リレーションシップを作成します
ここで削除フラグとシステムマスターを連結!

削除フラグが1になったものは表示されなくなるようにします。

②値一覧の作成

★初級1ドロップダウン用の値一覧を作成します
名称は「Ci_消費税_フィールド設定」
消費税フィールドを選択し、ここで「次のテーブルから関連レコードの値のみ含める」でシステムマスタ(M0000_System)を選択します。

★初級2ドロップダウン用の値一覧を作成します
名称は「Ci_消費税_ソート」
初級1と同じ設定をしたら、2番目のフィールドを指定し、「2番目のフィールドのみ表示」にチェック。

③レイアウト設定

 フィールドに設定します
 ★初級1ではドロップダウンリストに「Ci_消費税_フィールド設定」
 インスペクタのデータ書式設定でパーセントにしておきます。

 ★初級2ではポップアップメニューで「Ci_消費税_ソート」にします。
 こちらは計算式で%表示するように設定しているので書式設定は不要です。

⑤完成

これで完成です。簡単!簡易!

★応用編レシピ

ここからは応用編!ちょっと難しくなります。タイトルをクリック!

★応用編3レシピ
 スクリプトで取得!現在の日付から判別し、最新の消費税を取得しちゃう!

スクリプト

 既存のスクリプトに設定しやすいように、新規作成スクリプトをかませています。
 メインスクリプトは「T_消費税_シンプル」
 ・消費税マスタを開始日と終了日で検索し、結果の消費税を返すだけです。

 ・受け取った返却値を作成したレコードの消費税にセット!
これで完成です。!

サンプルファイルの新規ボタンを押下して見ましょう!

★応用編4レシピ
 検索の応用です!
 マスターテーブルの経過措置フィールドがここで使用されます

スクリプト設定

 ・契約日は必須になります。
 ・前回の消費税検索でget(日付)で行っていたのを契約日で検索するように変更します。
 ・検索内容は応用編3のレシピとほぼ一緒です。ソートは開始日に変更して、対象のデータを取得。

 ・取得したデータの最初の行を変数にセットして順番にチェックしていきます。
 ・経過措置前の場合は取得した消費税、後の場合は納品日の日付で消費税の取得を行ってます。

 ・納品日は必須ではないです。その場合は契約日の時点の消費税を返します。
 

サンプルファイルの契約日、納品日を変更して、経過措置ボタンを押下して見ましょう!

もっと応用アドバイス
・応用編4をもっとシンプルにしたい!汎用的にしたい!
  という場合は引数を使って、検索スクリプトを分けてしまいましょう!
  引数は日付です。受け取り側は変数にセットしましょう。

・関数が使える方 難易度高め★★★
 アドバンスド機能が使える事前提ですが、関数を作成しちゃいましょう!
 そうすることで、フィールドの計算式で「=税抜金額 * 0.08」と記入しているものに対し「=税抜金額 * gettax(契約日)」と直すだけで、消費税を取得する関数を作成できます。
  今回のソースの場合関数の中身はこんな感じになります。
 Let ( [
%日付=Get(日付);
%一覧 = ExecuteSQL ( "SELECT M0100.\"Fd_経過措置_指定日\"
, M0100.\"Fd_経過措置_施行日\"
, M0100.\"Fn_消費税\"
FROM \"M0100_tax\" AS M0100
WHERE M0100.\"Fd_開始日\" <= ?
AND M0100.\"Fn_削除Fg\" is null
order by M0100.\"Fd_開始日\" desc"
;"¶"; "¶" ;%日付);

$開始日 = GetValue ( %一覧 ; 1);
$終了日 = GetValue ( %一覧 ; 2);
$消費税 = GetValue ( %一覧 ; 3)
<!---- チェック処理省略 --->
];
$消費税
)

詳細

FileMaker Ver13~16と、17の違い

FileMakerのVer13で登場した「次の場合にオブジェクトを隠す」は、条件式を満たす場合に該当オブジェクトを非表示にする機能です。
「条件を満たすまでボタンを押されたくない」「権限のある人にだけ値を見せたい」といった仕様を実現することができます。

 

その「次の場合にオブジェクトを隠す」機能の仕様が、Ver17から下記のように変わりました。
「条件式がエラーと評価された場合、オブジェクトは必ず非表示になる」
では、Ver16以前はエラーを含む場合でも表示されていたのかというと、必ずしもそうではありません。

 

様々なエラーを含む条件式を設定し、Ver16(以前)とVer17とで動きを確認してみましょう。

サンプルファイル: hide_object.fmp12

 

準備

「sample」テーブルを作成し、「Field1」「Field2」という名前のフィールドを作成します。

リレーションシップグラフで、「sample 2」「sample 3」というテーブルオカレンスを作成します。

sampleテーブルオカレンスを紐づけたレイアウトを作成し、ボタンオブジェクトを7つ配置します。
それぞれのボタンの「次の場合にオブジェクトを隠す」に、条件式を入力します。

A.sample::Field2

B.sample 2::Field1

C.sample 3::Field1

D.(1/0)

E.(1/0) = 2

F.(1/0) ≠ "?"

G.(1/0) = "?"

sampleテーブルからField2フィールドを削除します。

リレーションシップグラフからsample 3テーブルオカレンスを削除します。

 

結果

Ver16以前

Ver17

 

1.式内のフィールドが参照できない場合(A,B,C)

フィールドを削除した場合や、現在のレイアウトから参照できないテーブルオカレンスを参照している場合など。
Ver17では非表示なのですが、16以前では隠されません。

 

2.式全体がエラーとなる場合(D)

例えば条件式を「1/0」(ゼロ除算)とすると、式はエラーとなります。
この場合、Ver17でもVer16以前でもオブジェクトは非表示となります。

 

3.式の一部にエラーを含む場合1(E,F,G)

条件式を「(1/0) = 2」とすると、左辺がエラーとなります。
式にエラーを含んでいますので、Ver17ではオブジェクトは非表示となります。
一方Ver16以前ですが、左辺は"?"を返します。
その結果、「"?" = 2」という式になります。
この式は成立しないため、式全体としてはFalse(偽)を返します。
その結果、オブジェクトは隠されません。
どちらも非表示となりますが、その過程が異なるのです。

では、「(1/0) ≠ "?"」という条件式だとどうなるでしょうか。
もちろんVer17では非表示となります。
Ver16以前では「"?" ≠ "?"」となり、式全体としてはFalse(偽)を返します。
その結果、オブジェクトは隠されません。

さらに「(1/0) = "?"」の場合。
Ver17では非表示。
Ver16以前では「"?" = "?"」となり、式全体としてはTrue(真)。よってオブジェクトは隠されます。

 

まとめ

  削除したフィールドを参照 他のリレーショングループを参照 削除したテーブルオカレンスを参照 1/0 (1/0)=2 (1/0)≠"?" (1/0)="?"
Ver.17 非表示 非表示 非表示 非表示 非表示 非表示 非表示
Ver.13~16 表示 表示 表示 非表示(※1) 表示 表示 非表示(※2)

※1:式全体がエラーのため ※2:式が成立するため

 
こうしてみると、Ver16以前の判定はややこしく感じますね。
Ver17でスッキリ整理された、ということになるかと思います。

なお、既存のFileMakerファイルのVerを上げた際、表示・非表示の状態が変わってしまう可能性がありますので、しっかり確認しておきましょう。

詳細

YearName関数の代わりに使える、新元号「令和」対応のカスタム関数を作成しました。

 

2019年5月1日に行われる改元に際し、FileMakerの対応は公式ページでアナウンスされているとおりです。

  • バージョン17については、5月中にアップデータ提供予定 2019/4/25のアップデータにて対応済み
  • バージョン15および16については、6月以降にアップデータ提供予定 2019/6/18のアップデータにて対応済み
  • バージョン14以前については、アップデータの提供予定なし

 

【日本の新しい年号への対応について】
https://support.filemaker.com/s/article/Japanese-New-Emperor-Calendar?language=ja

「この機会にぜひ最新バージョンへの乗り換えを」というところではありますが、諸般の事情により、バージョン14以前を引き続き使われる方もいらっしゃるかと思います。

 

そこで、YearName関数の代わりに使えるカスタム関数を作成しました。

YearName関数を使っている箇所をこちらのカスタム関数に置き換えることで、新元号「令和」への対応ができます。バージョンアップまでのつなぎとしてご利用下さい。

(※カスタム関数の作成は、FileMaker Pro Advanced が必要です)

 

サンプルファイル: NewYearEra.fmp12

 

Kgs_YearName ( 日付 ; 形式 )

2019年5月1日より前であれば従来のYearName関数を呼び出し、後であれば新元号「令和」表記を返します。引数はYearName関数と同じです。

 

 

2019年5月1日を和暦表示した例。従来のYearName関数では「平成31」となりますが、Kgs_YearName関数では新元号で表示されています。

詳細

.
 FileMakerにはテーマ設定が追加されていますが、皆さんご利用されていますか?
.

テーマ設定機能が出来てから作成時に便利になりましたが、テーマ設定の無い旧バージョンからアップする時は、設定しなおすのが面倒でそのまま…っという方は多いんではないでしょうか?
そんなに変わらないんじゃなーい?っと思われるかもしれませんが、変わります!
.

 【テーマ設定】やったほうが良いです!
 何が違うかといいますと、ファイルの重さが違うんです!
.

FileMaker社でもテーマ設定を行うことで軽くなるというお話が出ています。
テーマ設定はいわゆるHTMLにあるスタイルシートみたいなものだそうです。
なので、レイアウトごとに書き込まれていた設定条件を一か所でまとめて管理したほうが軽くなるんです!

 いやいや、でもうちのファイルはデザインそんなにないしーと思われる方、ある程度のレイアウト数がありましたら設定を見直された方が良いですよ!
しかも!旧ファイルは機能が少ないため比較的軽いですが!、新バージョンにアップしますと機能が追加され重くなってしまいます。

【弊社のファイルでの実験】

旧ファイル:FileMakerPro9 拡張子fp7
レイアウト数:60
テーブル数:16
スクリプト数:204
.

1)FileMakerPro9
1,752KB
2)FileMaker17に変換時
4,780KB
 →最適化
3,412KB
3)17に変換後、テーマ設定
3,856KB
 →最適化
2,688KB






.
.

ここまで変わっていきます!
そのほかに、旧ファイルで画像ボタンにしていたものは、全てボタン機能に切り替えています。
レイアウト設定上でも旧ファイルではできなかったライン設定などもあるので、オブジェクトで表現しなくてもよくなったものはジャンジャン消していきましょう!

詳細

データベースデザインレポートが0kbで作成されることがありました。

原因

調べていくと、なんと原因は、レイアウトに特殊文字が貼り付けられていたこと!!
レイアウト上では「!!」と表示されていました。

文字コードは「U+0013」。

対処方法はずばり、この文字を消す以外に手がありませんでした。

もしかしたら他にもあるかもしれません。。

詳細

こんなときー!

FileMaker13をwindows10で使用時、メール送信スクリプトが使えなくなった時!
今回おきたのは、ofice365メールでしたので、その対処法をご紹介!
※FIleMaker13は、現在FileMaker社のサポート対象外のバージョンなため、他の動く方法をさがします!

原因の一部として

・FileMakerPro13のバージョンは32bitのアプリのため、windows10が64bitの場合、ofice365のメールが使えなくなることがあります!
FMサポート記事詳細
 https://support.filemaker.com/s/answerview?language=ja&anum=14914
 https://support.filemaker.com/s/answerview?language=ja&anum=14550
詳しい内容は上記記事をお読みください。

対処法

・メール送信は使えないため、清く「URLで開く」でHTMLメールリンクで起動させてしまいましょう。
前提条件:初期起動をちゃんとofice365の指定にしておく。
 設定、確認方法↓
 https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=018751

注意!

 ・HTMLリンクになるので、空白、改行、特殊記号を変換しておきましょう。
 (改行:%0d%0a、半角スペース:%20)
 ・日本語の文章は文字化けしやすいので注意

詳細

文字化け問題!


古いFileMakerから最新のFileMakerにバージョンアップすることが時々発生しますが、
その際に一部日本語で正しくデータ移行されずに、文字化けにより別の文字になることがあります。
弊社で把握している文字化けをリストアップしました!

発生バージョン:

FileMaker5 (以下FM5)のバージョンで入力されたテキストデータ

対処方法

FM5のデータをcsvファイルでエクスポート。
ファイルを細心のバージョンに変換を終えてから、インポートしましょう!

文字化けした特殊文字リスト

FM5 → FM15
Ⅰ → 特
Ⅱ → 監
Ⅲ → 企
Ⅳ → 協
Ⅴ → 労
① → 日
② → 月
③ → 火
④ → 水
⑤ → 木
⑥ → 金
⑦ → 土

詳細

こんなときー!

同じテーブルにチェックボックス用のフィールドを置くと、同時編集時に動いてしまう。
(たとえば、複数印刷のために選択をしたりする場合)
同時編集されてる時に、選択チェックを出来るようにするには?!

例)検索結果の一覧で、特定のユーザーのみ選択して処理を行いたい場合、
普通のフィールドでチェックボックスを作ると、誰かが同じテーブルを編集した場合、ぶつかったり自分のチェックが消えてしまう!

レシピ

①データーベース

テーブル構成
・リストテーブル
・WKテーブル

②リレーション設定

・関連データの自動作成
WKテーブル側にチェックフラグを持たせ、使用者アカウントとテーブルID、レイアウト名で紐付け、リレーションで自動作成にし、チェックを入れるだけで作成されるように設定。
【リレーション設定例】

※レイアウト名で紐づけを行うと、別のレイアウトで同じように使用できる。

③スクリプト設定

現在のアカウントで、チェックフラグが入ったものだけを検索し、印刷すれば、他の人がチェックしたものに影響さずにできます!
また、画面遷移時、もしくは、ファイルを閉じるさいに、使用者アカウントでWKを検索し削除!

【adminがチェックした画面】

【ワーク側の作成データ】

.
見本のファイルはこちら>>ダウンロードファイル
.

詳細

こんなときー!

ソートしたカウントの[小計・ソート対象]パートの結果だけを複数印刷したい。ボディーの内容(明細)はいらん!
そんなときー!
その為だけに、新しいフィールドを作って、結果をセットなどとメンドウなことをしないで作りたい、という人のためのアンチョコ。

たとえば)今月流行している風邪が何種類かあり、かかっている患者の小計を、種類ごとにタイトルをつけて印刷したい。
インフルエンザA型はこれまで20人、インフルエンザB型30人。など

レシピ

①データーベース

フィールド
・ソート用フィールド
・基準フィールド
・集計フィールド(カウント、現在のカウント、ソートされたグループごとに集計を再開する、繰り返しの集計:全体、ソート対象指定:ソート用フィールド)

.
【データ例】

②レイアウト設定

 [ヘッダー]パートでがっつり幅をとった後、[小計・ソート対象]パート、[フッター](無くても良い)で構成して印刷すると、[小計・ソート対象]パート分のみ印刷される。
 ボディは入れちゃいけません!
 → ボディを入れると、対象データの個別レコード(明細)が印刷されるが、ヘッダーとフッターのみにすれば、小計パートのデータ分しかプレビュー時に表示されなくなるのです!パチパチ
 
 ※同じレイアウトで小計が違うという場合は[小計・ソート対象]パートを複数設置!
 ソートが違ければ、表示はされないので、見せたいパートのソートを行なえばOK

【印刷レイアウト画面例】 ※リスト形式で表示しています。
印刷レイアウト画面

③スクリプト設定

対象のデータを絞り込み、ソートを行なうことで小計・ソート対象のデータが表示されます。

【注意!】PDF保存のとき「対象レコード」を選択しないと、集計パートは印刷されない、「現在のレコード」だと空欄になってしまいます。

【印刷プレビュー例】
1ページ目2ページ目

.
.
見本のファイルはこちら>>ダウンロードファイル
.

詳細

「FileMakerあんチョコっと」は、FileMaker開発でほんの少し参考になる内容から、開発時で起きた問題をまとめたものです。
ちょこっとした内容や、硬くなりすぎず、あんちょこのようにさくっと軽く読める内容を目指して、時々出先で困った時の社員のアンチョコ用にも・・・

詳細