スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

FileMakerで業務日誌を考える 16

いや〜どうも〜。

さて、今日はvirtual listでフィールド側で準備しておくことです。
下のスクリプトをみてください。

スクリーンショット

これは前に何回も説明してきましたが繰り返しレコードを作るってやつです。
どのテーブルで作るかっていうとこの前の行で出退勤テーブルと指定しています。
出退勤テーブルって下です。
スクリーンショット 3

では、ここで出勤テーブルのフィールドを見てみましょう。
↓こんな感じ。
スクリーンショット 1

このフィールドちょっと説明しますと、ID(←メンバーのID)を入力するとルックアップ機能を使ってメンバー名が入力されます。
データは↓のスクリプトで必要数分だけ自動で作成されます。
スクリーンショット

でも、IDって自動取得していませんよね。
で、ここでフィールド側の工夫です。IDはオプションで計算を指定しています。
その計算式は以下の通りです。
スクリーンショット 2

GetValue ($id ; Get(レコード番号)) です。

これについて解説しますが、これこそがVirtual listの真骨頂です。

GetValue は値一覧のデータを取得せよ、って命令文です。
で、ここでいうデータとは$idの○番目の値ってことです。
わかりにくいですよね〜。でも頑張って理解しようとしてください。

$idとは?

151018-0001.png

あ、ありました。12行目にありますね。メンバー::リストです。
メンバーリストって前にありましたね。
そうここにありました、FileMakerで業務日誌を考える 11 〜Virtual list とは5に。
$idの中身は
1
2
3
4
5
でしたね。

GetValue ($id ; Get(レコード番号))は、このうちのGet(レコード番号)番目のデータを持ってこいって意味です。
Get(レコード番号)番目って、データを新たに作った時に順に割り振られます。
新規レコード作成で一番初めにできたデータは1番目、次にできたデータは2番目、...ていう風になります。

ということはGetValue ($id ; Get(レコード番号))は、リスト1、2、3、4、5の中から1番目の値を持ってこいってことなら1持ってくる値は1になります。もし、リスト1、3、5、7、9の中から3番目の値を持ってこいってことなら5ってことです。

わかりましたか?
難しいですよね。説明する方も大変なんですよ。

うーん、今日はここまでっす。
スポンサーサイト
[ 2015/10/26 00:35 ] 業務日誌 | TB(0) | CM(0)

FileMakerで業務日誌を考える 15

いや〜どうも。

ほんと、寒くなってきましたな。鍋で一杯って感じで日本酒の美味い季節になってきましたね。
飲み過ぎには気をつけましょう。

さて、今回は前回の補足です。Loop処理を抜け出る条件Exit Loop if [ $i > $q ] の$qについてです。
151018-0001.png

そもそも、このスクリプトが何のために必要かを思い出してみましょう。
業務日誌を作るにあたってポータル元となる出退勤テーブルのデータを先に作っちゃおうってな話でしたね。
下のデータをみてください。データ数は5個です。なぜ5個かって、それはメンバーが5人だからです。
スクリーンショット 3

なので、スクリプトを発動すると5人分のデータを自動的に作っちゃおうってのがこのスクリプトの目的なわけよ。
そのためにLoopを用いて新規にデータを繰り返し作っていくんだけど5個以上は必要ないよって基準を作ります。
それが14行目の変数$qってわけです。(別に変数の名前はqじゃなくても良い)

話をLoop処理の22から27に移します。
やってることって単純で、新規レコード作成し、25行目にあるようにできたレコードに日誌IDを放り込んでいきます。
これは日付がルックアップになっているので日付を自動入力するための作業です。

はい、今日はここまでっす。
次回は「virtuallistでデータを自動取得するための工夫。〜フィールド側で準備しておくこと〜」です。




[ 2015/10/23 20:09 ] 業務日誌 | TB(0) | CM(1)

FileMakerで業務日誌を考える 14

いや〜どうも。

前回スクリプトの解説をしました。
スクリプトの後半部分についてもう少し説明して欲しいとのリクエストがありましたので今日はこれについて書きます。

さて、前回紹介したスクリプトがこれ↓
151018-0001.png

