みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
何度も同じ事を申し上げるようで恐縮です。すみません。
お手数を掛けてしまうので、もう、これで最後にします。
仕様や要件を総合的に考慮すると、退出日を空白の物を抽出するだけで良いことは承知していますが、この先、Filemakerを使用する時に、様々な要件や条件抽出を対応する場面が出てくることを想定して、
複数条件の際には、どのような指定で抽出できるのかが知りたかったです。(退出日が空白の物を抜くことは分かっています)
#11で記載した画面Aの内容を訂正しました(0000/00/00を数値設定しました)。
以下の画面(A画面)の表示内容の物を、B画面のように表示できるようにしたいのですが、その際にスクリプトを作成し表示させたいのです。
【A画面】(何も条件の無い時に表示される画面)
「氏名」 「入室日」 「退室日」
山田太郎 2016/05/10 2016/05/11
鈴木一郎 2016/08/26 2016/07/01
加藤玲子 2016/08/26 2016/08/26
佐藤花子 2016/08/27 2016/07/01
伊藤次郎 2016/08/26 2016/08/21
---------------------------------------------------------------------
テーブルの一覧を画面に表示すれば、上記のようになると思うますが、ここで、「スクリプト」を使用し、入室したけど、退出していない人の一覧を、アプリ使用者が、わざわざ検索キーを入力しなくても、
画面Bを開いたら、「 入室日>退出日 」のレコードだけが表示させる検索スクリプトが知りたいです。
スクリプトを作成して、画面が表示されるイメージは以下の通りです。
①画面を開くと画面Bが表示されます。
【画面B】
「氏名」 「入室日」 「退室日」
鈴木一郎 2016/08/26 2016/07/01
佐藤花子 2016/08/27 2016/07/01
伊藤次郎 2016/08/26 2016/08/21
日付フィールドに
> 0000/00/00
この値は入力できませんが?二つのフィールドの大小を条件とする検索はできません。
それを判定するフィールドを作ればそれで検索ができます。
すみません。イメージで記載しました。例えば、000/00/00というデータがあったと仮定した形で記載しておりますので、実際の整合性とは合わなかったと思います(すみません)。
ここで知りたいのは、数あるスクリプトのうち、どのようなスクリプトを順序良く使っていけば、該当レコードだけが抽出できるかを知りたいのです。
データの整合性は意識せずに記載しておりますことをご了承ください。
> 二つのフィールドの大小を条件とする検索はできません。
2つの項目を比較することは、出来ないんですね。
#11の画面Bの様な抽出って、スクリプトでは難しいでしょうか?(多少の項目の整合性は無視して、条件設定した値が画面に出るスクリプトが知りたいです)
以下の画面(A画面)の表示内容の物を、B画面のように表示できるようにしたいのですが、その際にスクリプトを作成し表示させたいのです。
【A画面】(何も条件の無い時に表示される画面)
「氏名」 「入室日」 「退室日」
山田太郎 2016/05/10 2016/05/11
鈴木一郎 2016/08/26
加藤玲子 2016/08/26 2016/08/26
佐藤花子 2016/08/27
伊藤次郎 2016/08/26 2016/08/21
---------------------------------------------------------------------
テーブルの一覧を画面に表示すれば、上記のようになると思うますが、ここで、「スクリプト」を使用し、入室したけど、退出していない人の一覧を、アプリ使用者が、わざわざ検索キーを入力しなくても、
画面Bを開いたら、「 入室日>退出日 」のレコードだけが表示させる検索スクリプトを教えて欲しいのです。
スクリプトを作成して、画面が表示されるイメージは以下の通りです。
①画面を開くと画面Bが表示されます。
【画面B】
「氏名」 「入室日」 「退室日」
鈴木一郎 2016/08/26
佐藤花子 2016/08/27
伊藤次郎 2016/08/26 2016/08/21
とにかく、アプリの操作する人は、検索操作はしない。ただ画面に表示されたものが、入室日以降から退出日が入力されていないデータを閲覧できる画面にしたいのです。
スクリプトの設定方法を教えて欲しいです。(この条件のスクリプトが分かれば、他の仕様で、データ検索や抽出方法も流用できるのではと考えていますので、是非、スクリプトでの抽出方法が教わりたいのです)
よろしくお願いします。
早速の回答ありがとうございます。
退室日が0のものを抽出するだけで良いと思います。でも、実は、今後の事も考えて、複数条件の物を抽出する時になって壁にぶつかるよりは、現時点で複数条件の抽出方法(A項目とB項目で比較)で構築しておきたい事もあるのです。お手数かけてすみません。
【新規スクリプトを作って「対象レコードステップ群」にある「検索実行」ステップを選んで「条件指定」を押すと、今行った検索条件が記憶されているはず。あとはスクリプト編集を閉じるだけ。】とアドバイスを頂きましたが、何をどうして良いのか、自分の力が低すぎて理解できなかったので、いろいろと何度かチャレンジしてみました。(結果、だめでした・・・)
①手動で検索モードにて検索したい項目のフィールドに「=」を入れて検索は分かります。
でも、ここで完成させたい機能は、
画面が表示された段階で、検索キーを入れることなく、入室された物に対して、入室日 > 退出日となっているものの一覧を表示したいのです。
難しいですかね?
ということで、画面が開く時に、スクリプトか何かでテーブルのレコードから上記の条件の結果のレコードを表示したいスクリプトをどのように設定するのかが教わりたい点なんです。
その検索条件を記憶した検索実行スクリプトを
レイアウトスクリプトのOnLayoutEnterトリガで実行?
なるほど。検索条件を検索実行スクリプトでスクリプトトリガで対応するんですね。
・・・・・・
検証してみましたが、どこかがおかしくて全件が表示されてしまいました。
検索条件を簡単なものにして下記に記述しましたが、スクリプトの指定が誤っていると思うのですが・・・?
「スクリプト」
検索/置換を実行[ダイアログあり:オン;(テーブルA::入室日 = テーブルA::退室日;次を検索]
全件画面に表示されてしまいます。
たぶん、選択しているスクリプトが違うのでしょうが、抽出したいレコードだけを画面に表示したい場合の
スクリプトはどのように設定するのでしょうか?
レコードのサンプルを記述させてもらいます。
氏名,入室日,入室時間,退室日,退室時間
日本太郎,2016/08/01,10:00,2016/08/01,10:25
アメリカ花子,2016/08/02,11:15,2016/08/04,10:00
中国次郎,2016/08/26,14:00,,
上記のレコードから退出されていないと判断できるのが、「中国次郎」のデータとなります。
「日本太郎」は入室日と退室日は同日ですが、入室時間と退出時間の比較で退室したことが判断できます。
「アメリカ花子」は入室日と退室日で判断可能です。
「中国次郎」は入室日しか入っていないので、まだ入室中となり、この方のでレコードが中質対象となります。
このように、大量のデータから、日付や時間から退室状況を判定したいのです。
先に記述しましたように、画面(レイアウト)を開いたと同時に、退室になっていない(中国次郎)方々の一覧に表示したいので、
その方法を教わりたいのです。
お世話になります。
入室された時点と退室された時間を管理するテーブルAがあります。
(入室された時に入室日と入室時間が入ります。退室する時に退室日と退出時間が入ります。)
そこで、テーブルAで、入室日と入室時間 > 退出日と退出時間 のデータを抽出したものを
レイアウト上にデータを一覧表示したいのですが、
どのようにしてデータを抽出するのか分かりません。
よろしくお願いします。
レイアウトを開いた瞬間に抽出した結果の一覧が表示されるようにしたいです。
【データA】
氏名
入室日
入室時間
退室日
退室時間
チポさん、旅人さん、Shiさん ありがとうございました。
サンプルのFMを作成していただきまして、十分理解できました。大変助かりました。
リレーション、入力用のテーブルの必要性、スクリプトの関数など、意図しているものが全て理解できました。
皆様、ありがとうございました。
チボさん
引き続き、ありがとうございます。
FMの参考資料などを見ますと、アクセス権で設定するようなことは書かれていたのですが、「スクリプト」を活用した構築をできるだけ行いたいと思っています。(わがままですみません)
重複すると思いますが実際のFMで設定しています状況を記述します。
■テーブル
◆職員パス情報テーブル・・・・・・これは、職員番号とパスワードを設定しているレコードが複数あります。
◆企業情報テーブル・・・・・・今回は、中身は何でもいいものです。
◆G_職員パス・・・・・・・前回のレスで教わった事から、グローバル用にテーブルを作成しました。(このテーブルを使用した画面で、職員番号とパスワードの入力チェック画面に使用しようと考えました。
ここでの「職員番号」「パスワード」ではテーブルの項目の”オプション”でグローバルを設定しました。
■レイアウト名【G_職員パス】
・職員番号
・パスワード
・実行ボタン
※実行ボタン押下で「スクリプト」が実行されるようにしました。
そのスクリプトが以下の通りですが、結局、エラーメッセージ1となってしまう状況です。
Get(対象レコード数)がいつも 0件なんです。
◆以下はスクリプトの内容を記載しました
エラー処理[オン]
変数を設定[$search;値:G_職員パス::職員番号]
検索モードに切替え[一時停止:オフ]
フィールド設定[職員パス情報::職員番号;"==" & $search]
カスタムダイアログを表示["G_職員番号の$searchは?";$search]
検索実行[]
if [Get(対象レコード数)=0]
カスタムダイアログを表示["エラーメッセージ1";"職員番号が違います(G_職員番号=)" & $search & Get ( 対象レコード数 )]
Else
変数を設定[$search1;値:G_職員パス::パスワード]
フィールド設定[職員パス情報::パスワード;"==" & $search1]
検索実行[]
if [Get(対象レコード数)=0]
カスタムダイアログを表示["エラーメッセージ2";"パスワードが違います"]
Else
レイアウト切り替え[企業情報(企業情報)]
End If
End If
旅人様
ありがとうございます。
次の画面とは、最初に開いた画面(レイアウト)から詳細な情報を表示する画面に移行するという意味で、2つのテーブルがあります。
2つめの画面に移行する時の条件として、最初の画面で、職員番号とパスワードがテーブルのレコードに存在していることが条件と考えています。(特定の人しか情報を見られたくないため)
具体的に仕様を記載します。
【テーブル名】
◆職員パス情報テーブル:職員番号とパスワードの項目をもったレコードが複数件あります。(職員番号とパスワードは一意です)
◆企業情報テーブル:企業の住所録情報の全件一覧が開きます。(ここではどのようなテーブルでもいいのですが・・・)
【最初に表示しようとする画面】
画面に入力する項目:
① 職員番号を入力します。
② パスワードを入力します。
③ 実行ボタンを押下します。
要件
1)画面には「職員番号」と「パスワード」を入力する項目と「実行ボタン」が存在します。
2)画面の「職員番号」と「パスワード」の項目は、初期値として空白です。
3)画面には「職員番号」と「パスワード」を入力してもらい、「職員パス情報テーブル」のレコードに存在していたら正常検索とし、次の画面の企業情報一覧が開く画面を展開したい。
「職員パス情報テーブル」のレコードが存在しない場合は、画面はそのままで、再入力するようにする。
■画面に入力された値をテーブルのレコードに存在している場合だけ、正常検索として次の画面に移行したいのです。
まったくの素人です。
以下の仕様を可能にするにはどうのような流れを設定するのでしょうか?
■画面1:最初の画面内にある項目に入力された職員番号に対して、テーブル内にある職員番号とマッチしたら場合に限り、次の画面に展開するようにしたい。
ここからどのような手順で構築するのでしょうか?
①:最初の画面に自由に入れられる職員番号入力項目を作りたい。
→どのように項目を作るのか?
②:①で入力された値が、テーブル名「T_職員情報」の職員番号と比較する。
→初期画面の入力された項目と、T_職員情報の職員番号と比較するのか?
ACCESSを知っているため、レイアウトとテーブルの関係がいまいち理解できていない状況です。
よろしくお願いします。
何か、サンプルとなるものがあると大変助かります。
チボさんありがとうございます。
レイアウト画面上に任意の値を入れた物が、テーブルにあった場合に、次画面に展開するようにしたいのです。
テーブル名:「T-職員パス情報」
職員番号 (テキスト)
パスワード(テキスト)
G_職員番号(テキスト)
G_パスワード(テキスト)
上記の職員番号とパスワードは3件のデータを入力していました。
レイアウトに入力してもらう職員番号とパスワードの項目として、G_職員番号とG_パスワードの項目をフィールドピッカーで追加した項目し、レイアウトに張り付けました。
その、G_職員番号とG_パスワードに入力された値を、実行ボタンでスクリプトにて
T-職員パス情報の職員番号とパスワードがイコールだったら次の画面を展開しようとしたいのです。
上記の手順で考え方が間違っているのでしょうか?
画面に入力された「職員番号」と「パスワード」が、
テーブルにある「T_職員番号」と「T_パスワード」にマッチしたら、
新たなレイアウトに切り替える事をしたいのですがうまくいかず。
【行った手順】
①新期レイアウトから”レコードを表示”では何もレイアウトを作成。
②フィールドピッカーを開いても、空の状態です。
③非連結テーブルをレイアウト上に「職員番号とパスワード」の項目を作成。
④ボタンを作成し、スクリプトによってテーブルの「T_職員番号とT_パスワード」のレコードがあれば、新たな画面に展開する。
としたかったのですが、
いざ、非連結テーブルの職員番号をクリックすると、「必要なテーブルが見つからないため、この操作は実行できません。」と、エラーになります。
まったくの初心者ですが、初期画面でパスワードや職員番号がテーブルに有れば、
次の画面に行けるようにする仕組みを教えて欲しいです。
Pages: 1
[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 620.15 KiB (Peak: 657.19 KiB) ]