みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
まったくの素人です。
以下の仕様を可能にするにはどうのような流れを設定するのでしょうか?
■画面1:最初の画面内にある項目に入力された職員番号に対して、テーブル内にある職員番号とマッチしたら場合に限り、次の画面に展開するようにしたい。
ここからどのような手順で構築するのでしょうか?
①:最初の画面に自由に入れられる職員番号入力項目を作りたい。
→どのように項目を作るのか?
②:①で入力された値が、テーブル名「T_職員情報」の職員番号と比較する。
→初期画面の入力された項目と、T_職員情報の職員番号と比較するのか?
ACCESSを知っているため、レイアウトとテーブルの関係がいまいち理解できていない状況です。
よろしくお願いします。
何か、サンプルとなるものがあると大変助かります。
Offline
>次の画面に展開するようにしたい。
これはどういう意味でしょう。
テーブルは二つあるのですか。
Offline
旅人様
ありがとうございます。
次の画面とは、最初に開いた画面(レイアウト)から詳細な情報を表示する画面に移行するという意味で、2つのテーブルがあります。
2つめの画面に移行する時の条件として、最初の画面で、職員番号とパスワードがテーブルのレコードに存在していることが条件と考えています。(特定の人しか情報を見られたくないため)
具体的に仕様を記載します。
【テーブル名】
◆職員パス情報テーブル:職員番号とパスワードの項目をもったレコードが複数件あります。(職員番号とパスワードは一意です)
◆企業情報テーブル:企業の住所録情報の全件一覧が開きます。(ここではどのようなテーブルでもいいのですが・・・)
【最初に表示しようとする画面】
画面に入力する項目:
① 職員番号を入力します。
② パスワードを入力します。
③ 実行ボタンを押下します。
要件
1)画面には「職員番号」と「パスワード」を入力する項目と「実行ボタン」が存在します。
2)画面の「職員番号」と「パスワード」の項目は、初期値として空白です。
3)画面には「職員番号」と「パスワード」を入力してもらい、「職員パス情報テーブル」のレコードに存在していたら正常検索とし、次の画面の企業情報一覧が開く画面を展開したい。
「職員パス情報テーブル」のレコードが存在しない場合は、画面はそのままで、再入力するようにする。
■画面に入力された値をテーブルのレコードに存在している場合だけ、正常検索として次の画面に移行したいのです。
Offline
入力するテーブルにグローバルフィールドで
職員番号とパスワードのフィールドを作って
それぞれを職員パス情報テーブルのフィールドとリレーションすると
合致した物があるかどうかは=Count(職員パス情報テーブル::職員番号)
で出ます。
でも合致する物が無くてもレイアウト切り替えで普通に企業情報テーブル
を表示できるわけで、アクセス権の設定が必要かと。
Offline
前スレでは解決できませんでしたか?
結局同じ回答になっちゃいますね。
リレーションが分かりませんか?
リレーション、FMでは避けて通れないでしょうから、がんばってクリアしないと。。
レイアウト移動の制限は、レイアウトのリストに表示しなければ選択できませんから、
アクセス権が必須とはいえないでしょう。
しかし、
今回の質問に関してはアクセス権の設定だけでも良さそうですが。。
Offline
チボさん
引き続き、ありがとうございます。
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
Last edited by 初心者太郎 (2016-08-25 14:36:00)
Offline
Offline
スクリプトでのアクセス制限は、私も作らされた事がありますが、非常に熟練した開発者向けのテクニックで、相当綿密に計画して作成しても、あちこちで抜けが出たり、過剰制限が出たり、相当面倒な物です。また、後のメンテナンスは地獄の様な作業が待っていました。ドキュメントはしっかり作っていたのですが、それを見ても同じ動きを再現するのに、同じだけの時間がかかりました。
アクセス権を使って作成するのと比べると、10倍程度の時間がかかったと思います。
早めに進め方を再考される事をお勧めします。
Offline
チポさん、旅人さん、Shiさん ありがとうございました。
サンプルのFMを作成していただきまして、十分理解できました。大変助かりました。
リレーション、入力用のテーブルの必要性、スクリプトの関数など、意図しているものが全て理解できました。
皆様、ありがとうございました。
Offline
Pages: 1
[ Generated in 0.012 seconds, 7 queries executed - Memory usage: 544.8 KiB (Peak: 565.7 KiB) ]