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

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

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

You are not logged in.

Announcement

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


#1 Re: 初心者のFileMaker pro Q&A » 一か月分まとめて作成 » 2024-02-08 12:38:11

mic

こんなスクリプトを使ったりしてます。

■テーブル
・TableA
   gDate    日付、グローバル
   date    日付

■リレーション
   TableA::gDate = TableA2::date (自己連結)

■スクリプト
  スクリプト名: 日次レコードを作成

変数を設定 [$date; 値:Get(スクリプト引数)]
変数を設定 [$end; 値:Date(Month($date)+1;0;Year($date))]

レイアウト切り替え [「レイアウトA」(TableA); アニメーション:なし]

変数を設定 [$d; 値:Date(Month($date);1;Year($date))]
Loop
    フィールド設定 [TableA::gDate; $d]
    If [IsEmpty(TableA2::date)]
        新規レコード/検索条件
        フィールド設定 [TableA::date; $d]
    End If
    Exit Loop If [Let($d=$d+1;$end<$d)]
End Loop

レイアウト切り替え [元のレイアウト; アニメーション:なし]

■使い方
適当な場所で以下のように呼び出します。

スクリプト実行 [指定:一覧から;「日次レコードを作成」; 引数:"2024/01/01"]

日付部分は無視されますが、日付として認識される値を渡す必要があります。
渡した日付を含む月の、1~末日分のレコードを重複しないよう作成します。

チポさんの指摘から、分かり難い部分に追記しました。

#3 Re: 初心者のFileMaker pro Q&A » 検索窓を設置したい » 2023-11-26 12:39:12

mic

例えばこのようなものを作りたいのだと思いますがどうでしょう。

※検索対象にする普通のデータテーブル
テーブル名:人物
フィールド:氏、名、氏名、性別、生年、誕生日(フィールドタイプはテキストや日付など)

※検索条件入力用
テーブル名:検索用
フィールド:氏、名、氏名、性別、生年、誕生日(フィールドタイプは全てテキストのグローバルフィールド)


レイアウト:人物一覧
ヘッダ部設置フィールド:検索用::氏、検索用::名、検索用::氏名、検索用::性別、検索用::生年、検索用::誕生日
ボディ部設置フィールド:人物::氏、人物::名、人物::氏名、人物::性別、人物::生年、人物::誕生日
※ヘッダ部設置フィールドには、スクリプトトリガ「OnObjectSave」にスクリプト「人物検索」を設定

スクリプト:人物検索

検索モードに切り替え[一時停止:オフ]
if[1<>Get(ウインドウモード)]
    検索モードに切り替え[一時停止:オフ]
End If
if[1=Get(ウインドウモード)]
    フィールド設定[人物::氏; 検索用::氏]
    フィールド設定[人物::名; 検索用::名]
    フィールド設定[人物::氏名; 検索用::氏名]
    フィールド設定[人物::性別; 検索用::性別]
    フィールド設定[人物::生年; 検索用::生年]
    フィールド設定[人物::誕生日; 検索用::誕生日]
    検索実行[]
End If

※Get(ウインドウモード)でやってるのは特定の状況でデータが上書きされるのを防ぐおまじないです


多分やりたいのはこういうことではないでしょうか。
今回は検索用の入力欄を別のテーブルにしていますが、「人物」テーブルに検索用のグローバルフィールドを作っても問題ありません。

#4 Re: 初心者のFileMaker pro Q&A » 透過オブジェクトをレイアウトにペーストすると透過にならない » 2023-10-05 22:06:16

mic

試しにPNGの透過画像をpaint.netで開き、全コピーしてFMに貼り付けると背景が白くなりますね。
エクスプローラーからファイルを直接FMにドラッグすると、透過を維持した画像がドロップされます。

アプリで透過画像をコピーした時のクリップボードを見てみると表面上は単なるBITMAPで保持されているようなので、クリップボードとFMのペースト機能の都合ではないでしょうか。

#5 Re: 初心者のFileMaker pro Q&A » レイアウトをウィンドウサイズに合わせる方法 » 2023-09-19 16:06:48

mic

スライドコントロールの左右をアンカーしておいて、スライドのパネル上にフィールドを設置すれば何となく近いことが出来るような気はします。
スクリーンのサイズによっては絶対表示されないフィールドが出てきますし、パネル切替で対応するにしてもメンテナンスが面倒なのであまりおすすめ出来ませんが。

#6 Re: 初心者のFileMaker pro Q&A » ポイント管理についてアドバイスいただきたいです。 » 2023-09-07 19:36:51

mic

