スポンサーサイト

-- --, --
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Google Maps API V3 HTML作成ファイル

05 15, 2014
Google Maps API V3 を利用したHTMLを作成するファイルです。

スクリプト引数に指定の形式のテキストを渡すと、
引数に含まれる座標をマッピングしたHTMLを返します。

スクリプト引数で値を渡し、スクリプト結果で取得して利用します。

単体では意味を持たないファイルです。
ソリューションにファイルを組み込む等で利用して下さい。

ダウンロードはこちら

サンプルインプット(スクリプト引数)


サンプルアウトプット(スクリプト結果)


表示サンプル
20140515_001.png

スポンサーサイト
Posted in FileMaker

日付の形式が変わってしまったファイルを元に戻す。

03 04, 2014
適切なアドバイスを下さったfbの皆さまに感謝します。

日付の書式が変わってしまったファイルを元に戻す方法です。
※ファイルは FileMaker Server でホストされています。

現象:

FileMaker で一般的な日付の書式は

yyyy/mm/dd(西暦の場合)です。

H25/01/01 などの和暦の略称での入力も勝手に変換してくれます。
S65/01/01 のように誤った数字を入れた場合も修正して西暦として認識します。


検索機能を利用して特定の年だけを検索したい場合は
「1981」や「1981/*/*」で検索可能です。

ところが、何らかの原因で日付の書式が変わってしまうことがあります。

今回のケースでは mm/dd/yyyy に変わっていました。


問題点:

ブラウズモードや検索モードでの入力や表示では確認しづらいこと

※検索条件で日付を計算式で入力し、
Date ( 1 ; 1 ; 1998 ) などを入れてデバッガを使えば確認できます。



誘発される障害:

例えば検索項目を入力するレイアウトを用意して
グローバル格納の複数のフィールドに入力させて「検索実行」するケース。

日付にワイルドカード「*」を使うことがあります。

例)特定の年だけ検索する。 1981/*/*
特定の月だけ検索する */09/*
特定の年月を検索する 1981/09/*

※年だけの場合は「1981」だけでも可。当年の特定月ならば「09」だけでも可。

140304_001.png

図の様な計算式を書くことになるのですが、
日付の書式が変わっている場合、エラー番号500が返ってきてしまい検索できません。

この状態でスクリプトが正しく動作するためには「*/*/1998」の様な書式で計算式を書く
あるいは 計算結果を挿入 のステップを使う必要がありますが、
その場合はフィールドをレイアウト上に配置しておく必要があります。

前者の対応を行うと日付書式が変わると再びエラーになってしまいます。


望ましい解決策:

日付の書式を yyyy/mm/dd に戻す。

ファイルのクローンを日本語環境で開き、再度ホストする。

という解決策を提示頂いたので下記を試してみました。

・日本語環境(OS X)で作成した別のファイル → サーバーでOK
・日本語環境(OS X)で開いたクローン → ローカルでOK
・日本語環境(OS X)で開いたクローン → サーバーでOK

・日本語環境(OS X)で開いたバックアップ → サーバーでNG
・そのままホストしたクローン → サーバーでNG


なお、データとインタフェースが別々になっている分離モデルの場合、
データファイルを日本語環境で開くだけでなく、
インタフェースに配置した該当日付フィールドで検索を行う必要があります。

※クローンなのでデータはありませんがこれを省略した場合、
インタフェース側では日付の書式は変わったままでした。

以上です。
Posted in FileMaker

解説: FileMaker 13 スライドコントロールとレイアウト切り替え

02 23, 2014
SeedCode の素晴らしい動画に感謝します。

こちらが本家の動画です。
http://youtu.be/oXQKKNCJOhw


スライドコントロールを利用して
レイアウト切り替えにアニメーションを付けています。


実は本家の Webページ ではサンプルも公開されていますが、
そちらに気付かずに作ってしまったファイルの解説です。
※本家とは若干異なる部分もあると思われます。

登場する関数:
Get ( レイアウト名 )
LayoutNames
FilterValues
Position



ポイント:
切り替えさせるためのメニューの並び順と、
レイアウトの並び順は同じにしておく。


動作の流れ:
・スライドコントロールを操作するスクリプト(ボタン等)
1.切り替え先のレイアウト名を引数から取得
2.現在のレイアウトと切り替え先のレイアウトの位置関係を比較
3.[2]の結果に応じてパネルを切り替える
4.オンタイマーをインストール

・レイアウトを切り替えるスクリプト(オンタイマー)
5.レイアウトを切り替える
6.オンタイマーをアンインストール

・入力用のパネルを表示するスクリプト(スクリプトトリガ)
7.切り替えたレイアウト上のスライドコントロールで入力用のパネルを表示する


下準備:
・ホームレイアウト
スライドコントロール(パネルは2枚)

パネル1 [MasterPanel_Center] ホーム画面のパネル
20140223_001.png

パネル2 [MasterPanel_Right] ボタン以外は白紙のパネル
20140223_002.png


・入力用レイアウト
スライドコントロール(パネルは4枚)

パネル1 [MasterPanel_Left] ボタン以外は白紙のパネル
20140223_002.png

パネル2 [MasterPanel_Home] ホーム画面のオブジェクトの一部を配置
20140223_004.png

パネル3 [MasterPanel_Center] 入力用パネル
20140223_003.png

パネル4 [MasterPanel_Right] ボタン以外は白紙のレイアウト
20140223_002.png

レイアウト切り替え用のボタン等はすべてのパネルに配置します。
ボタン設定は [MasterPanel_Center] のみ行えばOKです。