では、22〜27行目について説明します。

プログラミングではよくみかけるLoop処理です。
ただ、慣れない人には難しいかもしれませんね。

22行目で「これから繰り返し処理をやるぞ!」って宣言しています。どこまで処理するかというと26行目まで。
そんでもって、27行目で「ここで繰り返しは一旦おしまい。もういちど22行目に戻ってね」って宣言します。それがEnd Loopです。
つまり、22から27行目までの処理を延々とおこないます。これでは無限に処理を繰り返しますので、ある条件になったらLoopを抜けなさい!って命令する必要があります。

それが23行目 Exit Loop if [ $i > $q ] です。 [ $i > $q ] のところは条件式で、もし、$iが$qより大きくなったらループを抜けなさいって意味です。もう少し噛み砕いて言うと変数iがへんすうqより大きくなったらってことが書いてあります。

はて、変数iってなんでしょう?Loopの前の行を見てみましょう。
21行目変数iのことが書いてありますね。変数$iを1とするぞ!って。
変数を宣言した後Loop内の処理を行っていきますが、26行目に再び変数$iが出てきます。
今度は変数$iの値を$i+1にするぞ!って。

伊藤「ん、ちょっと待ってくださいよ、先輩」
伊藤「さっきまで、つまり25行目まで$iは1でしたよね」
わし「そうや」
伊藤「で、今度の$iは先ほどまでの$iに1を足すってことになるんですかね?」
わし「ご名答、その通りなんや」
伊藤「と、いうことは26行目の$iは1+1=2」「つまり、$i=2ってことですか」
わし「そう、FileMakerで業務日誌を考える 11 〜Virtual list とは5であるようにデータビューワーを使うと変数$iが1から2に変わっているのがわかるぞ」
伊藤「なるほど」

伊藤「でも先輩、ここからまた繰り返し処理が始まるじゃないですか」
わし「そやな」
伊藤「だとしたら、26行目でまた、変数$iを宣言しますよね」
わし「うん」
伊藤「今度は、25行目までの$iは2となっているので今度の$iは先ほどまでの2に1を足すわけですから3」「つまり、$i=3ってことですか」
わし「よう分かっとるやないかーい」

伊藤「で、またLoop内の処理を繰り返し26行目まで来る」
わし「すると」
伊藤「今度は3+1=4と」

わし「そうなんや、つまりこの変数iは繰り返し回数をカウントしているカウンターの役割をしているんや」
伊藤「なるほど$iについてはわかりました」「では、$qは?」
わし「それは次にしようや」

今回はここまでです。

繰り返し処理とカウンター用の変数について書きました。
分岐式ifと繰り返し処理Loopはスクリプトを作っていく上では基礎となります。慣れると面倒ではなくとても便利になりますので是非覚えましょう!
[ 2015/10/21 20:54 ] 業務日誌 | TB(0) | CM(0)

FileMakerで業務日誌を考える 13

いや〜どうも。

今回はスクリプトの続きです。前回スクリプトの大筋を書きました。
これに肉付けしていきます。
スクリーンショット 2

で、肉付けしたものがこちら。
151018-0001.png

なんか料理番組の、「そして3時間煮込んだのがこちら」的な感じですね。

では、少し解説です。
7行目 ここで日誌IDを変数宣言し値を取得します。後に出退勤のデータを作成する時に値を放り込むためです。
8行目 以降、レイアウトを替えていったりデータを作成していきますが一連の操作は新規ウインドウ内でやってしまいます。
10行目 Virtual listの値取得のためメンバーにレイアウトを切り替えます。取得する値はメンバーのIDです。
14行目 後にLoop処理により人数分のレコードを作ります。Loopから抜けるための基準とするための値になります。

16〜19行目 Virtual listを利用したデータ作成のための準備になります。

16行目 Virtual listを使ってデータを作成するのは出退勤なのでレイアウトを切り替えています。
21行目 Loop回数をカウントするための変数
22〜27行目 Virtual listのお決まりです。

今日はここまでッス。

次回はVirtual listを使うための作法、出退勤側でやること。です。
[ 2015/10/18 00:24 ] 業務日誌 | TB(0) | CM(0)