顧客テーブルの g_有効 と繋げて絞り込むのではなく、ポイントテーブルで現在有効なポイントを算出してからそれを合計した方がいいかもしれません。

・顧客ポイントテーブル
ポイント消費 (ポイント消費時、「ポイント増」のレコードに対して有効期限の古い順に消費量を記録)
有効ポイント =if(判定 ; ポイント増 - ポイント消費 ; 0)

この状態で顧客テーブルとポイントテーブルを顧客番号で繋ぐと、ポイント増合計、ポイント減合計、ポイント消費合計、有効ポイント合計を全てsumで取得出来ます。
チポさんの言うようにポイント消費時に複数のポイント増レコードに対してポイント消費を記録しなければならない場合もありますが、有効期限に間に合わず無効になってしまったポイントも自動で弾けるので各ポイント数自体は扱いやすくなると思います。

#7 Re: 初心者のFileMaker pro Q&A » オブジェクトフィールドのカウントについて » 2023-08-31 23:45:38

mic

閲覧履歴テーブルを作ってカウントアップの代わりに履歴レコード作成するのも一つの手ですね。
ロックは問題にならないし、閲覧者や閲覧日時も取れますし。

#8 Re: 初心者のFileMaker pro Q&A » ExecuteSQL関数を計算フィールドの定義に用いる。参照先TO名・フィールド名の変更にも対応できるようにしたい。 » 2023-07-24 21:17:08

mic

SQL = "SELECT \"@@F1@@\" FROM \"@@TO@@\" WHERE \"@@F2@@\" = ?"
もしくは
  SQL = Substitute ( SQL ; [ "@@TO@@" ; Quote(TO) ] ; [ "@@F1@@" ; Quote(F1) ] ; [ "@@F2@@" ; Quote(F2) ]
としたらどうでしょう。
両方ではなくどちらかで。

#9 Re: 初心者のFileMaker pro Q&A » ツールバー非表示を再度表示させたい » 2023-07-24 17:47:23

mic

スクリプト名:ツールバー

If[Get(アカウントアクセス権セット名)="[Full Access]"]
	メニューバーの表示切り替え [ロック(L):オフ; 表示する]
	ツールバーの表示切り替え] [レコードの編集ツールバーを含める; 表示する]
End If

というスクリプトを作ってスクリプトメニューに表示するチェックをONにしておき、ワークスペースの上の方に置いておけばCTRL+1でスクリプト実行出来るので、隠れてしまった画面でCTRL+1 をして表示させてますね。

#10 Re: 初心者のFileMaker pro Q&A » while関数の処理速度について » 2023-07-24 17:35:21

mic

GetNthRecord関数はおそらくコールごとに通信が発生するので、レイテンシの影響が大きいのではありませんか?
Shinさんの言うようにListを使うか、ExecuteSQLで一括取得してからループ処理した方がよいのではないかと思います。

#11 Re: 初心者のFileMaker pro Q&A » レイアウトの編集で重なったオブジェクトの選択方法 » 2023-07-03 21:11:25

mic

3つ以上重なってるときは出来ませんが、ドラッグでまとめて選択した後に前面のオブジェクトを選択解除し、背面だけ選択されている状態になったら十字キーで移動することはありますね。

#12 Re: 初心者のFileMaker pro Q&A » ExecuteSQLを実行しても「?」としか表示されない » 2023-05-26 21:38:59

mic

一応参考までに、
データビューアの「監視」タブに式を追加してExecuteSQLを実行すると、エラーの時に「?」ではなくエラーの内容が表示されます。

#13 Re: 初心者のFileMaker pro Q&A » ログインした際に、アプリ版とウェブ版、どちらでログインしたか取得する » 2022-05-30 20:01:47

mic

解決になってますが、WebDirect は
  Get(システムプラットフォーム)=4
で判定できると思います。

#14 Re: 初心者のFileMaker pro Q&A » リスト形式 リレーション項目の表示によるスクロール速度低下について » 2022-05-29 06:54:56

mic

テーブルAにBの最新レコードのIDを持たせ、それと連結したテーブルB’を一覧で表示してみてはどうでしょう。


■追加フィールド
テーブルA::最新所在地ID 計算タイプ(もしくは自動入力の計算値) if(テーブルA::更新日時;テーブルB::ID;Self)
 
  ※テーブルAの更新タイムスタンプを「更新日時」、テーブルBの主キーを「ID」と仮定

■リレーション
  テーブルA::最新所在地ID = テーブルB’::ID


これで一覧にテーブルBではなくテーブルB’のフィールドを設置します。
Aからみて1対1になるので早いと思います。

