みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
現在FileMaker14Adを使用しております。
ボタンを押して帳票を開く形にしています。
その際帳票毎に何度開いたかログを取りたいのですが帳票の数だけフィールドを作りたくありません。
1つのテキストフィールドで改行しながら格納したいのですがその際同じ項目は積算していく方法はありますでしょうか?
スクリプト引数で帳票名を取り改行しながら格納していくところまでは出来たのですが、同じ帳票名があった場合は帳票名の後に空白、数字としその数字を積算したもので置き換えたいです。
日報 1
月報 2
とあったとして日報を開いたら
日報 2
月報 2
となるようにしたいのですが、方法ありましたら教えて頂けますでしょうか?
宜しくお願い致します。
Offline
その用途はなんでしょう。
私ならば、いつ(タイムスタンプ)、誰が(アカウント名)、どの帳票を開いたか、を一レコードにして別のテーブルに記録していきます。それを集計すれば簡単です。ファイルサイズを気にする程の大きさにはなりませんよ。
Offline
次の式で、フィールド設定していけばいいでしょうが。文字列の重複には、完全には対応していません。(例えば、日報と営業日報)
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
Shin様
いつもご教授下さり有り難うございます。
サンプルまで用意して頂き大変ありがたいです。
用途としましてはアバウトなのですが、実際必要ある帳票なのかなと、作ってる側の興味が大半です。
厳密に計ろうと言うより感覚的なものです。
なので出来るだけ単純、かつ簡単に見られればと思い、出来るだけテーブルやフィールドは増やしたくないと思いました。
興味が無くなれば消すようなものなので。
頂いたサンプル、計算式でなんとか出来そうです。
まだちゃんと理解は出来ていませんが学習したいと思います。
有り難うございました。
Offline
多数で共有しているファイルは、アクセスログを取って置いたほうがいいですよ。将来、必ず役に立ちます。
Offline
Shin様、アドバイス有り難うございます。
今までちゃんと考えた事無かったのですが、確かにアクセスログあった方が良い気がしてきました。
一度仕組みから考えてみようと思います。
有り難うございました。
Offline
Shin様のサンプルファイルを元にテーブルを作りしっかりしたアクセスログを取ろうして躓きました。
再度教えて頂けませんでしょうか?
出来るだけ汎用性の高いスクリプトを作りたくサンプルファイルと同じく
ウィンドウを開く
レイアウト変更
新規レコード
の流れにしようと思ったのですが、スクリプトのトリガをレイアウトのonlayoutenterにて実行しようとしたところ当たり前ですが、ループになってしまいました。
ボタンにスクリプトとなると既存のボタンスクリプト全てにサブスクリプトとして設定しなければならない、スクリプト引数も設定されているボタンがあるので分岐が必要、等があり出来ればレイアウトにトリガを設定したいと思っています。
また単純にレイアウト変更で良ければTOも追加せずに済むのですが、良い方法はありますでしょうか?
宜しくお願い致します。
Offline
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
新規ウィンドウで、ウィンドウ名「log」をつけておき、
If ( Get ( ウィンドウ名 ) = "log" )
現在のスクリプトを終了[0]
else
レイアウト変更
新規レコード
end If
で、回避できます。
Offline
qb_dp様
教えて下さり有り難うございます、大変勉強になります。
Shin様、再度教えて頂き有り難うございます。
なるほど!と思いました、本来自分で気付くべきところ何度も有り難うございました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 566.58 KiB (Peak: 581.31 KiB) ]