初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2018-07-13 10:58:33

yamato17
Member

keisannsikinituite

お世話になっております。
計算式についてわからないことがあるので、ご質問させていただきました。

Win10 FM15
機器の貸出返却テーブルを作成しており、管理番号、貸出場所、貸出日、返却日、部署(貸出時)、部署(返却時)、状態(返却日が空欄の場合は計算フィールドで貸出中を表示それ以外は返却済みを表示)のフィールド作成し情報を入力しています。
貸出時に新規レコードを作成し返却時にそのレコードに時間などの情報を入力しています。


返却時時はレイアウトにスクリプトトリガ(on recordload)で検索モードに移行し管理番号フィールドのスクリプトトリガ(OnObjectExit)で以下のスクリプト検索しています。
1.検索実行[]←管理番号かつ“貸出中”で検索をする条件がわからなかったので条件はなしです。
2.フィールド設定[返却日フィールド]
計算式get(タイムスタンプ)←空欄以外は何もしないという計算式にしたいです。
3.フィールド設定[部署(返却時)]
計算式 Case ( 貸出場所 = "5 F" ; "5 Fスタッフ" ;
貸出場所= "事務" ; "事務スタッフ" ;
貸出場所= "7F" ; "7 Fスタッフ" ;
貸出場所= "8 F" ; "8 Fスタッフ" ;
貸出場所= "9F" ; "9Fスタッフ" ; )

わからないことですが
検索実行する際に管理番号かつ“貸出中”で検索をする方法と
また返却日がタイムスタンプにしているため過去のレコード(履歴)を検索し場合にも入力されてしまうため、返却日フィールドが空欄のときのみタイムスタンプを入力できるようにしたいです。過去の質問ログを拝見いたしましたが空欄以外は何もしないという計算式分かりませんでした。
また、返却者名が入力される場合とされない場合(上手く機能しない)があり原因が分からず、困っています。
自分の考えでは貸出場所が検索される前だからかなと思いましたが、レコードによっては入力される場合もあるので違っているかもしれません。

現状、初心者ながら最大限考えた方法がこの流れでしたが、より良い運用方法などあれば
アドバイスをいただけると幸いです。

長文失礼しました。

Offline

#2 2018-07-13 11:51:00

チポ
Member

Re: keisannsikinituite

> 管理番号かつ“貸出中”で検索
一つの検索条件で
管理番号フィールドにその検索値
状態フィールドに「貸出中」
を入力して検索します。

> 空欄以外は何もしないという計算式
  Case ( IsEmpty ( 返却日フィールド ) ; Get ( タイムスタンプ ) ; 返却日フィールド )
でいいでしょう、意味を考えてください。

> 返却時時はレイアウトにスクリプトトリガ(on recordload)で検索モードに移行し
これではレコードをブラウズするたびに検索モードになりませんか?

> 返却者名が入力される場合とされない場合
返却者名の説明が全くありませんヨ


また、
> Case ( 貸出場所 = "5 F" ; "5 Fスタッフ" ;
> 貸出場所= "事務" ; "事務スタッフ" ;
> 貸出場所= "7F" ; "7 Fスタッフ" ;
> 貸出場所= "8 F" ; "8 Fスタッフ" ;
> 貸出場所= "9F" ; "9Fスタッフ" ; )

これは、
  貸出場所 & "スタッフ"
で済みそうですが。。

Offline

#3 2018-07-13 12:56:13

yamato17
Member

Re: keisannsikinituite

チポ様
ご返答ありがとうございます。
管理番号かつ“貸出中”での検索は管理番号フィールドのスクリプトトリガ(OnObjectExit)で
1.テキストを挿入[状態フィールド;”貸出中”]
2.検索実行[]
3.フィールド設定[返却日]
計算式 Case ( IsEmpty ( 返却日フィールド ) ; Get ( タイムスタンプ ) ; 返却日フィールド )
4.フィールド設定[返却者名]
計算式 貸出場所 & "スタッフ" ←この方法は知りませんでした。参考になました
という形で、管理番号を入れることで検索し情報は入力されるようになりました。
また、返却者名は貸した場所のスタッフが返しに来ることが圧倒的に多いため、計算式により入力していますが、
仮にも違う場所のスタッフが返却した場合はドロップダウンリストにて変更をかけるようにしました。


内容が間違っていました。失礼しました
返却時時はレイアウトにスクリプトトリガ(on recordload)で検索モードはなく以下の内容で組んでおりました。

1.レコードのソート[ダイアログなし 貸出日(昇順) ]
2.レコード/検索条件/ページ移動[最後の]

という設定しその検索した管理番号の過去の履歴を編集されないように固定する方法しか思いつきませんでした。

検索モードへの移行は開始画面のレイアウトを作成し貸し出しと返却ボタンを作成しそこから飛ぶようにしていました。

Offline

#4 2018-07-13 13:44:46

チポ
Member

Re: keisannsikinituite

> 1.レコードのソート[ダイアログなし 貸出日(昇順) ]
> 2.レコード/検索条件/ページ移動[最後の]

これでは見づらいのでは?

返却済みのレコードはとりあえず必要ないのでしょう?
とすれば、それらは常に対象外にしておけばいいのでは。
現状からは検索で対象外にして、
以後の運用では、返却済みになったらトリガで対象外にする。

