タグ: FileMaker13

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

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

🔷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を上げた際、表示・非表示の状態が変わってしまう可能性がありますので、しっかり確認しておきましょう。

詳細