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

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

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

You are not logged in.

Announcement

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


#1 2018-05-07 16:22:44

中田
Member

閲覧ログの取り方

いつもお世話になっております。
現在FileMaker14Adを使用しております。

ボタンを押して帳票を開く形にしています。
その際帳票毎に何度開いたかログを取りたいのですが帳票の数だけフィールドを作りたくありません。
1つのテキストフィールドで改行しながら格納したいのですがその際同じ項目は積算していく方法はありますでしょうか?
スクリプト引数で帳票名を取り改行しながら格納していくところまでは出来たのですが、同じ帳票名があった場合は帳票名の後に空白、数字としその数字を積算したもので置き換えたいです。
日報 1
月報 2
とあったとして日報を開いたら
日報 2
月報 2
となるようにしたいのですが、方法ありましたら教えて頂けますでしょうか?
宜しくお願い致します。

Offline

#2 2018-05-07 16:32:53

Shin
Member

Re: 閲覧ログの取り方

その用途はなんでしょう。
私ならば、いつ(タイムスタンプ)、誰が(アカウント名)、どの帳票を開いたか、を一レコードにして別のテーブルに記録していきます。それを集計すれば簡単です。ファイルサイズを気にする程の大きさにはなりませんよ。

Offline

#3 2018-05-07 17:56:48

Shin
Member

Re: 閲覧ログの取り方

次の式で、フィールド設定していけばいいでしょうが。文字列の重複には、完全には対応していません。(例えば、日報と営業日報)

Let (
[
 t = テーブル::テキスト  ; 
 t0 = t  & ¶ ;
 t1 = Get ( スクリプト引数 ) & Char ( 9 ) ;
 p0 = Position ( t0 ; t1 ; 1 ; 1 ) ;
 pos0 = p0 + Length ( t1 ) ;
 pos1 = Position ( t0 ; ¶ ; pos0 ; 1 )
] ;
 Case (
   p0 = 0 ; List ( t ; t1 & 1 ) ;
   Replace ( t ; pos0 ; pos1 - pos0 ; Middle ( t ; pos0 ; pos1 - pos0 ) + 1 )
 )
)

https://www.dropbox.com/s/ptdk8ykhpchd4 … 7.zip?dl=0

Last edited by Shin (2018-05-08 08:52:39)

Offline

#4 2018-05-07 20:18:38

中田
Member

Re: 閲覧ログの取り方

Shin様
いつもご教授下さり有り難うございます。
サンプルまで用意して頂き大変ありがたいです。
用途としましてはアバウトなのですが、実際必要ある帳票なのかなと、作ってる側の興味が大半です。
厳密に計ろうと言うより感覚的なものです。
なので出来るだけ単純、かつ簡単に見られればと思い、出来るだけテーブルやフィールドは増やしたくないと思いました。
興味が無くなれば消すようなものなので。

頂いたサンプル、計算式でなんとか出来そうです。
まだちゃんと理解は出来ていませんが学習したいと思います。

有り難うございました。

Offline

#5 2018-05-08 08:44:26

Shin
Member

Re: 閲覧ログの取り方

多数で共有しているファイルは、アクセスログを取って置いたほうがいいですよ。将来、必ず役に立ちます。

Offline

#6 2018-05-08 10:32:28

中田
Member

Re: 閲覧ログの取り方

Shin様、アドバイス有り難うございます。
今までちゃんと考えた事無かったのですが、確かにアクセスログあった方が良い気がしてきました。
一度仕組みから考えてみようと思います。
有り難うございました。

Offline

#7 2018-05-08 13:28:37

中田
Member

Re: 閲覧ログの取り方

Shin様のサンプルファイルを元にテーブルを作りしっかりしたアクセスログを取ろうして躓きました。
再度教えて頂けませんでしょうか?

出来るだけ汎用性の高いスクリプトを作りたくサンプルファイルと同じく
ウィンドウを開く
レイアウト変更
新規レコード
の流れにしようと思ったのですが、スクリプトのトリガをレイアウトのonlayoutenterにて実行しようとしたところ当たり前ですが、ループになってしまいました。

ボタンにスクリプトとなると既存のボタンスクリプト全てにサブスクリプトとして設定しなければならない、スクリプト引数も設定されているボタンがあるので分岐が必要、等があり出来ればレイアウトにトリガを設定したいと思っています。
また単純にレイアウト変更で良ければTOも追加せずに済むのですが、良い方法はありますでしょうか?

宜しくお願い致します。

Offline

#8 2018-05-08 14:09:36

qb_dp
Member

Re: 閲覧ログの取り方

Logを別ファイルにする例です。(過去記事引用)

$Title とか、$Log の部分を必要な情報に変更して下さい。

Logファイルを作成し、
スクリプトを追加。
スクリプト例:

スクリプト名:Add_Log($TimeStamp,$Title,$Log)
変数を設定 [$er; 値:Evaluate ( "Let ( [" & Get ( スクリプト引数 ) & "] ; 0 )" )]
If [ not IsEmpty ( $TimeStamp )]
新規レコード/検索条件
フィールド設定 [Logs::TimeStamp; $TimeStamp]
フィールド設定 [Logs::Title; $Title]
フィールド設定 [Logs::Log; $Log]
End If
フィールドへ移動 []

各ファイル(ログを取りたいファイル)の「外部データソース」に上記 Logファイル を追加。

任意のタイミングで以下のスクリプトを実行。
スクリプト実行 [「Add_log($TimeStamp,$Log)」 , ファイル: 「Logs」; 引数: "$TimeStamp=" & Quote ( Get ( タイムスタンプ ) ) &  ";$Log=" & Quote ( ".....")]

Offline

#9 2018-05-08 15:12:06

Shin
Member

Re: 閲覧ログの取り方

新規ウィンドウで、ウィンドウ名「log」をつけておき、
If ( Get ( ウィンドウ名 ) = "log" )
現在のスクリプトを終了[0]
else
レイアウト変更
新規レコード
end If
で、回避できます。

Offline

#10 2018-05-08 15:45:29

中田
Member

Re: 閲覧ログの取り方

qb_dp様
教えて下さり有り難うございます、大変勉強になります。
Shin様、再度教えて頂き有り難うございます。
なるほど!と思いました、本来自分で気付くべきところ何度も有り難うございました。

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 10 queries executed - Memory usage: 566.53 KiB (Peak: 571.78 KiB) ]