ただ更新タイムスタンプがトリガなので、ロックしただけで更新しなかったりレコード復帰された場合は更新されない可能性があります。
スケジュールやなにがしかのタイミングで テーブルA::最新所在地ID <> テーブルB’::ID のレコードを訂正する処理が必要です。

私が対応した案件では格段に一覧表示が早くなったのと、常時リアルタイムで最新を確認するわけではなかったため、この問題は訂正処理で許容出来ました。
許容出来ない場合はShinさんの案の方がいいですね。
レイアウトテーブルからみて連結先が1なのか多なのかが重要です。

#15 Re: 初心者のFileMaker pro Q&A » 文字の上部が少し欠けて表示されてしまいます » 2022-05-10 18:54:42

mic

無関係かもしれませんが、とりあえず単位を cm ではなく pt に変更してから調整してみてはどうでしょう。
cm で調整すると pt単位で小数点になることがあるようですが、小数点部分がどうなっているのか不思議に思います。

#16 Re: 初心者のFileMaker pro Q&A » ツールバーのレイアウト切替プルダウン » 2021-11-13 01:42:39

mic

レイアウトは全て「レイアウトメニューに表示させる」をオフにしておき、開発専用のドロップダウンを設置しておくのはどうでしょう。
完全アクセス限定の透明なレイアウト選択用ドロップダウンをほぼ全レイアウトの左上に設置して、自分ではそちらを使うようにしています。

ドロップダウンの設定は以下のような感じです。
・変数用テーブル「val」にフィールドを作成
  reflesh 数字
  layouts 計算 Evaluate("LayoutNames(Get(FileName))";reflesh)
  layoutSelector テキスト グローバル

・値一覧「レイアウトリスト」を作成
  フィールド値 val::layouts

・スクリプト「レイアウト選択」を作成
  レイアウト切り替え[val::layoutSelector; アニメーション:なし]

・レイアウトにフィールド「val::layoutSelector」を設置
  コントロールスタイル:ドロップダウンリスト or ポップアップメニュー
  値一覧:レイアウトリスト
  OnObjectModify:レイアウト選択
  次の場合にオブジェクトを隠す:Get(アカウントアクセス権セット名) <> "[Full Access]"
  塗りつぶし:単色 カラー:透明(塗りつぶし:なし だと若干扱いづらい)

レイアウトを追加したりレイアウト名を変更した時は、val::reflesh = not val::reflesh をしてレイアウトリストを更新します。

#17 Re: 初心者のFileMaker pro Q&A » ループ処理ですべてのグローバルフィールドをクリアにする » 2021-10-12 21:17:18

mic

一例として。

クリアしたいフィールドを配置したレイアウト(例:レイアウトX)を用意し以下のスクリプトを実行すると、配置されたフィールドに全て空白が設定されます。
配置してあれば、他のテーブルのフィールドもクリアされます。

エラー処理[オン]
レイアウト切り替え[「レイアウトX」(table);アニメーション:なし]
If[Get(最終エラー)]
	現在のスクリプト終了[テキスト結果:]
End If

変数を設定[$table; 値:Get(レイアウトテーブル名)]
変数を設定[$list; 値:FieldNames( Get(ファイル名); Get(レイアウト名))]


変数を設定[$max; 値:ValueCount( $list)]
変数を設定[$i; 値:0]
Loop
	Exit Loop If[Let( $i=$i+1; $max<$f)]
	変数を設定[$field; 値:GetValue( $list; $i)]
	変数を設定[$full; 値: If( Position( $field; "::"; 1; 1); ""; $table & "::") & $field]
	
	変数を設定[$tmp; 値:FieldRepetitions( Get(ファイル名); Get(レイアウト名); $full)]
	変数を設定[$rep; 値:GetAsNumber( GetValue( Substitute( $tmp; " "; ¶);1))]
	変数を設定[$r; 値:1]
	Loop
		フィールドを名前で設定[$full & "[" & $r & "]"; ""]
		Exit Loop If[Let( $r=$r+1; $rep < $r)]
	End Loop
End Loop
レイアウト切り替え[元のレイアウト;アニメーション:なし]

フィールドを設置する手間はありますが、スクリプトで設定するよりは多少マシかなと。

#18 Re: 初心者のFileMaker pro Q&A » スライドコントロール内の画像がないときに動的にスライド数を減らしたりできますか? » 2021-09-28 13:21:21

mic

OnPanelSwitch トリガで設置しているオブジェクトをチェックして、空なら次のパネルに移動するとか

#19 Re: 初心者のFileMaker pro Q&A » 後学のために計算式が適切か教えていただきたいです。 » 2021-08-31 23:43:01

mic