FileMakerで業務日誌を考える 12 

いや〜どうも。

前回まででVirtual listの部分について一通り書きました。
難解ですね〜。

今回はVirtual listの部分は一旦置いておきましょう。

今回からはスクリプトについて書いていきます。
↓図を見て下さい。スクリプトの目的としては「今日の日付を追加」ボタンをクリックすると
スクリーンショット 6

↓こんな風に、ボタンを押した日、そしてメンバーのIDと名前が自動的に入力されるというものをめざします。
スクリーンショット 7

考え方としては、まず業務日誌のポータル元となる出退勤データを先に作ってしまいます。
業務日誌の表部分はポータルになっていて出退勤テーブルの(業務日誌の日誌IDと出退勤の日誌IDが同じものの)データを覗き見しているだけですから。

つまり、↓のように日誌IDが18のものを先に作ってしまえばいいということです。
スクリーンショット 3

で、スクリプトの大筋は以下になります。
スクリーンショット 2

これについての解説は次回です。
[ 2015/10/17 22:09 ] 業務日誌 | TB(0) | CM(0)

FileMakerで業務日誌を考える 11 〜Virtual list とは5

いや〜どうも。

今回は変数の値を確認する、です。

さっそく行ってみましょう。

まずはスクリプトを一つ作ってみましょう。内容は以下となります。
スクリーンショット 4

FileMakerにはProとadvanceという二つの製品がありますが、ここで紹介する方法はadvanceのみについているデバッグ機能を使います。デバッグはスクリプトを検証する時に使用します。

それでは、上記スクリプトをデバッグ機能をつかて検証してみましょう。

まずはメニューよりスクリプトデバッガを選択。
151010-0003.png

するとデバッガ画面が出ましたね。
スクリーンショット 7

これでスクリプトの検証が出来るんですが、少しボタンについて説明しますね。(参考:FileMakerデータベース開発テクニック.木下雄一郎 著)
●一番左側の鉛筆みたいなボタン
 これはスクリプトの編集ボタンです。
●再生ボタン
 スクリプトを自動再生します。
●四角いボタン
 スクリプトを終了します。
●長細四角形に折れ曲がった矢印
 ステップオーバーボタンと言います。スクリプトを一度に1ステップずつ実行します。サブスクリプトがある場合はサブを全て実行してからメインへ移動して停止します。
●細長四角形に下向きの矢印
 ステップインボタンといいます。ステップオーバとの違いはサブスクリプトないもワンステップずつ順に実行していきます。
●細長四角形に上矢印
 ステップアウトボタンいいまんねん。サブスクリプト内にいる時に残りのステップを全て実行してから呼び出し元のステップの次で停止します。
●右矢印が細長四角形を指す
 次のステップを設定ボタンいいます。特定の行からスクリプトを実行する時に使用します。

●スクリプトトリガー停止ボタン(右から二番目)
●データビューアーを開くボタン(一番右)


はい、ではまず今回のスクリプトについて解説します。
下のように3行だけです。変数を設定してスクリプトを終わる、たったそれだけの命令文です。

スクリーンショット 4

このスクリプトを利用してデバッガを動かしてみましょう。
1行目から順に確認していくのでステップオーバーボタンをクリックしましょう。次の行へカレントが移動しましたね。
再度ステップオーバーボタンをクリックしましょう。今度は次の行へ移動しませんね。これはスクリプトの内容が一時停止になっているためです。再びボタンをクリックすると3行目へ移動してスクリプトが終了されますね。

何が起こっているのかわかりませんね。

今度はスクリプトを実行する前にデバッガ画面のデータビューアボタンを押しておきましょう。すると下のようなウインドウが開きます。
スクリーンショット 5

では、スクリプトを実行しましょう。
おやおや今度は何やら名前と値の項目に何かデータが入っていますよ。これは1行目のスクリプトに関連したフィールドとその値が表示されているんです。
スクリーンショット 9

では次にステップオーバーボタンをクリックします。すると次のようになります。
スクリーンショット 11

