tag:blogger.com,1999:blog-38954784589184529312024-03-13T08:50:13.758+09:00FileMaker(ファイルメーカー)とシステムエンジニアリングの森FileMaker(ファイルメーカー)とその他、システムエンジニアリアリングについて書いています。また、FileMakerについてはこのブログを見て、使ってみようかなと思えるように、始めたばかりの初心者の方にコツを少しつかんでもらえるようになればいいかなと思っています。Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.comBlogger84125tag:blogger.com,1999:blog-3895478458918452931.post-55027806381596398492016-11-30T17:30:00.000+09:002019-04-17T14:31:53.355+09:00FileMaker Cloud(ファイルメーカークラウド)こんにちは!<br />
<br />
カンファレンスでも発表がありました、FileMaker Cloudです!<br />
<br />
アマゾンが提供するクラウド上のサーバー提供サービスのEC2というもので、FileMaker Serverが利用できるサービスのようです。<br />
<br />
……ようです。というのもの、まだ、EC2でも使用できるリージョン(サーバーの場所)がアメリカなど一部に限られ、日本のリージョンではまだ提供されていないからです。<br />
<br />
ちょっと覗いてみたところ、<br />
<br />
通常、EC2のインスタンス(サーバー)を作成し、リモートデスクトップを開いて、FileMaker Serverをインストールして……という作業が必要なところ、<br />
<br />
EC2のウィザードだけでFileMaker Serverが利用できるようになるもののようです。<br />
<br />
しかも、以前は最も簡単な方法でも、FileMaker Serverのライセンスの年間ライセンスを購入して、当然自分で直接お金も払う必要がありました。<br />
<br />
なんと、AWS(アマゾンウェブサービス)が代行で管理してくれる感じなので、ライセンスをEC2のインスタンスと同じように、使った分だけ払えばいいだけなので、AWSにインスタンスの料金と一緒に請求さるようです。<br />
<br />
非常に楽ですね。<br />
<br />
価格が気になるところなので、少し調べてみました。<br />
<br />
リージョンが違うので、日本リージョンでは違う可能性もあります。<br />
<br />
5ユーザーライセンスの場合、1時間あたり0.99ドルライセンス料としてかかるようです。<br />
<br />
英語が得意ではないので、よくわかりませんでしたが、短期間の場合はこの料金だけど、上限が年間888ドルになる? というような感じでした。<br />
<br />
ちなみに直接FileMakerから年間ライセンスを購入すると96,000円です。<br />
<br />
888ドルは1ドル=110円換算で97,680円なので、ほとんど変わりません。当たり前ですよね。<br />
<br />
クラウドにFileMaker Serverを運用する敷居が下がってくると思いますので、便利になってきますね!<br />
<br />
---追記-----<br />
クラウドは、FileMaker Serverの機能を完全に有しているわけではなく、カスタムWeb公開など一部の機能は使えません。Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-44975674984114287612016-09-20T17:30:00.000+09:002016-09-20T17:30:15.390+09:00リレーションを使ってデータを集計してみよう | FileMaker Proこんにちは!<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2016/09/relationship.html">ちょっと複雑なリレーションに挑戦してみよう</a>に引き続き、リレーションについてです。<br />
<br />
リレーションの目的はいろいろとありますが、その中の一つに「集計」するということがあります。<br />
<br />
今回はそのリレーションを使った集計方法です。<br />
<br />
<h2>
元データ</h2>
<div>
下図のような日付と売上を保存しているテーブルがあるとします。</div>
<div>
<br /></div>
<div>
今回はこれを月ごとに集計していきたいと思います。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-UzeSA9gCDns/V9i08p35I8I/AAAAAAAAAQU/jgpsnpm5MoYLJrOvUfvrsm8WdoXSKx2rQCLcB/s1600/20160913102758.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-UzeSA9gCDns/V9i08p35I8I/AAAAAAAAAQU/jgpsnpm5MoYLJrOvUfvrsm8WdoXSKx2rQCLcB/s1600/20160913102758.jpg" /></a></div>
<div>
<br /></div>
<h2>
準備(フィールドの作成)</h2>
<div>
まず、どの基準で集計するかという基準を作ってあげる必要があります。</div>
<div>
<br /></div>
<div>
今回の場合は月ごとに集計をしたいので、それぞれのレコードがどの月に属するかを判別するフィールドが必要になります。</div>
<div>
<br /></div>
<div>
下図のように「年月」というフィールドを用意しました。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/--2kTqeFMF28/V9jC0b__efI/AAAAAAAAAQk/UapryJISI3UqqRfcwGa4bmBcXdghIpuBQCLcB/s1600/20160913102836.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/--2kTqeFMF28/V9jC0b__efI/AAAAAAAAAQk/UapryJISI3UqqRfcwGa4bmBcXdghIpuBQCLcB/s1600/20160913102836.jpg" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
次にこのフィールドにオプションの計算式を設定します。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-dk6W1f_tMMA/V9jDYu2WWII/AAAAAAAAAQw/jX2oPucYxkoG-aohXEz1-hjT6cAAdf1rgCLcB/s1600/20160913103354.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-dk6W1f_tMMA/V9jDYu2WWII/AAAAAAAAAQw/jX2oPucYxkoG-aohXEz1-hjT6cAAdf1rgCLcB/s1600/20160913103354.jpg" /></a></div>
<div>
<br /></div>
<div>
このように計算式を設定します。</div>
<div>
<br /></div>
<div>
この計算式は日付フィールドが「2016/09/10」の場合「201609」を返します。</div>
<div>
<br /></div>
<div>
後半のRight関数は、月の桁数を合わせるためのものです。8月は08、11月は11と常に二ケタになるようにしています。</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
途中で計算オプションのフィールドを変更したり、追加する場合</h3>
<div>
今回のように、後で計算オプションを設定したフィールドを追加しても、計算がされません。</div>
<div>
<br /></div>
<div>
再計算を行い、年月フィールドに値を書き込む必要があります。</div>
<div>
<br /></div>
<div>
「フィールドに既存の値が存在する場合は置き換えない」チェックを外している場合、再計算が行われるのは、式に含まれる同じテーブルのフィールドが変更になったか、新しくレコードさ作成された場合の2つです。</div>
<div>
<br /></div>
<div>
既存のレコードの場合は「式に含まれる同じテーブルのフィールド」が変更になると再計算されます。</div>
<div>
<br /></div>
<div>
今回は「フィールド内容の全置換」を使って再計算を促します。</div>
<div>
<br /></div>
<div>
日付フィールドを選択し、「レコード」→「フィールド内容の全置換」を選択します。</div>
<div>
<br /></div>
<div>
下図のように計算式を設定します。</div>
<div>
<br /></div>
<div>
これを実行すると、年月フィールドに値が書き込まれます。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-xay69zRM6_w/V9jDHS06ZsI/AAAAAAAAAQ0/05ZMU0fnr3oaR5M29m9UukZ3dGbyS8QIQCEw/s1600/20160913103250.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-xay69zRM6_w/V9jDHS06ZsI/AAAAAAAAAQ0/05ZMU0fnr3oaR5M29m9UukZ3dGbyS8QIQCEw/s1600/20160913103250.jpg" /></a></div>
<div>
<br /></div>
<h3>
集計用の新しいテーブルの作成</h3>
<div>
<br /></div>
<div>
次に新しいテーブルを作成します。</div>
<div>
<br /></div>
<div>
ここでは下図のように集計というテーブルを作成します。さらにリレーションも設定します。その後に「売上」テーブルの計算式を設定します。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-mhyhKqqcom8/V9jRs9y-jMI/AAAAAAAAARE/tRkk2JaoLGMxAr0xViqrEE3ZF2ZB6BCWACLcB/s1600/20160913131459.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-mhyhKqqcom8/V9jRs9y-jMI/AAAAAAAAARE/tRkk2JaoLGMxAr0xViqrEE3ZF2ZB6BCWACLcB/s1600/20160913131459.jpg" /></a></div>
<div>
<br /></div>
<div>
図のように3つのフィールドを作ります。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-0wuhmByAmuU/V9jVhj32x0I/AAAAAAAAARM/O3VjPRCjR-0rmLyCwDkafvUadWTysGd_ACLcB/s1600/20160913131421.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/-0wuhmByAmuU/V9jVhj32x0I/AAAAAAAAARM/O3VjPRCjR-0rmLyCwDkafvUadWTysGd_ACLcB/s1600/20160913131421.jpg" /></a></div>
<div>
<br /></div>
<div>
※「このリレーションシップによるレコードの作成を許可する」にチェックを入れておきましょう。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
また売上フィールドには下記の計算式を設定します。</div>
<div>
<br /></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/--NWlq9deNbY/V9jDT-_73cI/AAAAAAAAAQs/boC8yn416jYisGLJzRqAwtGVj1r743kOACLcB/s1600/20160913131448.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://2.bp.blogspot.com/--NWlq9deNbY/V9jDT-_73cI/AAAAAAAAAQs/boC8yn416jYisGLJzRqAwtGVj1r743kOACLcB/s1600/20160913131448.jpg" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
集計用のテーブルにレコードを作成する</h2>
<div>
実際に集計値を取得するにはレコードを作る必要があります。</div>
<div>
<br /></div>
<div>
手動で作っても構いませんが、スクリプトを使ってみます。</div>
<div>
<br /></div>
<div>
先ほどテーブルの作成で「レコード作成用」というフィールドを作っています。これがミソです。</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<br /></div>
<div>
売上テーブルをコンテキストとするレイアウトに集計テーブルのこのフィールドを追加します。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-BU90GnDnKLw/V9jXg-rHHHI/AAAAAAAAARU/Q94xXXMRwwkq2EvPX8KFsq1YRqh7_vQCQCLcB/s1600/20160913133037.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-BU90GnDnKLw/V9jXg-rHHHI/AAAAAAAAARU/Q94xXXMRwwkq2EvPX8KFsq1YRqh7_vQCQCLcB/s1600/20160913133037.jpg" /></a></div>
<div>
<br /></div>
<div>
このレイアウトからレコード作成用のフィールドに何でもいいので値を書き込むと集計テーブルにレコードが作成されます。</div>
<div>
<br /></div>
<div>
これを自動で行うスクリプトを作成します。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-spyvpWpZmZI/V9jX1FzM0wI/AAAAAAAAARY/MoI_X-HMnq4ImPUsPGJWkrDel2HdVhWpACLcB/s1600/20160913133224.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-spyvpWpZmZI/V9jX1FzM0wI/AAAAAAAAARY/MoI_X-HMnq4ImPUsPGJWkrDel2HdVhWpACLcB/s1600/20160913133224.jpg" /></a></div>
<div>
<br /></div>
<div>
このスクリプトを動かせば、必要なレコードが集計テーブルで作成できます。</div>
<div>
<br /></div>
<div>
集計テーブルではこんな感じになります。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-Rkmgm2lxDd4/V9jYDXRY_9I/AAAAAAAAARc/dMUFEfeLwoMqWXuFdl5gNr32RoFurjXcQCLcB/s1600/20160913133317.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://4.bp.blogspot.com/-Rkmgm2lxDd4/V9jYDXRY_9I/AAAAAAAAARc/dMUFEfeLwoMqWXuFdl5gNr32RoFurjXcQCLcB/s1600/20160913133317.jpg" /></a></div>
<div>
<br /></div>
<h2>
問題点</h2>
<div>
この方法にも問題があります。</div>
<div>
<br /></div>
<div>
集計するレコード数が多くなってくると、重くなり使い勝手が悪くなります。</div>
<div>
<br /></div>
<div>
次回はその点について取り上げてみたいと思います。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-25130004793133870152016-09-12T17:30:00.000+09:002016-09-14T10:57:41.558+09:00ちょっと複雑なリレーションに挑戦してみようこんにちは!<br />
<br />
今回は「ちょっと複雑なリレーションに挑戦してみよう!」です。<br />
<br />
FileMaker Pro(ファイルメーカー)を始めると誰もがぶつかる壁がリレーションではないでしょうか。<br />
<br />
「<」「>」などを使用したリレーションは使っているうちにだんだん何をしているのかわからなくなってくるかもしれません。<br />
<br />
今回はそんなリレーションについて紹介したいと思います。<br />
<br />
<br />
<h2>
「<」「>」のリレーション</h2>
<br />
「<」「>」のリレーションはキーより小さい、大きいものを関連レコードとします。<br />
<br />
例えば、日別の売上を保存するテーブルがあったとします。昨日の売上と今日の売上を比較したい場合にこのリレーションを使用します。<br />
<br />
と言葉で説明してもわかりづらいので、図で説明してみたいと思います。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-3n4oUmrL3Cs/V9YrGQQOZ8I/AAAAAAAAAPs/nS9q7y1tM-IVvIJFOD37UPKz01L5FeQ5ACLcB/s1600/20160912130817.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-3n4oUmrL3Cs/V9YrGQQOZ8I/AAAAAAAAAPs/nS9q7y1tM-IVvIJFOD37UPKz01L5FeQ5ACLcB/s1600/20160912130817.jpg" /></a></div>
<span id="goog_1870706102"></span><span id="goog_1870706103"></span><br />
「date」という日付のフィールドがある「テーブル」というテーブルがあります。さらに同じテーブルからできるテーブルオカレンス「テーブル 2」とリレーション(自己リレーション)をします。<br />
<br />
「date」同士を上の画像のように「>」でつなぎます。<br />
<br />
さらに、レコードのソートにて下図のようにソートを設定します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-bgNdyD6Yu5Y/V9Yr18U6-8I/AAAAAAAAAPw/nHxAypQNhZAGWBvAU5BhepYqnJecEQGkgCLcB/s1600/20160912130824.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-bgNdyD6Yu5Y/V9Yr18U6-8I/AAAAAAAAAPw/nHxAypQNhZAGWBvAU5BhepYqnJecEQGkgCLcB/s1600/20160912130824.jpg" /></a></div>
<br />
「date」フィールドを降順でソートします。<br />
<br />
複雑なリレーションを作るうえで、このソートがカギになります。<br />
<br />
このソートをしないと、このリレーション上で「テーブル 2」ではレコードが作成された順に並びその中で、「テーブル 2」の「date」で最も小さいものを最初の関連レコードとします。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-pPV6k-z10Yo/V9YuvqgGvUI/AAAAAAAAAQE/Z4VOoxKl7U0BPNiFhu0X552YUIoX_I9hgCEw/s1600/20160912132603.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-pPV6k-z10Yo/V9YuvqgGvUI/AAAAAAAAAQE/Z4VOoxKl7U0BPNiFhu0X552YUIoX_I9hgCEw/s1600/20160912132603.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
ソートしないとこんな感じになります。<br />
<br />
このレイアウトは「テーブル」に基づいていて、右側のフィールドは関連する「テーブル 2」の「date」を表示します。<br />
<br />
この場合は、どの日でも最初の関連レコードとして「2016/09/06」を返します。<br />
<br />
今度はソートをしてみます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Aty78FeaOQI/V9YumLEppYI/AAAAAAAAAQA/SGaQgIsC0lsk14O3n8HXCKb_VTGn89E5wCEw/s1600/20160912130803.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-Aty78FeaOQI/V9YumLEppYI/AAAAAAAAAQA/SGaQgIsC0lsk14O3n8HXCKb_VTGn89E5wCEw/s1600/20160912130803.jpg" /></a></div>
<br />
ソートをしたものです。<br />
<br />
関連するレコードとして、どのレコードも前日のレコードを関連しています。このリレーションを使って計算を行えば、昨日よりどのくらい売り上げが多かったか、少なかったが計算できます。<br />
<br />Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-76589825661230760002016-08-30T17:30:00.000+09:002016-08-30T17:30:20.739+09:00ファイルメーカーカンファレンスへ行こう!こんにちは!<br />
<br />
今回は「ファイルメーカーカンファレンスへ行こう!」です。<br />
<br />
ファイルメーカーカンファレンスは、毎年11月に行われる、FileMaker社主催のイベントです。<br />
<br />
2016年の今年は11月9日~11日までの3日間行われます。<br />
<br />
ファイルメーカーカンファレンスでは、FileMaker社とそのパートナー企業の方が、講演を行うのがメインイベントです。<br />
<br />
講演は、ファイルメーカーの基本的な部分の使い方や、ちょっとした小技(Tips)、導入事例など、ファイルメーカーのレベルアップに最適な内容です。<br />
<br />
すこしお祭り的な意味合いもあります。<br />
<br />
どちらかというと使いこなしている方よりも、初めて間もなく、これから使いこなせるようになってほしい方をターゲットにしている部分もあります。<br />
<br />
私もまだ使いこなしているといえるほどでないときには本当にこのカンファレンスが力になったのは間違いありません。<br />
<br />
基本東京での開催(一時大阪でもやったことが)なので、遠方の方にとっては、なかなかきづらいかもしれませんが、これから使いこなそうと思っている方にとっては、ぜひ参加していただきたいイベントです。<br />
<br />
特に現役の開発者の方から生の声が聴けるので、「こういう考え方があったのか」と勉強になることばかりです。<br />
<br />
かなりい刺激にもなりますし、煮詰まってしまっているときには、視点を変えられるいい機会にもなります。Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-5152237356326560122016-07-18T17:30:00.000+09:002016-11-09T08:56:09.286+09:00Windows10とFileMaker Server15こんにちは!<br />
<br />
<h2>
今回のテーマは「Windows10とFileMaker Server15」です。</h2>
<br />
ファイルメーカー社のサイトではWindowsのクライアントOS(Windows7、Windows10」がサポートするOSから姿を消しています。<br />
<br />
Windows10にはFileMaker Server14をインストールすることはできませんでした。<br />
<br />
FileMaker Serverを業務システムを多数動かし、がっつり業務で使うようになると、本番環境のサーバーではテストをすることが難しくなってきます。<br />
<br />
こういったときに、テスト環境としてWindowsのクライアントOSにFileMaker Serverが入れられたら便利でしょうと思っていました。<br />
<br />
FileMaker Server15が発売されましたが、試しにWindows10 Proに入れてみたら、問題なくインストールすることができ、問題なく動いています。<br />
<br />
ちなみに、クライアントOSのエディションはPro以上でしかIISを利用できないので、インストールできないはずです。<br />
<br />
※ただし、メーカーのサポート外なので、自己責任になります。<br />
<br />
追記-------------------<br />
<br />
現状、Windows10のインストール方法として、下記の2つの方法があると思います。<br />
<br />
1) Windows7、8から無償アップグレードでWindows10に<br />
<br />
2) Windows10をクリーンインストール(プレインストールされているものを購入など)<br />
<br />
今回ここで紹介したのは1)の方法でWindows10にした場合でした。<br />
<br />
先日2)のマシンで試したところ、Application Request Routing(ARR)の手順で止まってしまいました。<br />
<br />
手動でARRをインストールする方法が<a href="http://filemaker-jp.custhelp.com/app/answers/detail/a_id/13815/kw/ARR/session/L3RpbWUvMTQ3ODY0OTI0OS9zaWQvVG5zRkNhM24%3D">こちら</a>に紹介されていますので、これでいける可能性がありますが、まだ試していません。<br />
<br />
試す機会があればまた追記したいと思います。Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com1tag:blogger.com,1999:blog-3895478458918452931.post-88861921664976390322016-07-12T18:00:00.000+09:002016-07-12T18:00:18.865+09:00マージ変数を使おうこんにちは!<br />
<br />
以前マージフィールドを紹介しましたが、<br />
今回は「マージ変数」というものを紹介したいと思います。<br />
<br />
名前から想像できる通り、変数が関係あります。 <br />
<br />
グローバル変数の内容をレイアウト上に表示する機能が「マージ変数」です。<br />
<br />
例えば、レイアウト上に「○○の検索結果を表示しています」というように<br />
<br />
検索ワードを表示する場合などに使用できます。<br />
<br />
<h2>
検索用スクリプト</h2>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-9Esg65XFqc0/V4SKUd3ZSXI/AAAAAAAAAPA/tnoJl1wbIIskJAluoml9eF3Sh6EcEinEwCLcB/s1600/20160712151136.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-9Esg65XFqc0/V4SKUd3ZSXI/AAAAAAAAAPA/tnoJl1wbIIskJAluoml9eF3Sh6EcEinEwCLcB/s1600/20160712151136.jpg" /></a></div>
<div>
<br /></div>
<br />
スクリプトの内容としては、検索ワードとして使用するグローバルフィールドの内容を変数に格納します。<br />
その後、検索を行っています。<br />
<br />
<br />
※ちなみに今回の例ではグローバルフィールドを使用していますので、変数に格納して使用しなくても、マージフィールドとしてフィールドを設定しても表示されます。<br />
<br />
<h2>
レイアウト</h2>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-YyS5Zqz4lwo/V4SLaQwlY_I/AAAAAAAAAPM/qp32mozEgj4mo3pQAJao_gYTbRICfeYmwCLcB/s1600/20160712150249.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-YyS5Zqz4lwo/V4SLaQwlY_I/AAAAAAAAAPM/qp32mozEgj4mo3pQAJao_gYTbRICfeYmwCLcB/s1600/20160712150249.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
レイアウトモードではこのようになっています。<<$$検索ワード>>と入力すると、変数をレイアウト上に表示できるようになります。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-aodiFdSHxu0/V4SLvdRqc9I/AAAAAAAAAPU/SWTIHWerXK44BqC_qS2QraQrtita3SNRwCLcB/s1600/20160712150310.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-aodiFdSHxu0/V4SLvdRqc9I/AAAAAAAAAPU/SWTIHWerXK44BqC_qS2QraQrtita3SNRwCLcB/s1600/20160712150310.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
実際に検索を行ってみると、このような形で表示されます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
今回のように検索結果や、表示されているレコード数はもちろん、「○○が未処理です」のように、ソリューション上でしなければならないことを表示して、ユーザーに知らせることも可能です。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
前回のマージフィールドと同じように非常に便利な機能です。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://filemakersolution365.blogspot.jp/2016/03/marge-part1.html">マージフィールドを使おう! Part1</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="http://filemakersolution365.blogspot.jp/2016/04/marge-part2.html">マージフィールドを使おう! Part2</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-86237603809972995702016-05-11T08:30:00.001+09:002016-05-11T08:30:19.020+09:00FileMaker 15がやってきた!こんにちは!<br />
<br />
FileMakerの最新バージョン15がやってきました!<br />
<br />
約1年で新しいバージョンになりました。<br />
<br />
基本的に今回は大幅な機能の変更などはありません。<br />
<br />
セキュリティ面での向上、作りやすさの向上がメインで、企業内で開発には携わらず、ユーザーとして使用している方にはあまり縁がないかもしれません。<br />
<br />
<h2>
FileMaker Pro 15新機能まとめ</h2>
<h3>
マスク付編集ボックス</h3>
<div>
いわゆるパスワード入力のように入力した文字やデータが、「・・・・」で表示される編集ボックスです。</div>
<div>
<br /></div>
<div>
マイナンバーやパスワードを直接フィールドに入力してもらう場合に非常に役立つものです。待ってました!と思っていました。</div>
<div>
<br /></div>
<div>
※この機能はFileMaker 15だけの機能なので12~14では使えません。</div>
<div>
<br /></div>
<h3>
スクリプトワークスペース</h3>
<div>
スクリプトワークスペースで、スクリプトを作成する場合に問題があるとその部分が強調されます。</div>
<div>
<br /></div>
<h3>
アンドゥ(元に戻る)機能</h3>
<div>
これは助かります。</div>
<div>
<br /></div>
<div>
スクリプトワークスペースや計算式などで、今行った操作を元に戻せるようになりました。</div>
<div>
<br /></div>
<div>
無意識的に「あっ」と思っても、どの行を削除してしまったかなど今までは分かりませんでしたが、元に戻せるようになるので、よかったです。</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
セキュリティの向上</h3>
<div>
FileMaker Serverでホストされているデータベースを開いたり、SSLでメールを送ったり、URLから挿入などのスクリプトで、SSLサーバ証明書を検証するようになりました。</div>
<div>
<br /></div>
<div>
また、検証できなかった場合にこのホストを信頼するかを選択できるようになります。</div>
<div>
<br /></div>
<div>
信頼すると、今後このホストでは検証できないエラーが表示さなくなります。</div>
<div>
<br /></div>
<div>
試してみていないので、分かりませんが、オレオレ証明書など、自作の証明書が使えるのでしょうか?</div>
<div>
<br /></div>
<div>
もちろん、FileMaker社はサポートしないはずなので、自己責任ということにはなるでしょうが。</div>
<div>
<br /></div>
<h3>
キーチェーン使用時のセキュリティ向上</h3>
<div>
FileMaker Goにてキーチェーン(パスワード保存機能)を使用している場合、iOSのパスコード、Touch ID(指紋認証)を求めることができるようになります。</div>
<div>
<br /></div>
<div>
開発側としては非常にうれしい機能です。</div>
<div>
<br /></div>
<div>
今まではパスコードなど設定していないiPad、iPhoneが盗難にあったりすると、ホストされるファイルではアカウントを止めるまでファイルを開けてしまったわけですが、これによりそれが防ぎやすくなります。</div>
<div>
<br /></div>
<div>
これで、強制的にパスコードやTouch IDを使えるようにすることができます。</div>
<div>
<br /></div>
<h3>
新しいスクリプトステップ-テーブルデータを削除</h3>
<div>
いままでは、対象レコードを削除というステップしかありませんでした。テーブルの全データを削除したい場合は、全レコードを表示して削除する必要がありました。レコード数が多いと時間がかかりこともあります。</div>
<div>
<br /></div>
<div>
テーブルデータを削除はその必要がなく別のテーブルからこのステップを使うことですべて削除できますので、処理が早くなるケースも多いでしょう。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-50610656037616257712016-04-12T17:30:00.000+09:002016-04-12T17:30:17.798+09:00マージフィールドを使おう! Part2こんにちは!<br />
<br />
前回<a href="http://filemakersolution365.blogspot.jp/2016/03/marge-part1.html" target="_blank">マージフィールドを使おう! Part1</a>ではマージフィールドがどういったものかを紹介しました。<br />
<br />
今回は具体的な使用例について紹介したいと思います。<br />
<br />
<h2>
マージフィールドは直接編集できない</h2>
<div>
テキストとして扱われるので、マージフィールドをクリックして編集状態にすることはできません。</div>
<div>
<br /></div>
<div>
これを活用した使い方です。</div>
<div>
<br /></div>
<div>
あるレイアウトで編集を必要としないフィールドはマージフィールドにします。</div>
<div>
<br /></div>
<div>
関連フィールドの値を直接参照している場合などです。</div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
アクセス権での管理の代わりに</h2>
<div>
開発のミスやスピードを上げるために、基本的なフィールドのレコードの権を編集できるようにしておき、レイアウト上に置くフィールドを編集フィールドにするか、マージフィールドにするかを選択するようにすることがあります。</div>
<div>
<br /></div>
<div>
細かくアクセス権を設定するメリットは、セキュリティが高まります。</div>
<div>
<br /></div>
<div>
デメリットは、管理が細かく煩雑になり、初回の開発では特に問題にならないが、日がたった後に改良する場合に、アクセス権がどうなっているかを把握できなくなったり、把握するのに時間がかかったりすることがあります。</div>
<div>
<br /></div>
<div>
また、それがミスにつながり、編集できない、スクリプトが思うように動かない原因になる場合もあります。</div>
<div>
<br /></div>
<div>
これを編集されたくない場合はマージフィールドを使います。</div>
<div>
<br /></div>
<div>
ただし、この方法だと編集をするレイアウト、閲覧だけをするレイアウトと使い分けも必要になってきますので、レイアウト数が増える可能性もあります。</div>
<div>
<br /></div>
<div>
また、条件によって編集できるできないという場合には、インスペクタの「次の場合にオブジェクトを隠す」を使って、編集できる条件の時は通常の編集フィールドを表示し、そうではない場合はマージフィールドを表示させるという使い分けをすることもできます。</div>
<div>
<br /></div>
<h2>
排他制御にも</h2>
<div>
排他制御とは他のユーザーが同時に編集をしないようにする機能です。</div>
<div>
<br /></div>
<div>
編集フィールドをクリックすると編集状態になり、他のユーザーがクリックして編集することができなくなります。</div>
<div>
<br /></div>
<div>
閲覧しかしないレイアウトで通常の編集フィールドを配置すると、ユーザーの方は知らずのうちにクリックして編集状態にしてしまうことがあります。</div>
<div>
<br /></div>
<div>
しかも席を離れ、そのままロック状態になってしまうことも。</div>
<div>
<br /></div>
<div>
こういった場合は、マージフィールドを配置してしまうのも手です。</div>
<div>
<br /></div>
<div>
マージフィールドは編集状態にならないので、ロックされません。</div>
<div>
<br /></div>
<div>
このようにいろいろな使い方できる便利なマージフィールドです。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-68303425050046178142016-03-31T12:00:00.000+09:002016-04-13T08:33:27.880+09:00マージフィールドを使おう! Part1こんにちは!<br />
<br />
今回と次回はマージフィールドについて取り上げてみたいと思います。<br />
<br />
<h2>
マージフィールドとは何か</h2>
<br />
マージフィールドとはテキストとしてフィールドのデータをレイアウト上に表示する機能です。<br />
<br />
マージフィールドには下記のような特徴があります。<br />
<br />
・フィールドの内容を編集できない<br />
<br />
・テキストとして扱われるので、他のフィールド(マージフィールド)をくっつけて表示できる<br />
<br />
・検索モードでは条件を入力できない<br />
<br />
・フィールドと同じように「データの書式設定(3ケタ区切りコンマを付けたり、平成○○年と表示したり)」は可能<br />
<br />
<h2>
配置の仕方</h2>
<div>
配置の仕方は2通りあります。</div>
<div>
<br /></div>
<div>
レイアウトの編集画面で「挿入」→「マージフィールド」を選択します。</div>
<div>
<br /></div>
<div>
フィールドのリストが出ますので、選択をします。</div>
<div>
<br /></div>
<div>
2つ目は直接テキストツールで入力する方法です。</div>
<div>
<br /></div>
<div>
テキストツールで配置したいところにドラッグします。</div>
<div>
<br /></div>
<div>
<<フィールド名>>というように入力します。</div>
<div>
<br /></div>
<div>
関連フィールドの場合は<<テーブルオカレンス名::フィールド名>>になります。</div>
<div>
<br /></div>
<div>
これで、フィールドの内容をテキストとして表示できます。</div>
<div>
<br /></div>
<h2>
使用例</h2>
<div>
では、このマージフィールドどういったときに使うのでしょうか?</div>
<div>
<br /></div>
<div>
私が良く使うのは、封筒や見積書などのお客様の宛名を作成するときです。</div>
<div>
<br /></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-TZWdBaNfdL0/VvxuSzcEkaI/AAAAAAAAAOc/fAXLZ4l_vNENcE9DG3I0WrRv5Iu5Fbi9A/s1600/20160331091245.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="ファイルメーカーでマージフィールドを使う" border="0" height="107" src="https://1.bp.blogspot.com/-TZWdBaNfdL0/VvxuSzcEkaI/AAAAAAAAAOc/fAXLZ4l_vNENcE9DG3I0WrRv5Iu5Fbi9A/s400/20160331091245.png" title="ファイルメーカー(FileMaker)のマージフィールド" width="400" /></a></div>
<span id="goog_472292837"></span><span id="goog_472292838"></span><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
マージフィールドを使用せずに普通にフィールドを配置するとこのような形で配置するでしょう。<br />
<br />
郵便番号以外の都道府県名、市区町村、それ以降の住所は宛先によって長さがまちまちで、長い名称にフィールドの幅を合わせるしかありません。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-qSnCPtGPWnE/VvxuTIfJgwI/AAAAAAAAAOk/lF3DfoRu6TQigque2f1EdlKmAf7wUygJQ/s1600/20160331091344.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="マージフィールドを使わないとこんな形です。" border="0" height="98" src="https://4.bp.blogspot.com/-qSnCPtGPWnE/VvxuTIfJgwI/AAAAAAAAAOk/lF3DfoRu6TQigque2f1EdlKmAf7wUygJQ/s400/20160331091344.png" title="ファイルメーカー(FileMaker)のマージフィールド" width="400" /></a></div>
<br /></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ちょっと大げさですが、このように離れた感じの表示になります。<br />
<br />
正直みっともない感じになるので、ここでマージフィールドを使います。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-oHCZRn5kPGo/VvxuS1WBcnI/AAAAAAAAAOs/-Knsz7tLdMcDrgqY0bXHktlyYXLe-MMzQ/s1600/20160331092235.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="マージフィールドを使う例です。" border="0" height="100" src="https://2.bp.blogspot.com/-oHCZRn5kPGo/VvxuS1WBcnI/AAAAAAAAAOs/-Knsz7tLdMcDrgqY0bXHktlyYXLe-MMzQ/s400/20160331092235.png" title="ファイルメーカー(FileMaker)のマージフィールド" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
マージフィールドをこんな感じに配置してみます。<br />
<br />
ちなみにマージフィールドは同じテキストの枠内に連続して配置することができます。<br />
<br />
今回の例だと、郵便番号から住所2までは同じテキストとして扱われます。郵便番号、市区町村、の後に改行が入っています。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-pMECQvn7_PE/VvxuTrFkHqI/AAAAAAAAAOs/KCWYs_PLuIIWdu8xkwcL7HmKWwAuAkjyQ/s1600/20160331092239.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="マージフィールドを使うと非常にスマートになります。" border="0" height="102" src="https://3.bp.blogspot.com/-pMECQvn7_PE/VvxuTrFkHqI/AAAAAAAAAOs/KCWYs_PLuIIWdu8xkwcL7HmKWwAuAkjyQ/s400/20160331092239.png" title="ファイルメーカー(FileMaker)のマージフィールド" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ブラウズモードではこんな感じになります。<br />
<br />
次回はさらにマージフィールドの使い方の例を紹介したいと思います。<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2016/04/marge-part2.html">次の記事「マージフィールドを使おう! Part2」</a>Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-90806287078794352672016-03-15T12:00:00.000+09:002016-03-15T12:00:13.465+09:00ExecuteSQL関数を使おう!こんにちは!<br />
<br />
今回はExecuteSQL関数を使おう!をテーマにします。<br />
<br />
<h2>
ExecuteSQL関数ってなに?</h2>
<div>
ExecuteSQL関数はFileMaker(ファイルメーカー)12シリーズから登場した、比較的新しい関数です。</div>
<div>
<br /></div>
<div>
FileMaker Proのヘルプにはこのように目的の説明があります。</div>
<div>
<br /></div>
<div>
<i>指定したテーブルオカレンスに対する SQL クエリーステートメントを FileMaker Pro ファイル内で実行します。</i></div>
<div>
<br /></div>
<div>
SQLクエリステートメントという難しい言葉が登場しました。</div>
<div>
<br /></div>
<div>
ではSQLとはなんでしょうか?</div>
<div>
<br /></div>
<div>
SQLはデータベースを操作するための言語です。</div>
<div>
<br /></div>
<div>
SQLはテーブルで行を作成したり、検索をしたり、テーブルを作ることもできます。</div>
<div>
<br /></div>
<div>
FileMakerでは「検索する」、SELECTという命令文のみを扱うことができ、データベースから条件に合うレコードを取得することができます。</div>
<div>
<br /></div>
<div>
つまり、ExecuteSQL関数は、FileMakerデータベースのデータから特定の条件に合うものを取得する関数であるといえます。</div>
<div>
<br /></div>
<h2>
どういったときに使うのか?</h2>
<div>
通常、検索を行う場合は、データを取得したい(見たい)テーブル(オカレンス)のレイアウトに移動して、検索を行います。</div>
<div>
<br /></div>
<div>
しかし、このExecuteSQL関数を使うと、どこのテーブルにいるかが、関係なくデータを取得することが可能になる画期的なものです。</div>
<div>
<br /></div>
<div>
あるデータを取得するためだけに、こんなスクリプトを組んだことはありませんか?</div>
<div>
<br /></div>
<div>
レイアウトを移動する→検索を実行→あるフィールドのデータを変数に格納→元のレイアウトに戻る</div>
<div>
<br /></div>
<div>
多人数で使用し、かつ大きなデータベースだとその動きが見えたりすることもあり、ちょっと不便な場合もあります。</div>
<div>
<br /></div>
<div>
これがExecuteSQL関数を使用することで、1行で済みます。</div>
<div>
<br /></div>
<div>
また、リレーションを減らすこともできます。</div>
<div>
<br /></div>
<div>
どこのテーブルにいるかに関係なくあるテーブルのデータを取得できるわけなので、先ほど出てきたスクリプトの機能として作成しているリレーションがある場合にはこのExecuteSQL関数で代用できる可能性があります。</div>
<div>
<br /></div>
<h2>
ExecuteSQL関数の実際</h2>
<div>
では、実際のExecuteSQL関数の使い方を見ていきましょう。</div>
<div>
<br /></div>
<div style="background-color: khaki; margin: 10px; padding: 10px;">
ExecuteSQL( "SELECT フィールドA FROM テーブルA WHERE フィールドA < 30" ; "" ; "" )</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
第一引数はSQL文を渡します。<br />
<br />
第二引数、第三引数はフィールド(第二)、テーブル(第三)が複数ある場合にどんな記号で区切るかを渡します。例えば、"¶"と記載すれば、改行されます。<br />
<br />
この関数で難しいのはSQL文ではないかと思います。<br />
<br />
SQLにはなかなかなじみのない方も多くいらっしゃると思うので、この関数をつかえていない方も非常に多くいるのではないかと思います。<br />
<br />
この場合 SELECT の後には情報を取得したいフィールド名が来ます。<br />
<br />
次にFROM の後にはそのフィールドがあるテーブルを記載します。<br />
<br />
WHERE は取得するレコードの条件を入力します。この場合、フィールドAの値が30未満のものが抽出されることになります。<br />
<br />
これが基本となります。<br />
<br />
※フィールド名、テーブル名などが日本語やSQLの予約語の場合は文字を「\"」で囲む必要があります。「\"フィールドA\"」という具合にです。<br />
<br />
やはりSQLにもともとなじみのない方が使いこなすには、Advanced版にあるデータビューアなどを使って式のテストをしていくことで慣れていくいかないと思います。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
--PR------------------------</div>
<div>
<a href="http://www.dlmarket.jp/products/detail/309796" target="_blank">【FileMaker Pro ワンテーママガジンVol1~ExecuteSQL関数を使いこなそう!~】</a></div>
<div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-9176370112103550452016-02-23T17:30:00.000+09:002016-02-23T17:30:11.993+09:00FileMaker(ファイルメーカー)で必要なデータモデリングこんにちは!<br />
<br />
今回は「データモデリング」についてです。<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/" target="_blank">ファイルメーカー(FileMaker Pro)を使い始めた人が当たる壁</a>では、ソリューションを作成する最初の段階、つまりテーブル・フィールド・リレーションの構成が非常に重要で、ここさえ最初にしっかりしておけば、後々楽になるというようなことを書かせていただきました。<br />
<br />
その続編です。<br />
<br />
データモデリングというと少し難しいかもしれませんが、テーブルやフィールドを作成する場合の考え方といっていいかもしれません。<br />
<br />
<h2>
テーブルの数を見直す</h2>
<div>
後で苦労するケースとして「テーブル数が少ない」ソリューションという場合が多くあります。</div>
<div>
<br /></div>
<div>
ファイルメーカーでは自己連結リレーションという同じテーブル同士をリレーションする手法が、よく使われます。</div>
<div>
<br /></div>
<div>
これを使用して、通常の正規化の考え方によらずに、テーブルを分けるべき部分を、一つのテーブルで完結してしまうケースです。</div>
<div>
<br /></div>
<div>
例えば、納品書のケースでは、</div>
<div>
<br /></div>
<div>
納品書マスターと納品明細といった形でテーブルを分けるのが一般的ですが、これを分けずに作ってしまうといったことです。</div>
<div>
<br /></div>
<div>
分けると管理しやすくなります。</div>
<div>
<br /></div>
<div>
この納品書のケースのように、帳票類を作成するためのソリューションでは、マスターと明細といった形でわけるという基本があります。</div>
<div>
<br /></div>
<h2>
テーブルオカレンスの数は多くてもいい</h2>
<div>
リレーションでも「分ける」ということを念頭に置いておくといいかもしれません。</div>
<div>
<br /></div>
<div>
管理にしくいものとして、リレーションのグループが少なすぎるというものがあります。</div>
<div>
<br /></div>
<div>
リレーショングループが少なすぎるというのは、一つのテーブルオカレンスに、同じテーブルをもとにしているテーブルオカレンスを複数くっついているというパターンが多くあります。</div>
<div>
<br /></div>
<div>
こういう状況があるなと感じたときは分けるのが理想ではないでしょうか。</div>
<div>
<br />
<br /></div>
<div>
--PR--</div>
<div>
<br />
<a href="http://www.dlmarket.jp/products/detail/326696" target="_blank">【FileMaker Pro ワンテーママガジンVol2~10年後も使えるFileMaker(ファイルメーカー)データベース設計~】</a>ではこういった方法・考え方を紹介しています。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-46045834123432899162016-02-16T17:30:00.000+09:002016-02-25T10:34:50.090+09:00ファイルメーカー(FileMaker Pro)を使い始めた人が当たる壁こんにちは!<br />
<br />
「ファイルメーカー(FileMaker Pro)を使い始めた人が当たる壁」が今日のテーマです。<br />
<br />
<h2>
私が最初にやっておけばよかったと後悔すること</h2>
<div>
ファイルメーカーを使い始める初心者の方が、一番最初にすることは、おそらくファイルメーカーの使い方が記されている入門書を探すことではないかと思います。</div>
<div>
<br /></div>
<div>
私もそうでした。</div>
<div>
<br /></div>
<div>
もちろん、それは当たり前ですし、変なこともでもないと思います。</div>
<div>
<br /></div>
<div>
しかし、それだけでは損をするということです。</div>
<div>
<br /></div>
<div>
FileMaker社の発行しているトレーニングシリーズという本には、検索やレコードの作成といった基本的な情報の次に、開発用の知識の前に「データモデリング」について書かれています。</div>
<div>
<br /></div>
<div>
データモデリングとは、テーブルやフィールドの設定の前にその設計図を作成する手法や考え方といっていいでしょうか。</div>
<div>
<br /></div>
<div>
ファイルメーカーを触る前段階と言っていいと思います。</div>
<div>
<br /></div>
<div>
この考え方がしっかりしていないと、将来後悔することになってしまいます。</div>
<div>
<br /></div>
<div>
それはなぜか。</div>
<div>
<br /></div>
<div>
作ったときはいいが、そのうちに機能の追加や改良がしづらくなり、行き詰って「作り変えたほうがいい」ということになってしまうからです。</div>
<div>
<br /></div>
<div>
ファイルメーカーを選択される方のほとんどが、メインの業務があり、片手間でシステムを作成されるという方です。</div>
<div>
<br /></div>
<div>
開発にかける時間は少ない方が、メインの業務に集中できるわけです。</div>
<div>
<br /></div>
<div>
また、作り変えることによって倍の人件費がかかってしまいます。</div>
<div>
<br /></div>
<div>
逆に言うと、作り変える必要がなく長く使えるシステムこそがコストメリットを生かせるわけです。</div>
<div>
<br /></div>
<h2>
作り変える原因となること</h2>
<div>
ファイルメーカーの知識がなく、スクリプトや関数がうまく使えなかったという理由で、作り変えるまでにいたることは少ないと思います。</div>
<div>
<br /></div>
<div>
この要素は、動いているシステムでも、少しずつ変えていくことは可能だと思います。</div>
<div>
<br /></div>
<div>
難しいのは、テーブルやフィールド、リレーションを動いているシステムで変更することです。</div>
<div>
<br /></div>
<div>
私はこの部分で後悔をしたことがあり、基礎的な部分を強化するべきではないかなと思いました。</div>
<div>
<br /></div>
<div>
データモデリングさえしっかりしていれば、あとで作り変えるということは減っていくのではないかと思います。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
次回は来週、データモデリングについて少し紹介できればと思います。<br />
<a href="http://filemakersolution365.blogspot.jp/2016/02/filemaker-data.html" target="_blank">次の記事「FileMaker(ファイルメーカー)で必要なデータモデリング」</a></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-17332264942170753542016-02-09T12:00:00.000+09:002016-02-09T12:00:12.452+09:00こうなったらいいなFIleMaker Pro 15(ファイルメーカープロ15)こんにちは!<br />
<br />
今回はFileMaker(ファイルメーカー)15がこうなったらいいなという妄想をしてみたいと思います。<br />
<br />
<h2>
Windows版での印刷の向上</h2>
<br />
Widnows版において、直接印刷しようとすると、プリンターによって品質が悪くなる場合があります。特にインクジェットプリンターで多く起きている印象です。<br />
<br />
ファイルメーカーを導入される方の多くは、見積書、請求書、納品書や報告書など書類を作成するために購入されるケースも多いので、向上に期待します。<br />
<br />
<h2>
Linux版FileMaker Server</h2>
<div>
FileMaker Server(サーバー)を導入を検討するときに、いろいろな問題があります。</div>
<div>
<br /></div>
<div>
MacでもWindowsでも価格が気になるところです。</div>
<div>
<br /></div>
<div>
また、Macの場合、サイジングがなかなか難しいという面もあります。</div>
<div>
<br /></div>
<div>
Windows Serverは費用負担として決して小さくありません。</div>
<div>
<br /></div>
<div>
そこで、それらの問題を解決する手段としてLinux版があれば解決できるのかな、なんて思ったりします。</div>
<div>
<br /></div>
<h2>
管理系の画面の文字(Windows版)</h2>
<div>
リレーションの編集、テータベースの管理などの文字が小さいので、少し大きくなればいいかなと思います。</div>
<div>
<br /></div>
<div>
また、データビューアをしょっちゅう使う身としては、そのあたりのお願いしたいと思います。</div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
FileMakerクラウド版(またはLite版)</h2>
<div>
<br /></div>
<div>
これは14の時にも書かせていただきました。</div>
<div>
<br /></div>
<div>
データベースを管理・作成等をする機能のない、Lite版のようなものや、</div>
<div>
<br /></div>
<div>
共有データベースのみを開く(これも管理機能はない)ことのできるクラウド版などがあってもいいのではないかなと思いました。</div>
<div>
<br /></div>
<div>
導入の敷居が低いのがFileMakerですので、そのあたりを強化すると新規ユーザーが増えるのではないかなと思ったりします。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-60911250885485840832016-02-02T17:30:00.000+09:002016-02-02T17:30:10.745+09:00書類の通し番号で「000001」のように桁数をそろえる(0埋めをする)こんにちは!<br />
<br />
今回は「書類の通し番号で「000001」のように桁数をそろえる(0埋めをする)」です。<br />
<br />
印刷やPDFなどに出力して、部署間のやり取りに使ったり、見積書や納品書、請求書のようにお客様などに提出する書類では必ず、その書類を識別するために番号を付けます。<br />
<br />
見積書番号や請求書番号といった名称で使用する番号です。<br />
<br />
通常は、入力値の自動入力オプションでシリアルを設定したものを使用していると思います。<br />
<br />
市販されているソフトでは、「000001」となっているのが多くありますし、その方が見栄え的にも少し良くなります。<br />
<br />
ここでは6ケタになるように、それ以下の数字の場合0を付けるようにしたいと思います。<br />
<br />
方法としてはいくつかありますので、ご紹介していきます。好みに応じて使い分けをしていただければいいかと思います。<br />
<br />
<h2>
方法1 すでにシリアル値を設定されるフィールドがある場合</h2>
すでにシリアルを設定してあるフィールドがあり、後で付け足す場合です。<br />
<br />
シリアルが入るフィールド=「ID」というフィールドとします。<br />
<br />
Right ( 00000 & ID ; 6 )<br />
<br />
この計算式を新しく作るフィールドに設定するだけです。<br />
<br />
これは、計算フィールドではなく、テキストフィールドがいいでしょう。<br />
<br />
<br />
<h2>
方法2 新しく作る場合</h2>
方法1では既存のものに追加しましたが、今度は新しくテーブルを作成しフィールド設定をする場合です。<br />
<br />
この方法では、シリアル値の入るフィールドを使いません。<br />
<br />
ファイルメーカーでは隠れシリアルキーのような数字であるレコードIDというIDが隠れています。<br />
<br />
どのテーブルにも設定されているIDで、当然のことながら他と重複しません。これは、関数で知ることができます。<br />
<br />
Right ( 00000 & Get( レコードID ) ; 6 )<br />
<br />
先ほどとほとんど変わりません。この式をテキストフィールドの自動計算に設定すればいいでしょう。<br />
<br />
<h2>
ポイント</h2>
<div>
ポイントとしては、Right関数の引数に 「00000 &」という部分です。</div>
<div>
<br /></div>
<div>
ファイルメーカーを触り始めて、慣れていない方だとなかなかこの発想にたどり着かないことがあります。</div>
<div>
<br /></div>
<div>
こういったケースでは、シリアル番号の桁数を調べて、足りない部分が何ケタかを計算して、その分を足そうとするのが普通の発想かもしれません。</div>
<div>
<br /></div>
<div>
しかし逆に、最高でも0は5つという点に着目して、とりあえず「00000」とシリアルを付け、それから6ケタに調整するというやり方が非常に簡単です。</div>
<div>
<br /></div>
<div>
このやり方は、年と月をくっつけて月を識別する数字を作る場合も同じです。</div>
<div>
<br /></div>
<div>
月は1ケタの場合も2ケタの場合もあります。そのままつけてしまうと、ソートしたときにつき順に並びませんので、この場合も月に「0」を付けて、2ケタに調整していきます。</div>
<br />Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-27005564008627711582016-01-20T17:30:00.000+09:002016-02-09T10:16:05.714+09:00ファイルメーカー(FileMaker)を同期で使おう Part5<div style="background-color: khaki; margin: 10px; padding: 10px;">
このシリーズの他の記事はこちら<br />
<a href="https://filemakersolution365.blogspot.jp/2015/11/filemaker-sync.html">ファイルメーカー(FileMaker)を同期で使おう Part1</a><br />
<a href="https://filemakersolution365.blogspot.jp/2015/12/filemaker-sync2.html">ファイルメーカー(FileMaker)を同期で使おう Part2</a><br />
<a href="https://filemakersolution365.blogspot.jp/2015/12/filemaker-sync3.html">ファイルメーカー(FileMaker)を同期で使おう Part3</a><br />
<a href="https://filemakersolution365.blogspot.jp/2015/12/filemaker-sync4.html">ファイルメーカー(FileMaker)を同期で使おう Part4</a>
</div>
こんにちは同期シリーズ第5弾です。<br />
<br />
今回は、入力用ファイルと中間ファイルのデータの受け渡しです。<br />
<br />
以前に、入力用ファイルには中間ファイルのテーブルを含めてのデータの受け渡しはできないということは書いたと思います。<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync4.html">ファイルメーカー(FileMaker)を同期で使おう Part4</a>では、テーブルを含めて、それを利用してデータの受け渡しをしましたが、同じ方法だと、FileMaker Serverから接続を解除するのが難しいのです。<br />
<br />
入力用のファイルと中間ファイルのやり取りにはスクリプト引数とスクリプトの結果という引数と返り値を利用してみたいと思います。<br />
<br />
<br />
<a href="http://2.bp.blogspot.com/-9cytzFcRfNU/Vm5vi3l-awI/AAAAAAAAANY/PaW0CFZi3ro/s1600/20151214162746.png" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-9cytzFcRfNU/Vm5vi3l-awI/AAAAAAAAANY/PaW0CFZi3ro/s1600/20151214162746.png" /></a><br />
<br />
この入力用ファイル(client)にも同じテーブルを作成します。フィールドもこのようになっています。<br />
<br />
このテーブルに、スクリプトを使ってデータを持ってきます。<br />
<br />
<h2>
中間ファイルのスクリプト</h2>
<a href="http://1.bp.blogspot.com/-QpW5lhce1nk/Vm5vrlsm8RI/AAAAAAAAANk/itNT-OKI0xc/s1600/20151214162638.png" imageanchor="1"><img border="0" src="https://1.bp.blogspot.com/-QpW5lhce1nk/Vm5vrlsm8RI/AAAAAAAAANk/itNT-OKI0xc/s1600/20151214162638.png" /></a><br />
<br />
まず中間ファイルにこのようなスクリプトを作成します。<br />
<br />
内容としては、<br />
共有ファイルから営業確認タイムスタンプに入力がないデータを検索して、中間ファイルのテーブルにデータをコピーします。<br />
<br />
データがないときは処理を終了します。<br />
<br />
11行目~は取得したデータを変数に一度格納します。<br />
<br />
13行目は、<br />
<br />
$data & 受注マスター_sample::受注番号 & "#" &<br />
受注マスター_sample::受注日 & "#" &<br />
受注マスター_sample::商品名 & "#" &<br />
受注マスター_sample::数量 & "¶"<br />
<br />
という感じになっています。<br />
<br />
1レコードを1行として、改行区切りで格納します。<br />
<br />
また、各フィールドは「#」を使って区切っています。もし、商品名などで#を使うケースがあれば、絶対に使わないような文字を区切りとして使います。これは1文字でなくても構いません。<br />
<br />
<h2>
入力用ファイルのスクリプト</h2>
<div>
<br /></div>
<div>
<a href="http://2.bp.blogspot.com/-CAz8Y0RutL4/Vm5yQulzsmI/AAAAAAAAAN8/x6RwH9J1Tx8/s1600/20151214163920.png" imageanchor="1"><img border="0" src="https://2.bp.blogspot.com/-CAz8Y0RutL4/Vm5yQulzsmI/AAAAAAAAAN8/x6RwH9J1Tx8/s1600/20151214163920.png" /></a></div>
<div>
<br /></div>
<div>
こちらが入力用ファイルのスクリプトです。</div>
<div>
<br /></div>
<div>
先ほどの中間ファイルのスクリプトを実行し、スクリプトの結果としてデータを受け取ります。</div>
<div>
<br /></div>
<div>
それをこのファイルにコピーしています。</div>
<div>
<br /></div>
<div>
内容としては、レコードを改行区切りで取得したデータを1レコードごとに変数に格納し、</div>
<div>
さらにフィールド区切りとしていた#を改行に変換して、</div>
<div>
フィールド設定でデータを書き込んでいます。</div>
<div>
<br /></div>
<div>
Excelファイルあたりでエクスポート、インポートの方が楽かもしれませんが、</div>
<div>
こういうやり方もあるというのを紹介できれば幸いです。</div>
<div>
<br /></div>
<div>
好みでお使いいただければと思います。</div>
<br />
<br />Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com4tag:blogger.com,1999:blog-3895478458918452931.post-21110545184194303022015-12-15T17:30:00.000+09:002015-12-15T17:30:00.606+09:00ファイルメーカー(FileMaker)を同期で使おう Part4<div style="background-color: khaki; margin: 10px; padding: 10px;">
このシリーズの他の記事はこちら<br />
<a href="http://filemakersolution365.blogspot.jp/2015/11/filemaker-sync.html">ファイルメーカー(FileMaker)を同期で使おう Part1</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync2.html">ファイルメーカー(FileMaker)を同期で使おう Part2</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync3.html">ファイルメーカー(FileMaker)を同期で使おう Part3</a></div>
ファイルメーカーを同期で使おうの第4弾です。<br />
<br />
今回は、中間ファイルから共有ファイルにデータを取り込むというテーマです。<br />
<br />
<h2>
レイアウトの作成</h2>
<div>
まず、中間ファイルで、共有ファイルのテーブルをコンテキストにしたものを作成します。</div>
<div>
<br /></div>
<div>
<a href="http://4.bp.blogspot.com/-ckBxX3b_8MY/Vm5DCFwfM-I/AAAAAAAAALw/Lh3Ss6XyywI/s1600/20151214131715.png" imageanchor="1"><img border="0" height="388" src="http://4.bp.blogspot.com/-ckBxX3b_8MY/Vm5DCFwfM-I/AAAAAAAAALw/Lh3Ss6XyywI/s400/20151214131715.png" width="400" /></a></div>
<div>
<br /></div>
<div>
このようなレイアウト設定です。sampleというのが共有ファイルの名前です。</div>
<div>
<br /></div>
<div>
<a href="http://1.bp.blogspot.com/-loVffAXaZo0/Vm5D61V5EGI/AAAAAAAAAMI/e5o1mElwmeA/s1600/20151214132010.png" imageanchor="1"><img border="0" src="http://1.bp.blogspot.com/-loVffAXaZo0/Vm5D61V5EGI/AAAAAAAAAMI/e5o1mElwmeA/s1600/20151214132010.png" /></a></div>
<div>
<br /></div>
<div>
ブラウズモードにすると、このようにデータが1件あります。</div>
<div>
<br /></div>
<div>
「数量」というフィールドまでが、共有ファイルのフィールドで、「同期タイムスタンプ」というフィールドが、この中間ファイルにあるテーブルのフィールドです。</div>
<div>
<br /></div>
<div>
この「同期タイムスタンプ」のフィールドにデータを入力すると、前回行ったリレーションの設定により、中間ファイルのテーブルにレコードを作成し、ルックアップの設定で、データを取り込むことになります。</div>
<div>
<br /></div>
<div>
<a href="http://2.bp.blogspot.com/-hd19rxnS2Fs/Vm5E0enYLlI/AAAAAAAAAMU/Bo448DHhB2c/s1600/20151214132526.png" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-hd19rxnS2Fs/Vm5E0enYLlI/AAAAAAAAAMU/Bo448DHhB2c/s1600/20151214132526.png" /></a></div>
<div>
<br /></div>
<div>
このように「同期タイムスタンプ」にデータを入力します。</div>
<div>
<br /></div>
<div>
<a href="http://2.bp.blogspot.com/-BEVeQna4OQo/Vm5FFwuShXI/AAAAAAAAAMg/gG62vB9gsKY/s1600/20151214132639.png" imageanchor="1"><img border="0" src="http://2.bp.blogspot.com/-BEVeQna4OQo/Vm5FFwuShXI/AAAAAAAAAMg/gG62vB9gsKY/s1600/20151214132639.png" /></a></div>
<div>
<br /></div>
<div>
このレイアウトは、中間ファイルのテーブルです。</div>
<div>
ルックアップの設定によって、このようにデータが入力されました。</div>
<div>
また、レコード自体はリレーションの設定で、自動的に作成されます。</div>
<div>
<br /></div>
<div>
これで、共有ファイルから中間ファイルへのデータのコピーはできます。</div>
<div>
<br /></div>
<div>
また、中間ファイルから共有ファイルへのデータの書き込みも可能です。</div>
<div>
<br /></div>
<div>
上の「受注マスター_sample」のレイアウトにて、データを書き込めば、共有ファイルに書き込むことになります。</div>
<div>
<br /></div>
<div>
この例では、営業担当者が受注を確認すると、フィールド設定で「営業確認タイムスタンプ」に確認したときのタイムスタンプを入力します。</div>
<div>
<br /></div>
<div>
これを共有ファイルのフィールドにコピーするという流れになってきます。</div>
<div>
<br /></div>
<div>
「受注マスター_sample」のレイアウトにて、「営業確認タイムスタンプ」に中間ファイルから書き込むということになります。</div>
<div>
<br /></div>
<div>
これが、この例での中間ファイルと共有ファイルのデータのやり取りの流れです。</div>
<div>
<br /></div>
<div>
FileMaker Serverの同時接続ライセンスを気にする必要がないけれど、</div>
<div>
外出時で、ネットワーク環境のよくないところで共有ファイルのデータを見たいというときには、</div>
<div>
これまでのやり方で、基本的にはいけるでしょうか。<br />
<br />
ちなみに、データを共有ファイルから「もらう」だけであれば、中間ファイルの「受注マスター」というテーブルはなくてもいけます。<br />
<br />
問題は共有ファイルに「戻す」という同期の時に中間ファイルのデータと共有ファイルのデータを比較する必要がある場合は中間ファイルの「受注マスター」が必要になってくるでしょう。<br />
<br />
この例では、実際なくてもいけます。</div>
<div>
<br /></div>
<div>
次回は「入力用ファイル」と中間ファイルとのやり取りについてです。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-14729956356654287402015-12-08T17:30:00.000+09:002015-12-16T09:11:35.766+09:00ファイルメーカー(FileMaker)を同期で使おう Part3<div style="background-color: khaki; margin: 10px; padding: 10px;">
このシリーズの他の記事はこちら<br />
<a href="http://filemakersolution365.blogspot.jp/2015/11/filemaker-sync.html">ファイルメーカー(FileMaker)を同期で使おう Part1</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync2.html">ファイルメーカー(FileMaker)を同期で使おう Part2</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync4.html">ファイルメーカー(FileMaker)を同期で使おう Part4</a>
</div>
こんにちは同期シリーズ第3弾です。<br />
<br />
今回から実際の作り方を見ていきます。<br />
<br />
<h2>
少しだけ、復習+α</h2>
<div>
同期モデルを選択する場合、いろいろな課題があり選択していくと思います。</div>
<div>
<br /></div>
<div>
1) インターネットに接続でいない場所(電波が悪い等も)でデータを見たい<br />
<br />
2) 同時接続ライセンスを節約したい<br />
<br />
などがあります。1)にはモバイル通信(3Gや4G)の場合も含まれます。モバイル通信だと、ソリューションの規模やサーバーのスペックなどにもよりますが、あまり本格的に閲覧したり、データ入力をするには厳しい場合もあり、同期モデルで作った方がいい場合もあります。<br />
<br />
<h3>
FileMaker GoからFileMaker Serverの共有ファイル開くポイント</h3>
</div>
<div>
FileMaker Goにあるファイル(iPad、iPhone上のローカルファイル)からFileMaker Serverの共有ファイルをリレーションするとFileMaker Serverの共有ファイルを開いた状態(接続ライセンスを消費)になる。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
ということです。リレーションをしないで取り込むには、エクセルファイルか何かにエクスポートして、インポートするという手もありますが、個人的な見解としてあまりインポートをさせたくないという考えがあります。たまに、トラブルがあり、インポートが止まらなくなったりなどがあり、そういったことが少なく、確実性が高いを個人的に思っている方法を紹介します。</div>
<div>
<br /></div>
<h2>
構成</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-zgjQ_9onY9k/Vlu1XMpIaGI/AAAAAAAAAKk/mCHajUcIX20/s1600/doki3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="242" src="http://3.bp.blogspot.com/-zgjQ_9onY9k/Vlu1XMpIaGI/AAAAAAAAAKk/mCHajUcIX20/s400/doki3.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
まず図のようなイメージで</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
・入力用のファイル(client.fmp12)</div>
<div class="separator" style="clear: both; text-align: left;">
・中間ファイル(container.fmp12)</div>
<div class="separator" style="clear: both; text-align: left;">
・FileMaker Server上の共有ファイル(sample.fmp12)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
という3つのファイルがあり、2つのファイルが同じデバイス上にあるとします。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="clear: both; text-align: left;">
このソリューションの前提</h3>
<div>
1) 営業社員が自身の担当顧客から注文が本社に入り、アシスタントがsampleに入力</div>
<div>
2) 未確認の注文情報をダウンロード</div>
<div>
3) clientファイル上で確認して、確認ボタンをタップ</div>
<div>
4) 確認情報をsampleに戻す(入力・同期)する</div>
<div>
<br /></div>
<div>
という流れのソリューションであると思っていただければと思います。</div>
<div>
<br /></div>
<h2>
1)FileMaker Server上の共有ファイルsampleの構成</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Si8PZK_fBkk/VmTwtoSR4PI/AAAAAAAAAKw/yeGaS9cWqBA/s1600/20151207113528.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="395" src="http://3.bp.blogspot.com/-Si8PZK_fBkk/VmTwtoSR4PI/AAAAAAAAAKw/yeGaS9cWqBA/s640/20151207113528.png" width="550" /></a></div>
<div>
<br /></div>
<div>
FileMaker Serverの共有ファイルsampleの構成はこのようになっています。実際には、もっと項目が多くなると思いますが、分かりやすいように絞ってあります。<br />
<br />
<br />
<br />
<h2>
2) 中間ファイル(container.fmp12)の構成</h2>
<br />
中間ファイル(container.fmp12)にも同じ項目のテーブルを作成します。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<a href="http://1.bp.blogspot.com/-QyrGNo1G0dk/Vm5jFWjL7AI/AAAAAAAAANI/EcMrWIhzNZ0/s1600/20151214153424.png" imageanchor="1"><img border="0" src="http://1.bp.blogspot.com/-QyrGNo1G0dk/Vm5jFWjL7AI/AAAAAAAAANI/EcMrWIhzNZ0/s1600/20151214153424.png" /></a><br />
<br />
一番下にあるフィールドは同期したタイムスタンプを保存しておきますが、共有ファイル上のファイルとのリレーションで、このファイルにレコードを作成するために主に使用します。<br />
<br />
<h3>
リレーションシップの編集</h3>
</div>
<div>
このファイルは共有ファイルとリレーションをして、そのリレーションを使ってこのファイルにレコードを作成したりします。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-p0Zmc0bMAcc/VmT2FKs4JEI/AAAAAAAAALE/C9vLpGm8PKQ/s1600/20151207114509.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="112" src="http://4.bp.blogspot.com/-p0Zmc0bMAcc/VmT2FKs4JEI/AAAAAAAAALE/C9vLpGm8PKQ/s320/20151207114509.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
リレーションシップの管理で、このボタンをクリックします。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-g_fUs06-fTQ/VmT2dDCl9fI/AAAAAAAAALU/2hWtfRyXBMo/s1600/20151207114520.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-g_fUs06-fTQ/VmT2dDCl9fI/AAAAAAAAALU/2hWtfRyXBMo/s320/20151207114520.png" width="308" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
「FileMakerデータソースの追加」で共有ファイルを選択します。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-eQh4zwRQrBw/VmT2u2zQ-4I/AAAAAAAAALY/YVQ1mCRPAuM/s1600/20151207120207.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-eQh4zwRQrBw/VmT2u2zQ-4I/AAAAAAAAALY/YVQ1mCRPAuM/s320/20151207120207.png" width="305" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
このようにリレーションを作成します。「このリレーションシップによるレコードの作成を許可する」を忘れないようにします。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
そして、先ほどのフィールドの設定にあったようにルックアップの設定をします。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
次回は、中間ファイルに共有ファイルからデータを取得する流れについてみていく予定です。</div>
<div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-54561992936726098502015-12-02T17:30:00.000+09:002015-12-16T09:11:55.259+09:00ファイルメーカー(FileMaker)を同期で使おう Part2<div style="background-color: khaki; margin: 10px; padding: 10px;">
このシリーズの他の記事はこちら<br />
<a href="http://filemakersolution365.blogspot.jp/2015/11/filemaker-sync.html">ファイルメーカー(FileMaker)を同期で使おう Part1</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync3.html">ファイルメーカー(FileMaker)を同期で使おう Part3</a><br>
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync4.html">ファイルメーカー(FileMaker)を同期で使おう Part4</a>
</div>
こんにちは!<br />
<br />
前回の続きです。<br />
<br />
前回は、同期モデルのメリットや簡単な概念を紹介しました。<br />
<br />
今回は、完全同期モデルでという名前で紹介した、3つのファイルでデータをやり取りするモデルを作成するにあたって、知っておきたいことを少し掘り下げます。<br />
<br />
<h2>
なぜ3つ必要か</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-zgjQ_9onY9k/Vlu1XMpIaGI/AAAAAAAAAKg/_xTZuTOagwA/s1600/doki3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="242" src="http://2.bp.blogspot.com/-zgjQ_9onY9k/Vlu1XMpIaGI/AAAAAAAAAKg/_xTZuTOagwA/s400/doki3.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
前回紹介した画像です。すこし分かりやすく同じデバイス上にあるファイルを区切りました。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
FileMaker Server上のファイルにあるテーブルオカレンスを中間ファイルのリレーションマップに配置して中間ファイルのテーブルオカレンスとリレーションを組み、データをやり取りすることになります。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
この時点で、FileMaker Serverのファイルのデータを表示しようとしまいと、中間ファイルを開いている間は、FileMaker Serverに接続し続けます(iPhone、iPad等では同時接続としてカウントされます)。</div>
<div>
<br /></div>
<div>
ちなみに、中間ファイル上でスクリプトステップの「ファイルを閉じる」を実行して、FileMaker Serverのファイルを閉じようとしても閉じられません。</div>
<div>
<br /></div>
<div>
ただし、FileMaker Server上のファイルにてアカウントが設定されていて、アカウント情報を入力して必ず開くようになっている場合は中間ファイルを開くときに、FileMaker Server上のファイルのアカウント情報を入力するように求められますが、キャンセルしてしまえば、接続されずに中間ファイルを開くことはできます。</div>
<div>
<br /></div>
<div>
しかし、FileMaker Server上のファイルのデータを取得するのにはアカウントの入力が必要になり、一度ログインすると、中間ファイルを閉じるまでは基本的に接続し続けます。</div>
<div>
<br /></div>
<div>
こういったことから、データを取得(同期)したらFileMaker Serverの接続を解除したい場合は、3つのファイルが必要となります。</div>
<div>
<br /></div>
<div>
まず、入力用のファイルに中間ファイルのデータを表示しません。</div>
<div>
<br /></div>
<div>
入力用のファイルのリレーショングラフには中間ファイルのテーブルを表示しないということです。</div>
<div>
<br /></div>
<div>
2つのファイル(入力用のファイルとFileMaker Server上のファイル)で、同じように行うこともできます。</div>
<div>
<br /></div>
<div>
ただ3つにすることによって、FileMaker Server上のファイルにできるだけ変更を加えなくて済むというメリットがあります。</div>
<div>
<br /></div>
<h2>
方法</h2>
<div>
基本的なやり方としては、中間ファイルにスクリプトを設定し、入力用ファイルからそのスクリプトを実行して、データのやり取りをします。</div>
<div>
<br /></div>
<div>
データのやり取りには、スクリプト引数をセットしたり、スクリプトの結果を利用して送ったりします。</div>
<div>
<br /></div>
<div>
データのやり取りが多い場合にはエクスポート、インポートでのやり取りが必要になりますが、個人的な感想として、エクスポートはともかくインポートがらみにでトラブルに見舞われることがあるので、あまり好きではないという理由で、今回はこの方法は紹介しません。</div>
<div>
<br /></div>
<div>
なお、同期モデルのやり方にはいろいろあり、その一つであるという前提でお読みいただけると助かります。</div>
<div>
<br /></div>
<div>
次回は実際の手順を紹介していきたいと思います。</div>Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-294016102421030822015-11-24T17:30:00.000+09:002015-12-16T09:12:24.431+09:00ファイルメーカー(FileMaker)を同期で使おう Part1<div style="background-color: khaki; margin: 10px; padding: 10px;">
このシリーズの他の記事はこちら<br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync2.html">ファイルメーカー(FileMaker)を同期で使おう Part2</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync3.html">ファイルメーカー(FileMaker)を同期で使おう Part3</a><br />
<a href="http://filemakersolution365.blogspot.jp/2015/12/filemaker-sync4.html">ファイルメーカー(FileMaker)を同期で使おう Part4</a>
</div>
<br />
こんにちは、いつもご覧いただきありがとございます。<br />
<br />
FileMaker Server(ファイルメーカーサーバー)13より、無料のクライアントの同時接続ライセンスが導入されました。<br />
<br />
これは、iPad、iPhoneのアプリFileMaker Go、WebDirectからFileMaker Serverでホストするファイルにアクセスする場合、FileMaker Serverに同時接続ライセンスを購入しないと接続できないというものです。<br />
<br />
FileMaker Server14では、Proのクライアントソフトの値段と同じくらいの価格になり、地味に辛くなってきました。<br />
<br />
できるだけ同時接続を節約したいと思う方は多いのではないでしょうか。<br />
<br />
これから数回にわたって、そんな悩みの解決になればということで、同時接続を節約する同期モデルという方法について解説をしていきます。<br />
<br />
今回ここで紹介するのは、FileMaker Goでの同期モデルの方法です。WebDirectではPHPを使ってアクセスすれば節約できますが、コーディングが必要になってきます。<br />
<br />
<h2>
同期モデルってなに?</h2>
<div>
FileMakerGoからFileMaker Serverホストされている共有ファイルを開くと、そのファイルを直接ファイルを開くことになり、同時接続ライセンスを1つ消費します。</div>
<div>
<br /></div>
<div>
また、そのファイルを開いている間はFileMaker Serverと繋ぎっぱなしの状態になり、同時接続ライセンスを繋ぎ続けることになります。</div>
<div>
<br /></div>
<div>
この繋ぎっぱなしをなくし、データのやり取り時だけ、サーバに接続するというのが同期モデルと言われるものです。</div>
<div>
<br /></div>
<h2>
同期モデルのもう一つの効果</h2>
<div>
同期モデルには接続ライセンスを節約するということを目的にする場合と、Wi-Fiなどの電波が届かなく、インターネットに接続できない環境下でもデータを入力したい場合などに使われます。</div>
<div>
<br /></div>
<div>
また、接続できたとしてもクライアント側の電波状況が悪い場合で、FileMaker Serverとうまくつながらない状況下でも効果的です。</div>
<div>
<br /></div>
<h2>
同期モデルの二つの方法</h2>
<div>
①まず、データをFileMaker Serverに送ったり、受け取ったりするとき(同期時)だけFileMaker Serverに接続する方法と、</div>
<div>
<br /></div>
<div>
②インターネットに繋がっている状況であれば、常にFileMaker Serverに繋がっている方法の二つがあります。</div>
<div>
<br /></div>
<div>
②は接続ライセンスの節約というよりは、クライアントにいろいろな状況があり、インターネットに繋がりにくい環境下で作業することがある場合です。</div>
<div>
<br /></div>
<div>
①は②に加えて接続ライセンスの節約もできるという方法です。</div>
<div>
<br /></div>
<div>
ここでは、①の方法を扱っていきます。</div>
<div>
<br /></div>
<div>
また、二つの方法がどう違うかを見ていきます。</div>
<div>
<br /></div>
<h2>
①完全同期モデル</h2>
<div>
先ほどの①モデルでは、FileMaker Server上の共有ファイル、同じiPad、iPhone(以下デバイス)上の2つのファイルが必要になります。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-hc4uyvPLNkU/VlQUtDzCMHI/AAAAAAAAAKA/HqoWsSQ63Kg/s1600/doki.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="222" src="http://2.bp.blogspot.com/-hc4uyvPLNkU/VlQUtDzCMHI/AAAAAAAAAKA/HqoWsSQ63Kg/s400/doki.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
入力用のファイルと、中間ファイルは同じデバイスにあります。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
役割としては、入力用のファイルは入力(や閲覧)だけをするためにあります。</div>
<div>
<br /></div>
<div>
中間ファイル(コンテナ)は入力用のファイルのデータをFileMaker Serverのファイルを開いて更新したり、または受け取ったりします。</div>
<div>
<br /></div>
<div>
なぜ、このような複雑な方法と取るかというと、入力用のファイルに直接FileMaker Serverのファイルのデータを取得しようとすると、その入力用のファイルを開いている間、FileMaker Serverに接続している状態になるからです。</div>
<div>
<br /></div>
<h2>
②簡易同期モデル</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-S3ymeFWGIZ4/VlQWbNcbCvI/AAAAAAAAAKQ/XX6ePW7WXPI/s1600/doki2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="117" src="http://1.bp.blogspot.com/-S3ymeFWGIZ4/VlQWbNcbCvI/AAAAAAAAAKQ/XX6ePW7WXPI/s400/doki2.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
このモデルでは、入力用ファイルからFileMaker Serverのファイルに直接接続します。直接、データをサーバのファイルから移動します。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
このモデルでも、インターネットに繋がっていなくても、入力用のファイルが開けますので、Wi-FiモデルのiPadなどで事務所でデータを同期(ダウンロード)して、Wi-Fiのつながらない場所に移動しても入力などができます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
次回は、①完全同期モデルでの開発と解説を行っていきます。</div>
<div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com1tag:blogger.com,1999:blog-3895478458918452931.post-56547109035244717712015-10-28T17:30:00.000+09:002015-10-28T17:30:01.211+09:00FileMaker(ファイルメーカー)で複数のキーワードで検索してみようGoogle(グーグル)などのWebサイトの検索ではおなじみですが、<br />
<br />
「ラーメン 秋葉原」や「本屋 神保町」という風に複数のキーワードを組み合わせて検索するというのはよくあります。<br />
<br />
Web検索では無意識に行っていますが、FileMakerでもやりたいと思ったことはないでしょうか?<br />
<br />
今回は複数のキーワードを検索する方法を紹介します。<br />
<br />
ちなみに「ラーメン or 秋葉原」ではなく「ラーメン and 秋葉原」の検索になります。<br />
<br />
あるフィールドから「ラーメン」も「秋葉原」も両方が含まれるレコードを検索するということになります。<br />
<br />
<h2>
概要</h2>
<div>
・まず対象となるフィールドのどこかのフィールドに「ラーメン」が含まれるレコードを検索します。</div>
<div>
<br /></div>
<div>
・次にその対象レコードから、どこかのフィールドに「秋葉原」が含まれるレコードを絞り込みます。</div>
<div>
<br /></div>
<div>
・例ではキーワードが二つでしたが、それ以上にもフレキシブルに対応します。</div>
<div>
<br /></div>
<div>
・3つ以上のキーワードはLoopでさらに絞り込んでいきます。</div>
<div>
<br /></div>
<h2>
設定</h2>
<div>
・フィールド「商品名」「メーカー」「コメント」の3つ(この3つのフィールドのどれかにキーワードが含まれていることものを検索する)</div>
<div>
<br /></div>
<div>
・「g_検索ワード」というグローバル格納のフィールドにキーワードを入力するとスクリプトが起動し、検索を行う。</div>
<div>
<br /></div>
<h2>
スクリプト</h2>
<div>
スクリプトはこの図のようになります。</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-_w_AzN3IBz4/VjBcyB2VhwI/AAAAAAAAAJY/Ba409s3KtnY/s1600/20151028141652.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-_w_AzN3IBz4/VjBcyB2VhwI/AAAAAAAAAJY/Ba409s3KtnY/s1600/20151028141652.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
・(2行目)スペース区切りで入力された検索ワードを改行区切りにします。半角でも全角でも大丈夫なようにします。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
・(3行目)ワード数を調べます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
・(4行目)最初のワードを取得します。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
・(5~11行目)最初のワードが対象のフィールドのどこかに含まれているレコードを検索します。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
・(12~14行目)ワードが1つだけだった場合(ない場合も)は、スクリプトを終了させます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
・(15行目)2つ目のワードであることを変数に格納します。<br />
<br />
・(17行目)2つ目のワードを取得します。<br />
<br />
・(18~24行目)1つ目と同じようにどこかに含まれているかを設定し、対象レコードの絞り込みを行います。<br />
<br />
・(25行目)現在の絞り込み回数がワード数実行されたら、ループ(Loop)を抜けます。<br />
<br />
・これをワード数分繰り返します。<br />
<br />
<h2>
実行例</h2>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-fZ5SQi-EIQQ/VjBfXJAjTaI/AAAAAAAAAJk/m0bE8gNzD2Q/s1600/20151028143749.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-fZ5SQi-EIQQ/VjBfXJAjTaI/AAAAAAAAAJk/m0bE8gNzD2Q/s1600/20151028143749.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
このような4つのレコードが場合です。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
上部にある窓が検索ワードを入力する部分です。キーワードをスペース区切りで入力し、「Enter」や「確定」させるとスクリプトが実行されます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
「usbメモリ」「東芝」「16」と入力されています。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-GEUMUyWThvc/VjBgKMkWnyI/AAAAAAAAAJs/xfwnQpsvaKY/s1600/20151028144119.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-GEUMUyWThvc/VjBgKMkWnyI/AAAAAAAAAJs/xfwnQpsvaKY/s1600/20151028144119.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
実行すると、このように「usbメモリ」「東芝」「16」がすべて含まれる1レコードだけが結果に表示されました。</div>
<div>
<br />
<h2>
サンプルダウンロード</h2>
</div>
<div>
今回紹介した内容のサンプルファイルを用意しました<a href="http://raquel.jp/contents/download.html" target="_blank">こちらから</a>ダウンロードできます。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com2tag:blogger.com,1999:blog-3895478458918452931.post-2693924663195313302015-10-19T12:14:00.000+09:002015-10-19T12:14:00.704+09:00え? クライアントOS(Windows)でFileMaker Serverが使えない?FileMaker 14シリーズになり、もしかしたら気づかれた方も多くいらっしゃることと思います。<br />
<br />
FileMaker Server14では、WindowsのクライアントOSがサポートされなくなりました。<br />
<br />
「クライアントOSで動くことがFileMaker Serverの魅力の一つだったのに…」などと少し残念な気持ちにもなりました。<br />
<br />
しかし、初めにFileMaker Serverに触れたとき、クライアントOSでも動くのか! と少し驚いたことを考えるとなるべくしてなったことなのかなと思うこともあります。<br />
<br />
ただし、サポートされなくなっただけで現状はインストール可能なようです。FileMaker Server14v1ですが、Windows7で動いているので、実際にはまだ大丈夫なようです。<br />
<br />
<h2>
Windows10でどうか?</h2>
<div>
結論から言いますと、現状は難しそうです。</div>
<div>
<br /></div>
<div>
先日ためしにインストールを試みましたが、Application Request Routing(ARR)のインストール中に止まってしまいます。</div>
<div>
<br /></div>
<div>
もしくはエラーが出て「インターネットに繋がっていない」旨のメッセージが出てインストールできませんでした。</div>
<div>
<br /></div>
<div>
手動でインストールする手順がFileMaker社のサイトに載っていますが、Windows10のIIS(インターネットインフォメーションサービス)のバージョンが違うのでできません。</div>
<div>
<br /></div>
<div>
IIS10というバージョンになるので、それ用のものを探そうとしたところで断念。</div>
<div>
<br /></div>
<div>
Windows10にしなければ大丈夫だ…ということで。</div>
<div>
<br /></div>
<div>
FileMaker Serverが新しいWindows Serverに対応するころにいけるようになるのではと推測しています。</div>
<div>
<br /></div>
<div>
WindowsのクライアントOSのテスト機として用意しやすいので、インストールできないようにしないでください…ね?(期待を込めて)。</div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-43055017031494807302015-07-17T17:30:00.000+09:002015-07-17T17:30:01.092+09:00その繰り返しフィールド、本当に「繰り返しフィールドでいいですか?」<h2>
繰り返しフィールドのデメリット</h2>
<br />
もう、FileMakerの扱いにも慣れ、多数のソリューションを作り、繰り返しフィールドのメリット、デメリットをご存じであれば、特にこの記事を読んでいただく必要もないでしょう。<br />
<br />
FileMaker Proには特殊な機能である「繰り返しフィールド」というものがあります。<br />
<br />
1レコード、1フィールドに複数のデータを保持できるものです。<br />
<br />
本来は別のテーブルに保存して管理するべきデータを繰り返しフィールドに保存してしまうといったことが起きます。<br />
<br />
例えば、請求書をFileMaker Proで作成するとします。<br />
<br />
請求書には請求先の名前や、請求金額及び、明細が必要となります。<br />
<br />
名前や請求金額などは1つの請求に対して、1つだけが必要なので、特に問題はありません。<br />
<br />
明細は1つの請求書に対して、複数必要になってきます。<br />
<br />
FileMaker Proを触る以前にAccessなどでリレーションを少しでも学び、使ったことのある方であれば、テーブルを二つ作ることを思いつくでしょう。<br />
<br />
しかし、Excelから直接FileMaker Proに来た方などはどうしても繰り返しフィールドに手が出てしまいます。<br />
<br />
私はこれがFileMaker Proの初めての罠だと思っています。<br />
<br />
先ほど出ました明細行に繰り返しを使うと、Excelなどに出力する場合に、その後加工するのが面倒ですし、スクリプトや計算式で複雑になってきます。<br />
<br />
あとで、このデータを別のテーブルに移動して使いたいなど、データの再利用が難しいなどのデメリットありますし、将来的にデータベースに加える際などに大変になってきます。<br />
<br />
<h2>
メリット</h2>
<div>
もちろんメリットもあります。</div>
<div>
<br /></div>
<div>
一時的にデータを格納したり、再利用するつもりもない、メモのようなものを保存する場合には繰り返しフィールドは効果的な場合も多くあります。</div>
<div>
<br /></div>
<div>
<br /></div>
<h2>
正規化</h2>
<div>
データベースには正規化というものがあります。</div>
<div>
<br /></div>
<div>
FileMakerの場合はそこまで厳密にする必要がないということも言われていますが、上記の例のように請求書の明細行などはテーブルを分けます。</div>
<div>
<br /></div>
<div>
正規化の詳しい内容について検索をしていただければいくらでも出てきます。</div>
<div>
<br /></div>
<div>
第一正規化くらいでいいので検索してみましょう。</div>
<div>
<br /></div>
<div>
まず、FileMaker Proを始められる方は、繰り返しフィールドを使わない方がいいでしょう。</div>
<div>
<br /></div>
<div>
いくつもソリューションを作成し、リレーションにも慣れてきたら、少しずつ使うようにした方がいいかもしれません。</div>
<br />Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-22197679813037312402015-06-15T17:30:00.000+09:002015-06-15T17:30:01.621+09:00FileMaker Pro+Goで行う在庫管理システムを作ってみる Part6FileMaker Pro+Goで行う在庫管理システムを作ってみるの第6弾です。<br />
<br />
以前の記事はこちら↓<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/04/filemakerprogo-part1-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part1</a><br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/04/filemakerprogo-part2-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part2</a><br />
<br />
<div>
<a href="http://filemakersolution365.blogspot.jp/2015/05/filemakerprogo-part3-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part3</a><br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/05/filemakerprogo-part4-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part4</a><br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/06/filemakerprogo-part5-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part5</a><br />
<br />
<h2>
バーコードスキャンをするスクリプト</h2>
</div>
<div>
<a href="https://www.blogger.com/blogger.g?blogID=3895478458918452931#editor/target=post;postID=2997017145002240648;onPublishedMenu=allposts;onClosedMenu=allposts;postNum=1;src=postname" target="_blank">part4</a>で作成しましたレイアウトの「Scan」ボタンに設定するスクリプトはいたってシンプルです。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-IcVTFYsRDX0/VX4-Vxki_gI/AAAAAAAAAIU/TmCdDhPdpR8/s1600/20150615115048.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="51" src="http://1.bp.blogspot.com/-IcVTFYsRDX0/VX4-Vxki_gI/AAAAAAAAAIU/TmCdDhPdpR8/s400/20150615115048.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
上の図のように1行だけなので、ボタン自体にスクリプトステップを割り当ててもいいのですが、今後その前後に何かの処理をさせたいということがあるかもしれないので、とりあえず1行のスクリプトを作成し、設定します。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
このスクリプトを実行すると、カメラが立ち上がり、バーコードをとらえると自動で読み取り、設定したフィールド(ここでは「棚卸記録::kf_商品コード」)に入力されます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-N62f95bj4_Y/VX4_bKBTp8I/AAAAAAAAAIc/bSy1GkUV57M/s1600/20150615115741.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="299" src="http://3.bp.blogspot.com/-N62f95bj4_Y/VX4_bKBTp8I/AAAAAAAAAIc/bSy1GkUV57M/s320/20150615115741.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
スキャンすると上の図の「商品コード」のフィールドにバーコードの内容が挿入されます。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
次に、日付と、在庫数を入力すればOKという流れです。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
日付に関しては、先ほどのスクリプトにフィールド設定で「Get(日付)」を設定してもいいでしょうし、レコードが作成されたときに自動で、入力するようにオプションで計算値の入力を設定してもいいでしょう。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h2 style="clear: both; text-align: left;">
実在庫とデータベース上の在庫の差異調整スクリプト</h2>
<div>
棚卸が終わると、そのデータと商品マスター上のデータの差異を調べて、実在庫に合わせるように調整を行います。</div>
<div>
<br /></div>
<div>
下記がそのスクリプトです。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-2TSF3RqeRzw/VX5MXhmcYMI/AAAAAAAAAIs/jGJCvMkKXqw/s1600/20150615125151.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-2TSF3RqeRzw/VX5MXhmcYMI/AAAAAAAAAIs/jGJCvMkKXqw/s640/20150615125151.png" width="500" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
スクリプト内にある変数を設定「$現在庫数」の計算式は下記のようになっています。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-Fa_sRF-wXXI/VX5M9xbWSaI/AAAAAAAAAI0/pJKgIYoGF5A/s1600/20150615125034.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-Fa_sRF-wXXI/VX5M9xbWSaI/AAAAAAAAAI0/pJKgIYoGF5A/s400/20150615125034.png" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
また、「$実在庫数」は下記です。</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-7YkyGTGsip8/VX5NHnmQ_UI/AAAAAAAAAI8/hICzRp52Hd0/s1600/20150615125050.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://3.bp.blogspot.com/-7YkyGTGsip8/VX5NHnmQ_UI/AAAAAAAAAI8/hICzRp52Hd0/s400/20150615125050.png" width="500" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
スクリプトの流れとしては、棚卸の記録レイアウトで本日行った棚卸の記録を表示し、Loopで上から商品マスター上の在庫数を比較します。異なれば、「入出庫管理マスター」に移動して、差異を調整し、これを一番下のレコードまで繰り返します。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
$実在庫数では、倉庫内に同じアイテムが別々の場所にある場合を想定していますので、複数の場所にあっても(棚卸記録テーブルに商品コードの重複したレコードがあっても)問題ありません。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
非常に簡単ではありましたが、在庫を管理するだけという観点のソリューションになります。</div>
<div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com4tag:blogger.com,1999:blog-3895478458918452931.post-64140503221083448892015-06-03T17:30:00.000+09:002015-06-03T17:30:01.592+09:00FileMaker Pro+Goで行う在庫管理システムを作ってみる Part5FileMaker Pro+Goで行う在庫管理システムを作ってみるの第5弾です。<br />
<br />
以前の記事はこちら↓<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/04/filemakerprogo-part1-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part1</a><br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/04/filemakerprogo-part2-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part2</a><br />
<br />
<div>
<a href="http://filemakersolution365.blogspot.jp/2015/05/filemakerprogo-part3-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part3</a><br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/05/filemakerprogo-part4-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part4</a><br />
<br />
<h2>
バーコード</h2>
</div>
<div>
このソリューションでは、商品や棚にバーコードを貼り付け、それをスキャンすることで商品を識別し、実在庫数を入力し棚卸をします。</div>
<div>
<br /></div>
<div>
というわけで、どこかでバーコードを印刷したりするようにしなくてはいけません。</div>
<div>
<br /></div>
<div>
バーコードフォントというのがあり、入力した数値などをバーコードとして表示してくれるフォントがあります。</div>
<div>
<br /></div>
<div>
<a href="https://www.technical.jp/barcode/font/" target="_blank">https://www.technical.jp/barcode/font/</a>で無償配布されていますので、そちらを使わせていただきます。(Windowsのみのようです)</div>
<div>
<br /></div>
<div>
ここではCODE39という簡単なものを使用します。</div>
<div>
<br /></div>
<div>
インストールはいたって簡単で、ダウンロードしたファイルをダブルクリックで開いて、「インストール」を選択するだけです。</div>
<div>
<br /></div>
<div>
バーコードにはスタートコードと、ストップコードというのがあります。CODE39の場合は「*」です。これを商品コードの前後につけます。これを読み取ると商品コードを読み込んでくれます。</div>
<div>
<br /></div>
<h2>
商品マスターをちょっと改造</h2>
<div>
バーコードを印刷できるようにするために、商品マスターに商品コードをバーコードで読めるようにするためのフィールドを作成します。</div>
<div>
<br /></div>
<div>
このフィールドには自動計算値入力で、</div>
<div>
<br /></div>
<div>
"*" & 商品コード & "*"</div>
<div>
<br /></div>
<div>
としました。このフィールドをCODE39のフォントでレイアウト上に表示するとバーコードになります。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-KovF__tgLEU/VW5t6ar0KSI/AAAAAAAAAH8/IpVHOdAyiL0/s1600/20150603115506.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="226" src="http://3.bp.blogspot.com/-KovF__tgLEU/VW5t6ar0KSI/AAAAAAAAAH8/IpVHOdAyiL0/s400/20150603115506.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
レイアウトはこんな感じになります。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-ESrYLkw1zwE/VW5uC7GGhVI/AAAAAAAAAIE/sO3vhVARMZI/s1600/20150603115501.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="299" src="http://4.bp.blogspot.com/-ESrYLkw1zwE/VW5uC7GGhVI/AAAAAAAAAIE/sO3vhVARMZI/s320/20150603115501.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
ブラウズモードで見るとこんな感じ</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
これを印刷して、貼っておけば、これをスキャンするだけで入力ができるようになります。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
次回はいよいよスキャンするスクリプトを配置したり、レイアウトを調整していきたいと思います。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0tag:blogger.com,1999:blog-3895478458918452931.post-29970171450022406482015-05-26T17:30:00.000+09:002015-06-15T13:03:27.778+09:00FileMaker Pro+Goで行う在庫管理システムを作ってみる Part4FileMaker Pro+Goで行う在庫管理システムを作ってみるの第4弾です。<br />
<br />
以前の記事はこちら↓<br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/04/filemakerprogo-part1-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part1</a><br />
<br />
<a href="http://filemakersolution365.blogspot.jp/2015/04/filemakerprogo-part2-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part2</a><br />
<br />
<div>
<a href="http://filemakersolution365.blogspot.jp/2015/05/filemakerprogo-part3-zaiko.html" target="_blank">FileMaker Pro+Goで行う在庫管理システムを作ってみる Part3</a></div>
<div>
<br /></div>
<h2>
レイアウトの作成</h2>
<div>
今回はレイアウトの作成を主に扱っていきたいと思います。</div>
<div>
<br /></div>
<div>
今回のテーマとして「FileMaker Pro+Go」ということがテーマとなっています。</div>
<div>
<br /></div>
<div>
PCとモバイルのハイブリットということですが、こういったケースの場合、それぞれのデバイスで行うことの役割というのは比較的明確になってくるでしょうか。</div>
<div>
<br /></div>
<div>
今回はPCは在庫数のチェックやマスターの登録。</div>
<div>
<br /></div>
<div>
モバイルは棚卸での利用を想定していますので、商品マスター等の閲覧はしません。</div>
<div>
<br /></div>
<div>
イメージとしては、iPhoneやiPodTouchを使って、バーコードを読み取り、在庫数を入力していくという作業に使います。ハンディターミナルや、バーコードリーダーの代わりということになります。</div>
<div>
<br /></div>
<h2>
商品マスター</h2>
<div>
商品マスターのレイアウトは今回はリスト形式を採用します。</div>
<div>
<br /></div>
<div>
この例ではフィールド数が少ないので、リスト形式だけでいけますが、実際に業務で使っていくとなると、商品には様々な情報(画像や、商品の仕様など)あると思いますので、フォーム形式との併用ということになろうかと思います。</div>
<div>
<br /></div>
<div>
一覧表示(リスト形式)にボタンを配置し詳細画面(フォーム形式)に移動したり、一覧表示にポップオーバーボタンを配置し、そのポップオーバーにリスト形式では表示しきれないデータなどを配置するという手もあるでしょう。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-QX5Vh3mRBoA/VWPg8-lGnBI/AAAAAAAAAHQ/M-1NcyPWuLU/s1600/20150526115538.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="http://4.bp.blogspot.com/-QX5Vh3mRBoA/VWPg8-lGnBI/AAAAAAAAAHQ/M-1NcyPWuLU/s640/20150526115538.png" width="540" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<h2 style="clear: both; text-align: left;">
棚卸用レイアウト(Go)</h2>
<div>
続いて、棚卸レイアウトです。</div>
<div>
<br /></div>
<div>
iPhoneやiPodTouch用のレイアウトを作成していきます。</div>
<div>
<br /></div>
<div>
レイアウト管理画面から「新規」をクリックすると、ウィザードが出ます。そこでタッチデバイス→iPhoneを選択すると、自動的にiPhone用の画面の大きさになります。</div>
<div>
<br /></div>
<div>
ただし、現在はiPhoneでもさまざまな画面サイズがありますので、基本的にはアンカーを使って、いろいろなサイズに対応していく必要があります。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-PnqWCMSD5nc/VWP6AqNZE0I/AAAAAAAAAHg/LJrR7Ja6HHk/s1600/20150526122647.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="http://3.bp.blogspot.com/-PnqWCMSD5nc/VWP6AqNZE0I/AAAAAAAAAHg/LJrR7Ja6HHk/s400/20150526122647.png" width="253" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
上の図の赤枠部分がアンカーです。右側のアンカーを各フィールドに設定します。こうすることで、横画面や縦画面でその画面サイズに応じて、フィールド枠が広がります。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h2 style="clear: both; text-align: left;">
ズームの設定</h2>
<div>
iPadやiPhoneのモバイルデバイスでは、指先で画面の拡大や縮小が可能です。しかし、多くの場合、これをそのままにしておくと、画面がぶれる様な動きをすることがあり、扱いづらくなります。</div>
<div>
<br /></div>
<div>
スクリプトで、「ズームの設定[ロック;100%]」を作成し、OnLayoutEnterに設定しておくことで、これを防ぐことができます。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-fJNHIM_NNQ0/VWP7xEXlT-I/AAAAAAAAAHs/5VWNUQ2KlHY/s1600/20150526122642.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://2.bp.blogspot.com/-fJNHIM_NNQ0/VWP7xEXlT-I/AAAAAAAAAHs/5VWNUQ2KlHY/s320/20150526122642.png" width="237" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
レイアウトはこのような感じにしました。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
ボタンを配置し、「Scan」ボタンは、バーコードを読み取り、その内容を「商品コード」に入力、「New」で新規レコードを作成するという形になります。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Minervahttp://www.blogger.com/profile/13192033186983701909noreply@blogger.com0