みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FM12 Win8を使用しています。
印刷用レポートにヘッダーに氏名があり、ボディー(小計ソート)に、日付とコメントのフィールドがあります。
一月分の日報を月報として一枚のA4に表示しているのですが、人によっては、コメントの量が異なりA4で1枚に収まらなくなってしまいます。
そこでコメントの量が一定以上の場合にフォントを小さくしたりはできないのでしょうか?
収まるかどうか調べる方法
https://fm-aid.com/bbs2/viewtopic.php?id=491
フォントだけでなく行間も変えないと高さが減りませんね。
Offline
印刷前にプレビューを行なってみて、ページ数をチェックします。それで2ページに渡っていれば、という処理は可能かと思います。
日報そのものも月によって日数が変わりますので、コメントの量だけで判断は難しいでしょう。
Offline
文字数によりフォントサイズを小さくするサンプル
トリガー版サンプル
ありがとうございます。やってみます。:) と =)
すみません。追加で質問させて下さい。
Keima様のアドバイスにより徐々に形になったのですが、Shin様の言っておられるように、2ページ目に渡った場合にコメントの文字の大きさを変えるにはどのようにすればいいのでしょうか?その方が日によって大きな字になったり、小さな字になったりと違和感があるため質問させていただきました。
フォントサイズは全部同じに変更したいってことですね。
プレビューモード[]
レコードへ移動[最後]
でページ数がわかるので、2ページなら条件付書式でフォントサイズを小さくする、ということでは。
フォントサイズは全部同じに変更したいってことですね。
プレビューモード[]
レコードへ移動[最後]
でページ数がわかるので、2ページなら条件付書式でフォントサイズを小さくする、ということでは。
2ページ目になった場合はフォントサイズを小さくして1ページになるようにしたいです。
一応下のようにしたのですができなかったです???
プレビューモード[]
レコードへ移動[最後]
Get ( ページ番号 ):>2; TextSize ( コメント ; 7 )
でやったのですができず。。。
1ページになるまで徐々に下げていかないとだめですから、
変数を設定[$$size=20]//デフォルトサイズ
Loop
ExitLoopIf[$$size=6]//最小サイズ
プレビューモード[]
レコードへ移動[最後]
ExitLoopIf[Get(ページ番号)=1]
変数を設定[$$size=$$size-1]
EndLoop
条件付き書式は、$$size=6でフォントサイズ6、というのを最大から最小まで並べる。
1ページずつ印刷することになるので、何か不都合があるかも?(通しページ番号ぐらいか)
他には、インスペクタでスライドと表示を設定すると
フィールドの行の空きを詰めることができます。
Offline
できるというか、スライドも設定しないと、フォントサイズは関係なくレコード数で自動的に1ページに入るかどうか決まってしまいますよね。
1ページになるまで徐々に下げていかないとだめですから、
変数を設定[$$size=20]//デフォルトサイズ
Loop
ExitLoopIf[$$size=6]//最小サイズ
プレビューモード[]
レコードへ移動[最後]
ExitLoopIf[Get(ページ番号)=1]
変数を設定[$$size=$$size-1]
EndLoop
条件付き書式は、$$size=6でフォントサイズ6、というのを最大から最小まで並べる。1ページずつ印刷することになるので、何か不都合があるかも?(通しページ番号ぐらいか)
スクリプトで
変数を設定[$$size;値:20//デフォルトサイズ]
Loop
プレビューモードに切り替え[]
レコード/検索条件/ページへ移動[最後の]
ExitloopIf[Get(ページ番号)=1]
変数を設定[$$size;値:$$size-1]
EndLoop
としたのですが、印刷用のレイアウトでスクリプトを実行したのですが、砂時計がついたままでなにもならないのですがなぜでしょうか?
最小サイズの指定がないので、無限ループになります。
最小サイズの指定がないので、無限ループになります。
日報のコメントフィールドの条件付き書式に、計算式で$$size=6、$$size=7、$$size=8、$$size=9、$$size=10、$$size=11、$$size=12、$$size=13と8つ作ったのですが、また無限ループになっちゃいました。
なぜでしょう?
> 一月分の日報を月報として一枚のA4に表示しているのですが
複数の日報レコードを月報として1ページに印刷
ですよね?
とすると、
印刷する全ての日報レコードのフォントの大きさを変えるんですよね。
ならば、
条件付き書式の条件のフィールドをグローバルとしなければだめですが、
そうしていますか?
> 無限ループになっちゃいました
最初は、Loopの中に
スクリプト一時停止
を入れると、1回ごとの確認ができ、いつでもスクリプトを止められますよ。
Offline
ループになるのはページ数が1になっていないということです。
スクリプトの
ExitLoopIf[$$size=6]//最小サイズ
が抜けてるのは直しましたか?(フォントサイズを6にしても1ページにならなければ、あきらめるという処理です)
あるいは、対象レコードを1人分(1か月分)にしてないとか
今更思い出したけど、入力した文字自体にフォントサイズが指定されてると、条件付書式では変わらないですねorz
日によって大きな字になったり、小さな字になったりと違和感がある
というぐらいだから、まず使ってないと思いますけど
条件付き書式の条件のフィールドをグローバルとしなければだめですが、
フィールドでなく計算式で変数を見る仕組みです。
ブラウズモードに切り替え[]を入れ忘れてました!
Loopの後かEndLoopの前に入れてください。
(プレビューのままだとページ移動でフォントサイズは変わるけどスライドに反映されない)
ああ、そうか、
途中よく読んでいない ><
Offline
ループになるのはページ数が1になっていないということです。
スクリプトの
ExitLoopIf[$$size=6]//最小サイズ
が抜けてるのは直しましたか?(フォントサイズを6にしても1ページにならなければ、あきらめるという処理です)
あるいは、対象レコードを1人分(1か月分)にしてないとか今更思い出したけど、入力した文字自体にフォントサイズが指定されてると、条件付書式では変わらないですねorz
日によって大きな字になったり、小さな字になったりと違和感がある
というぐらいだから、まず使ってないと思いますけど
ExitLoopIf[$$size=6]//最小サイズが抜けてました。
ただ、サイズが変わらないのはなぜでしょう?
一番最初にも書いたのですが、日々の日報を一日、一人、一レコードで記録しており、それを顧客毎にヘッダーで小計ソートし、ボディに日付や日々の日報が乗るようにしてあるためでしょうか?
「ヘッダーに氏名」というのは日報を書いた人じゃなく顧客のことですか。まあそこはどっちでもあんまり関係ないか。
>一月分の日報を月報として一枚のA4に
毎日必ずあるのか、そうでなく週休2日で20レコードぐらいだとしても、普通の文字サイズでは1日2行分ぐらいしか入らないですよね。「コメント」が本当に短文でないと元々無理ということも?
フォントサイズの選択肢にあるから最小を6ptとしたスクリプトを提示しましたけど、実際に12ptのと6ptのが混在したら、1ページに収まってても「違和感」がすごそうですが。
「サイズが変わらない」
>Loopの中にスクリプト一時停止
で確認してますか。
最後に$$size-6で抜けてると思うから、多分条件付書式の計算式だけ設定して、フォントサイズを設定し忘れてるような気が。
>顧客毎にヘッダーで小計ソート
「総ページ数」が1になるように調整するんで、1ページ内に印刷したいレコードだけを対象にしてからスクリプトを実行しないとだめですよ。
「ヘッダーに氏名」というのは日報を書いた人じゃなく顧客のことですか。まあそこはどっちでもあんまり関係ないか。
>一月分の日報を月報として一枚のA4に
毎日必ずあるのか、そうでなく週休2日で20レコードぐらいだとしても、普通の文字サイズでは1日2行分ぐらいしか入らないですよね。「コメント」が本当に短文でないと元々無理ということも?
フォントサイズの選択肢にあるから最小を6ptとしたスクリプトを提示しましたけど、実際に12ptのと6ptのが混在したら、1ページに収まってても「違和感」がすごそうですが。「サイズが変わらない」
>Loopの中にスクリプト一時停止
で確認してますか。
最後に$$size-6で抜けてると思うから、多分条件付書式の計算式だけ設定して、フォントサイズを設定し忘れてるような気が。>顧客毎にヘッダーで小計ソート
「総ページ数」が1になるように調整するんで、1ページ内に印刷したいレコードだけを対象にしてからスクリプトを実行しないとだめですよ。
>「総ページ数」が1になるように調整するんで、1ページ内に印刷したいレコードだけを対象にしてからスクリプトを実行しないとだめですよ。
そうなんですね。現在は、常時50名くらい顧客がいて、年月で対象者を抽出して、氏名でソートしているので、その50名の内2ページになっている人の印刷レポートのみ自動でフォントサイズを小さく出来るかと思ったのですが、2ページになっている人のみ抽出してからスクリプトを実行する必要があるんですね。。。
「自動調整」するんで2ページになってるかどうかは気にしないでいいですけど、
最初に「1ページずつ印刷することになるので、何か不都合があるかも?(通しページ番号ぐらいか)」と書きました。(1ページに収まらないこともあり得ますが)
ループで1人ずつ検索して印刷すればいいです。
変数を複数使えば一度にもできるかと思うけど、ややこしいし、プレビューの計算が遅くなります。
「自動調整」するんで2ページになってるかどうかは気にしないでいいですけど、
最初に「1ページずつ印刷することになるので、何か不都合があるかも?(通しページ番号ぐらいか)」と書きました。(1ページに収まらないこともあり得ますが)
ループで1人ずつ検索して印刷すればいいです。変数を複数使えば一度にもできるかと思うけど、ややこしいし、プレビューの計算が遅くなります。
Layouter様の教えていただいた通りに
→
変数を設定[$$size=20]//デフォルトサイズ
Loop
ExitLoopIf[$$size=6]//最小サイズ
プレビューモード[]
レコード/検索条件/ページへ移動[最後]
ExitLoopIf[Get(ページ番号)=1]
変数を設定[$$size=$$size-1]
ブラウズモードに切り替え[]
EndLoop
として、条件付き書式計算で最少からデフォルトまでの計算値とフォントサイズの設定をしたのですが変わりません。
もちろんスライドはチェックしています。
スクリプトの
レコード/検索条件/ページへ移動[最後]というのは、最後のページに移動するということになるため、印刷レイアウトで50人分のページがあり、2人が2ページ目にかかっていて、全部で52ページとなっていた場合は52ページに移動するということなのでしょうか?だとすると、スクリプトもかわってくるのでしょうか?
[ Generated in 0.019 seconds, 9 queries executed - Memory usage: 622.05 KiB (Peak: 654.96 KiB) ]