Ceiling((小計+消費税)/100)*100

とかですかね。
ただし、これだと総額が切り上げになっていて個室手数料だけを切り上げている訳ではありません。

#20 Re: 初心者のFileMaker pro Q&A » FileMaker Server 19移行に伴うリレーション等の設定 » 2021-07-09 22:55:30

mic

可能ならですが、15の現サーバーはそのままにして、別の新規サーバーにクリーンインストールした方が良いかもしれません。
15のサーバーとファイルは稼働・公開中のまま、別サーバーに19のインストールとスケジュールのコピー等をし、さらに共有予定ファイルのコピーで動作確認しておけば、最後にIPまたはドメインの変更だけで確実に乗り換えることが出来ると思います。

問題が発生した場合は15のサーバーで再公開することも出来ますし。

#21 Re: 初心者のFileMaker pro Q&A » 要注意!! FMのアップデートを実行するとWindowsが勝手に再起動する » 2021-06-24 13:29:28

mic

うちでは再起動ではありませんが、ファイルメーカーが起動直後にクラッシュするという報告がありました。
報告があったPCのOSは以下のものでした。
───────────────
エディション    Windows 10 Pro
バージョン    20H2
インストール日    2020/10/20
OS ビルド    19042.1052
エクスペリエンス    Windows Feature Experience Pack 120.2212.2020.0
───────────────
※インストール日以外が全く同じOSのPCで2件報告あり
Windows7や8では今のところ同様の報告がありません。

設定等を触る余地がなくウインドウが真っ白のままクラッシュするため、対策の余地がありませんでした。
一度アンインストール後に再インストールし、アップデートを行わないことで起動は出来ましたが、その後の再アップデートは試していません。

#22 Re: 初心者のFileMaker pro Q&A » 新規ウインドウで設定した検索条件を元ウインドウに反映させて検索したい » 2021-06-16 14:45:47

mic

検索モードで検索条件を入力するのではなく、
・検索条件を入力するグローバルフィールドを用意
・グローバルフィールドの条件で検索するスクリプトを作成

として新規ウインドウで検索条件を入力させ、元のレイアウトに戻って検索スクリプトを実行すれば実現できないでしょうか。
グローバルフィールドの初期化やフィールドを増やした時などに手間が掛かる欠点はありますが、どこからでも検索条件を設定できると思います。

#23 Re: 初心者のFileMaker pro Q&A » 条件付き書式?文字色をあるフィールドより大きい、小さいで色を変更したい » 2021-03-10 11:39:56

mic

条件付書式で直接計算するのではなく、一旦計算フィールドで結果を出してみてはどうでしょう。

■検査結果を入力するテーブルに追加する計算フィールド
フィールド名:白血球状態
計算式:
Case(isEmpty(白血球);""
;白血球>=動物種血液検査正常値DB::白血球数の正常高値;1
;白血球<=動物種血液検査正常値DB::白血球数の正常低値;-1
;0)

■レイアウトの条件付書式
条件1:白血球状態=1
書式1:赤
条件2:白血球状態=-1
書式2:青

計算フィールドになっていれば確認も容易でしょうし。

#24 Re: 初心者のFileMaker pro Q&A » 分離モデルのバックアップ後のFileMakerの挙動に関する質問 » 2021-01-29 23:06:19

mic

リレーションやレイアウトの都合でファイルメーカーが自動的に開いたファイルは、親ファイルに連動して自動的に閉じられます。
ですが外からスクリプトが実行されると、自動的に開かれていたファイルでもユーザーが開いたファイルとみなされるようで、親ファイルを閉じても連動しなくなります。

外から呼び出されるスクリプトの最後に
  ファイルを閉じる[現在のファイル]
を追加、または呼び出し側で呼出先のファイルを閉じるステップを追加すれば、また親ファイルに連動して閉じられるようになります。
ファイルを閉じるステップを実行しても参照に必要なファイルが強制的に閉じられることはないので、気軽に追加しておいて問題ありません。


追記:表示できるウインドウがあればそれが表示されると思いますが、非表示のウインドウしか残っていない場合は何も表示出来ないため、ファイルメーカーの起動センターが表示されるのだと思われます。

#25 Re: 初心者のFileMaker pro Q&A » レイアウト画面の文章をそのままコピペしたい » 2020-11-21 16:14:42

mic

テキスト成型時は桁合わせ等で関数を使うことが多いためほぼスクリプトでやっていますが、文字を追加したり連結するだけで良い場合は確かにマージフィールドの方が楽そうですね。
内容編集する場合もレイアウト修正だけで済みますし。

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 657.89 KiB (Peak: 697.43 KiB) ]