貸出機器がどのくらいあるのかわかりませんが、
数十程度までなら管理番号でソート・一覧にしておけば、
そのレコードを選ぶのに検索も不要になるのでは。

Offline

#5 2018-07-13 16:04:13

Shin
Member

Re: keisannsikinituite

機器に、管理番号をバーコードで貼ってあるのでしたら、それをリーダーで読み取り、その番号で返却が空欄のものを抽出するのがいいのでは。
最終部署も、3F だけでいいのでは。

Offline

#6 2018-07-14 17:29:38

yamato17
Member

Re: keisannsikinituite

チポ様、shin様ご回答ありがとうございます。
アドバイスの通り作成してみます。

Offline

#7 2018-07-18 10:19:35

yamato17
Member

Re: keisannsikinituite

お世話になっております。
レコードを対象外にする際に検索時(フィールドトリガ)から対象外にした場合は予定通りに実行できたのですが、
間違って同じ機器を複数貸出登録してしまった場合に自動的に返却処理されてしまいます。
スクリプトは以下のように組みました。
管理番号フィールドのスクリプトトリガ(OnObjectExit)で
1.テキストを挿入[状態フィールド;”貸出中”]
2.検索実行[]
3.フィールド設定[返却日]
計算式 Case ( IsEmpty ( 返却日フィールド ) ; Get ( タイムスタンプ ) ; 返却日フィールド )
4.フィールド設定[返却者名]
計算式 貸出場所 & "スタッフ"
5.複数のレコードを対象外に[ダイアログあり;オフ;状態フィールド=“返却済み”]

私の考えでは返却済みのレコードを一度対象外にしたあと貸出中のレコードの中から管理番号で検索をしたかったのですが、
上記のスクリプトで1番と5番を逆にした場合上手く検索が実行されませんでした。そこがいまいち理解が出来ず考えてます。

また、レイアウトにスクリプトトリガ(on recordload)で使用していたスクリプトは中止することで実行できました。

1.レコードのソート[ダイアログなし 貸出日(昇順) ]
2.レコード/検索条件/ページ移動[最後の]

Shin様からのアドバイスですが、
初心者故に知識と技術がなく、検索条件で番号でかつ空欄を検索する場合、検索実行[記憶する]に空欄で検索がかかると思いましたが
うまく実行されませんでした。もう少し調べてみることにします。

Offline

#8 2018-07-18 12:07:18

チポ
Member

Re: keisannsikinituite

何をお尋ねなのかよく分かりませんが、、

> 間違って同じ機器を複数貸出登録してしまった場合に自動的に返却処理されてしまいます
これも理解できていませんが、
貸出機器の入力は手打ちされているのでしょうか?

例えば、
貸出中以外の機器だけをポータルで表示し、それをクリックで入力。
とかすればダブルことはなくなりますよね。


貸出機器の数はどのくらいあるのでしょうか?
その数によっては考え方も変わってくるのでは。。

Offline

#9 2018-07-18 13:16:57

yamato17
Member

Re: keisannsikinituite

内容が分かりづらくて申し訳ないです。

貸出機器は全部で200台あります。(種類は10種類ぐらい)
入力方法はバーコードまたはキーボードで入力しています。
PC操作の苦手なスタッフにはスキャナーを使用するように促しております。
借りに来るスタッフはPC操作が苦手な方が多く、多少は操作できるスタッフが立ち合い出来ればよいのですが、
状況によっては苦手なスタッフが入力することもございます。



その対応策として、本来であれば貸し出している機器番号(管理番号)で新規レコードを作成できないようにするという対応や
返却時に他のレコードを編集されないように強制的に該当するレコードのみを表示させるようなスクリプトを作成する予定でした。

現段階で聞きたいこととして
貸出時はメニュー画面より貸出ボタン(スクリプト)から
新規レコードを作成し
現在のレコードのみを表示といったようにして重複を避けれたらと考えております。

関連レコードへ移動かと思いトライしてみましたが思うような結果が得られませんでした。


貸出ボタンのスクリプトです。
1.レイアウト切り替え[貸出時入力画面]
2.新規レコード/検索条件
3.テキストを挿入[選択;状態フィールド;「貸し出し中」]
4.フィールドへ移動[管理番号フィールド]

Offline

#10 2018-07-18 14:39:35

チポ
Member

Re: keisannsikinituite

バーコードリーダーでの入力ならダブルことはないですよね。

手入力もあるのなら、
  1 新規レコード作成
  2 管理番号入力
  3 ダブりがあるか判定
      あれば2に戻る
  4 他の入力

この手順でいいのでは。


> 3.テキストを挿入[選択;状態フィールド;「貸し出し中」]
最初の質問ではこのフィールドは計算フィールドとなっていましたが、
変更したのでしょうか?

計算フィールドがお勧めです。

Offline

#11 2018-07-19 09:10:56

yamato17
Member

Re: keisannsikinituite

チポ様
アドバイス通りにやってみましたところ思うような形になりました。
状態フィールドはテキストで計算式を組んでいましたが、計算フィールドに変更しました。
助けていただいてありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 549.75 KiB (Peak: 570.29 KiB) ]