※レイアウト作成時のポイントとして、
入力レイアウトの背景色は共通にしておきましょう。(白紙など)


スクリプトの作成:
・ボタン割当とレイアウト切り替え用スクリプト(ボタン/オンタイマー)
この2つの役割は同じスクリプトに作成します。

20140223_005.png

スクリプト引数が「タイマー実行」であるか否かで処理を分けます。
※この文字列は任意の文字列で構いませんが、
レイアウト名と同じにならないように気を付けます。


切り替え先のレイアウト名(引数)をグローバル変数に設定します。

LayoutNames:
デザイン関数でレイアウト名の一覧を取得します。

FilterValues:
レイアウト名の一覧に切り替え先のレイアウト名が存在する場合、
そのレイアウト名のみが残ります。

万が一存在しないレイアウト名が指定された場合は空欄になるので、
何も処理をせずに終わります。

Get ( レイアウト名 ):
現在のレイアウト名と切り替え先のレイアウト名が同じ場合、
何も処理をせずに終わります。


20140223_006.png

スクリプトアニメーションを[オン]に切り替えて
パネル移動の際にスライドアニメーションが表示されるようにします。

現在のレイアウト名が「ホーム」の場合は、
必ずレイアウト順があとのレイアウトに切り替わるはずなので
右からパネルがスライドするように[MasterPanel_Right]に切り替えます。

移動先のレイアウト名が「ホーム」の場合は、
ホーム画面の一部が配置された[MasterPanel_Home]に切り替えます。
この場合パネルは左からスライドします。

LayoutNames, Position:
レイアウト名の一覧で現在のレイアウト名の出現位置が
切り替え先のレイアウト名より大きい場合は順番がまえのレイアウトに移動するので
左からパネルがスライドするように[MasterPanel_Left]に切り替えます。

それ以外の場合は右からスライドするように[MasterPanel_Right]に切り替えます。

最後にオンタイマーをインストールします。引数には「タイマー実行」を設定します。


20140223_007.png

スクリプト冒頭の IF で引数が「タイマー実行」だった場合の処理です。
レイアウトを切り替え、オンタイマーをアンインストールします。


20140223_008.png

・入力用のパネルを表示するスクリプト(スクリプトトリガ)
スクリプトアニメーションを[オフ]に切り替えて
パネル移動の際にスライドアニメーションが表示されないようにします。
入力用のパネル[MasterPanel_Center]を表示します。




スクリプトのボタン/スクリプトトリガ設定:
・ボタン設定
20140223_010.png
レイアウト切り替えを行うためのオブジェクトにボタン設定します。
引数は切り替え先のレイアウト名を指定します。

・スクリプトトリガ
20140223_009.png
各レイアウトの[OnLayoutEnter]にスクリプトトリガを設定します。


以上。
素晴らしいアイデアです。



LayoutNames に FilterValues でレイアウトの有無の判別や
Position の結果でレイアウトの前後関係を判定するアイデアに驚きです。


レイアウトが増えても同じスライドコントロールを配置し、
[MasterPanel_Center]をそれぞれ必要なものに変えるだけでよいのもポイントです。
Posted in FileMaker

スクリプトの値の受け渡し

02 17, 2014
スクリプト間で値の受け渡しを行う場合、

引数、変数、グローバル格納のフィールド の速度はどれくらい違うのか。

検証方法:

1.親となるスクリプトで約10万文字のテキストを生成する(半角英数)
2.子となるスクリプトにテキストを渡す
3.子が受け取ったテキストを処理(文字カウント)する

「スクリプトを実行」ステップの前に計測を開始時間、
子となるスクリプトの終了を終了時間として経過時間を計測。


1.ローカルのファイルで実行
2.サーバーでホストされたファイルで実行
3.「サーバー上のスクリプトを実行」スクリプトステップを実行


Get ( 現在の時刻 UTC ミリ秒 ) を用いて経過時間をミリ秒まで計測。
それぞれ10回処理を行い、平均値を抽出しています。

FileMaker Pro / FileMaker Go でそれぞれ検証しています。

実行環境:
サーバー
server.png


クライアント
mba.png
ipad.png


こちらが検証結果です。

140217_001.png
Posted in FileMaker

関連レコードの有無を判定する

02 14, 2014
現在のレコードの関連レコードの有無を判定する計算式で、

IsValid, Count, IsEmpty, Sum, ExecuteSQL の速度はどれくらい違うのか。

検証方法:

1.親テーブルに1000レコードを作成する
2.子テーブルに15000レコードを作成する
3.子テーブルの外部キーに親テーブルの主キーを設定する

親テーブルの各レコードに対し、
関連レコードの有無判定をそれぞれの計算式で行う。
最後のレコードの判定完了までの時間を計測。


1.ローカルのファイルで実行
2.サーバーでホストされたファイルで実行
3.「サーバー上のスクリプトを実行」スクリプトステップを実行


Get ( 現在の時刻 UTC ミリ秒 ) を用いて経過時間をミリ秒まで計測。
それぞれ10回処理を行い、平均値を抽出しています。

FileMaker Pro / FileMaker Go でそれぞれ検証しています。

実行環境:
サーバー
server.png

クライアント
mbp.png
ipad.png

こちらが検証結果です。

140214_001.png
※グラフも FileMaker で作成するようにしました。
Posted in FileMaker
プロフィール

まめちゃい

Author:まめちゃい
FileMaker でご飯を食べています。

最新記事
カテゴリ
おすすめ
Powered by amaprop.net
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。