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

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

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

You are not logged in.

Announcement

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


#1 2023-01-08 12:01:42

koko009
Guest

web ビューアでjavascriptの計算を利用する方法について

いつもお世話になっております。web ビューアでjavascriptを使い計算させその結果を利用するためにweb ビューアのあるレイアウトを常に表示させないと出来ないと思いますが。mapやchartなら必要ですが計算機として使うには多少不便に思っていました。レイアウトの移動を繰り返すのも動きがぎこちなく無駄な処理時間が加わります。現状で、100万レコードから中央値、最頻値、分散を求めるJS文それぞれ作り走らせても私のPCでは概ね3秒以内に収まりますので。大体がFMのレコードから配列に渡す引数を作るのに時間を占め計算そのものはすこぶる短時間です。そこでこのレイアウトをバックグラウンドで利用するみたいな方法がないのかと思っていたところ下記のサイトを見つけましたが全く理解が出来ません。翻訳サイトのレベル以前に当方の問題があるは承知しております。そこでこのサイトで紹介されている方法が解決に結びつくかどうかご教授ください。
https://www.clickworks.eu/en/unleashing … plication/
別にのこサイトにかかわらず他に良い方法があればそれはそれででかまいませんのでお教えください。

#2 2023-01-08 16:19:15

himadanee
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

ざっと読んだだけで試してないですが、要するに「専用のファイルを作っておいて、非表示で開く」というテクニックのようです。
ウィンドウが非表示でもWebビューアが表示範囲にあれば実行されるらしいですね。

他で使わないような計算なら、非表示のウィンドウを開くだけの方が簡単な気がします。

#3 2023-01-08 17:49:32

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

回答有り難うございます。
>非表示のウィンドウを開く
を使ったことがないので調べて出来るかどうか試してみます。

#4 2023-01-09 14:22:25

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

やはりよく分からない。「非表示のウィンドウを開く」プロセスがよく分からない。また、ファイルを計算機能だけのものとデータの2本立てにしてデータの遣り取りも引数を使う方法で試したが、計算ファイルを最初は非表示にしておいても計算を走らせるスクリプトをデータ側から実行すれば自動的に前面で開いてしまいそれを閉じるステップが加わることとなってしまった。サイトの方法とは別物だがなんとか非表示で出来ないかと思ったが失敗に終わった。

#5 2023-01-11 11:50:24

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

バックグラウンド的使い方には進展はないが、ファイル移動によるちらつきはあるが、分離ファイルの方が100万レコードから一番遅い中央値の計算に要した時間が0.8秒前後となった。一つのファイルにデータ、js文、web ビューアの3つのテーブルで構成したより、js文、web ビューアで構成された計算ファイルとデータ、結果表示で構成したファイルを外部データソースとして繋げた方速いなんて理解できない。

#6 2023-01-11 17:48:05

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

勘違いしていた。体感的にそんなに速くないと思ったのでよく考えてみたらタイムを測定開始する前にボタンの引数で配列用のデータを計算していたのでその分加算しないと全然違う値になる。また余計な投稿をしてしまい申し訳ありません。
ちょっとタイムの測定方法が分からないが、かなり前に配列を作った時確か2から3秒強かかっていたのでそれが最低でも加算される・・・

#7 2023-01-15 09:22:54

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

ますます泥沼に・・・今のところwebビューアのあるレイアウトを使うと非表示は出来ないがデータファイルを非表示にしたまま計算処理は出来る(ちらつくので本当の意味でのバックグラウンドとは違うような・・・)
1.最初にファイルを作り計測したところ概ね3秒以内だったものが新しくウィンドウの動き等を加えたスクリプト等をを試したりしていたら5秒掛かるようになった。PCのクリーンアップ等で一時ファイルを消したときは多少改善するがなんかますます悪くなる。理由が全く分からない・・
2.フィールドをテキストから数字に変えたら索引がないせいか0.8秒強掛かる。
3.中央値の計測で今回一番速いのは、計算結果をweb ビューアと同じテーブルにし計算ファイルからスクリプトを動かす方法がちらつきもデータファイルが非表示のためか少なく4.82秒、次が同じファイルの中で計算をする方法が4.88秒、最後が分離ファイルでデータ側にスクリプト開始と計算結果を表示させる方法が5.30秒となった。なお、フィールドタイプは全て数字です。

#8 2023-01-15 10:38:24

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

また間違ってしまった

同じファイルの中で計算をする方法が4.88秒、

としたがこれはフィールドタイプがテキストの場合の測定値で数値の場合は5.69秒掛かっていた。
この投稿前にも動かしてみたら3秒台後半が出たり5秒台が出たり前回の投稿時とはまた違った状態が引数を計算式
"[" &  ExecuteSQL ( "select \"item\" from \"data\" ";"";",") & "]"
で配列としいるだけなのだが、この計算が処理時間にどんな影響を与えているのか皆目見当がつかない。

#9 2023-01-16 15:40:55

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

前に

ファイルを計算機能だけのものとデータの2本立てにしてデータの遣り取りも引数を使う方法で試したが、計算ファイルを最初は非表示にしておいても計算を走らせるスクリプトをデータ側から実行すれば自動的に前面で開いてしまいそれを閉じるステップが加わることとなってしまった。

今のところwebビューアのあるレイアウトを使うと非表示は出来ないが

としていたが、スクリプトステップに問題があった。以前の癖で前の2ステップを使っていたが「ウインドウ内容の再表示」だけで今回のファイルの非表示状態を保つには有効でした。・・但し描画の問題までは解決できるかどうか分からないが
//Web ビューアの設定 [ オブジェクト名: "web"; 処理: リセット ]
// スクリプト一時停止/続行 [ 間隔(秒): .001 ]
ウインドウ内容の再表示
Web ビューアで JavaScript を実行 [ オブジェクト名: "web"; 関数名: "getStats"; 引数 1: GetValue ( Get ( スクリプト引数 ) ; 2) ]
現在のスクリプト終了 [ ]
でも処理時間関してはあまり効果はありませんでしたが取りあえずファイルの非表示問題への報告まで。

#10 2023-02-07 09:11:16

koko009
Guest

Re: web ビューアでjavascriptの計算を利用する方法について

今回バージョンが19.6.3にアップしたのを機にアンイストールして再度インストールし直し試してみました。
最初と同じくデータのフィールドタイプをテキストにして下記の中央値を求めるための「Web ビューアで JavaScript を実行 」用jsで試みると同一ファイルの場合(但し最初に作ったファイルのため問題があるかも)ほぼ3.5秒 分離ファイル(計算ファイルに結果表示)の場合2.8秒
data:text/html,
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset=utf-8 >
<title>Stats_1</title>
</head>
<body>
<script>
function getStats(array) {
const arr =JSON.parse(array);
const m = (arr.length / 2) | 0;
const arr2 = arr.sort(
  function(x, y) {
  return x - y;
});
var median;
if (arr2.length % 2) {
median = arr2[m];
}else{
   median = (arr2[m - 1] + arr2[m] ) / 2;
}
    FileMaker.PerformScript("script01",median)       
}
</script>
</body>
</html>
なお、「Web ビューアで JavaScript を実行 」より「Web ビューアの設定(・・URL・・) 」で変数で配列を渡したjsを使うスクリプトの方が処理速度が短い結果が・・・100万レコードより1万レコード方が大きく違う
多分、ファイルの起動問題と同じくインストール当初だけの結果だけだと思うので意味のない報告ですが・・・

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 584.98 KiB (Peak: 601.89 KiB) ]