これは1行目で宣言した変数の中身を表示しています。名前のところがスクリプトで指定した$nになっていますね。そんでもって値が「リスト」フィールドにある1 2 3 4 5になっています。さらにこのデータビュー内の2行目をダブルクリックすると下のように現在の値が表示されます。ここでは縦に1〜5の数字が並んでいます。そう、改行されているんです。

スクリーンショット 8

このようにデバッグ機能とデータビューワーを使うことで変数の中身も確認することができるんです。

今日はここまでっす。

次回はグローバル変数とローカル変数です。

みなさん、私の拙い解説で理解できていますか?もう少しややこしい話が続きますよ。
[ 2015/10/12 00:31 ] 業務日誌 | TB(0) | CM(0)

FileMakerで業務日誌を考える 11 〜Virtual list とは4

いや〜どうも。

前回はvirtual listのlistデータを集計機能を使って求めることができました。
今回はその集計データをvirtual化するをテーマにします。
方法はいたって簡単です。集計データを変数化するだけなんですから。
では、さっそく行ってみましょう。

変数化するにはスクリプトを使います。
下図のように 変数を設定 で変数宣言します。
下の場合だと変数$nを宣言して値1を代入しますので$n=1になります。

スクリーンショット 12

では次の場合の変数はどうなるでしょうか。
スクリーンショット 3

先ほどは直に数字の1を変数の値としていましたが、今回は値にメンバーテーブルのリストフィールドが設定されています。
$n = メンバーテーブルのリストフィールド が成り立ちますね。
ここで、メンバーテーブルのリストフィールドを見てみましょう。

スクリーンショット 2

上図のリストフィールドを見てみますと
1
2
3
4
5
が入力されていますね。

あくまでも、
1
2
3
4
5
であって、
1 2 3 4 5ではないのです。
この違い、わかりますか。1と2の間には改行があるわけです。
強いて書き換えて表示するならば 1 ¶ 2 ¶ 3 ¶ 4 ¶ 5 と改行マークが数字の間にあるのです。

話を元に戻します。
変数$nは
$n = メンバーテーブルのリストフィールド = 1 ¶ 2 ¶ 3 ¶ 4 ¶ 5  となります。
つまり、
$n = 1 ¶ 2 ¶ 3 ¶ 4 ¶ 5 ですね。

前に書いたように変数はフィールドと違ってレイアウト上のどこかに表記されることはありません。
しかし、上の変数の例にあるようにちゃんとデータを持つことはもちろんでき、しかも改行されていればリストとして値を持つことも可能なのです。この辺がvirtual listと呼ばれる所以だということは何度も書きましたね。

ところで先ほど変数は表記されないと書きましたがその値が何かということを確認することができます。

続きは次回です。
[ 2015/10/10 15:30 ] 業務日誌 | TB(0) | CM(0)

FileMakerで業務日誌を考える 11 〜Virtual list とは3〜

いや〜どうも。

Mac OS 10.11 El Capitan にアップグレードしてみました。
なかなか良いのですが、FileMaker Ver.11では画面描写にちょと難がありますね。Ver.14でも2画面機能に対応していなかったりとアップデートが待たれるところです。

新しくなった日本語入力機能も使い慣れたらかなりいい感じではないでしょうか。Atokが新機能として搭載したらいいんですけど。

さて、今回はvirtual listの肝となる集計フィールドのタイプ一覧についてです。

では、前回の記事で紹介したメンバーテーブルのフィールドを見てみましよう。
スクリーンショット 8

こんな感じですね。注目するのはリストです。
続いてオプションはIDフィールドの一覧になっていますね。
スクリーンショット 10

これで得られる結果について考察しましょう。
下の画面にヘッダを表示するようにして、ヘッダにリストフィールドを配置します。
スクリーンショット 3


つまり、下のような配置になります。
スクリーンショット 2

そして、注目して欲しいのはリストフィールドの結果に

1
2
3
4
5

とリターンで改行されたデータが得られているということです。
これで、virtual listのlistデータを得ることができました。

今日はここまで。
次回は得られたリストデータを変数に設定するです。


[ 2015/10/05 18:13 ] 業務日誌 | TB(0) | CM(0)







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