みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
日付でソートして小計を出している時、印刷用のレポートにすると
日付の切り替わりを無視して改ページが行われるので、視認性が悪くなくなってしまいます
小計パートのみ次のページの頭に印字されることもあります
例えば用紙にあと3行しか入らないとき、次の日付グループが10レコードあるときは改ページして
次のページからはじめる、というようなことはできませんか?
標準機能でみていましたが、任意のレコード数で改ページすることしかできませんでした
1ページずつ様子を見ながら印刷していく、という方法しかないでしょうね。
ところで、ページトップから3行だけで、次の日付が23行あった時は、どうします?(1ページ25行くらいとして)
Offline
そうですね。難しい選択ですね
基本的には5レコード程度なので考えてもいませんでした
ページの途中から始まるグループがページ内に収まらない場合は次ページに送る
という条件でいいのでは。
まさしくそれがやりたいのですが
やり方がわかりません
タイトルヘッダやタイトルフッターは使いますか
使わないのでしたら、ソート状態で先頭から1レコードずつ増やしていき、プレビュー、最後のレコードのページ番号を取得して、2になれば、その同じグループのレコードを対象外にして印刷。
対象外にしたレコードから始めて同じ繰り返し、でいいのでは。
ステップは複雑に見えますが、実際にはプリンターをまたせずに処理できるはずです。
Last edited by Shin (2022-05-19 23:59:15)
Offline
それをスクリプトでつくりこむということでしょうか?
1レコードずつ増やしていってプレビューというのは目で確認ということですか?
なんとなくしか理解できませんでしたが、ページが2ならたしかにまたいでいるということになりますよね
再開する、とかが、よくやりかたがわかりません
Loopといった処理をするのでしょうか?
スライドを使っていなくて、ボディの天地巾が常に一定として、、
1ページに収まるボディの数が分かりますよね。
1日付ごとのボディの数は、
同日付のレコード数 + a(小計パートのボディに対する天地巾の比)
これで求められますから、
これから各レコードにページ番号を与えることができますね。
これは計算フィールドではかなり面倒でしょう、
スクリプトで見てゆけばいいかも。。
天地1pxのページ番号をソート対象とする小計パートを作り、それで改ページ指定します。
レイアウトには不特定数のこの小計パートが現れますから、
その分多少の余裕を持たせないとだめでしょう。
頭の中だけで、検証していません。
うまくいかなかったらご容赦を。
Offline
サンプルで動きを見てみてください。
https://www.dropbox.com/s/q0ydpiwinyzle … 2.zip?dl=0
チポさんと同じように、パートの高さを計算していく方法も考えて作ってみたのですが、別にデータベースを作るくらいの計算になりそうで、中途までで中断しています。もう少しで形になりそうですが。
どちらにしても、下部小計パートだけが印刷されることを回避することは結構難しく、とくに1グループが1ページになり小計パートのみが次ページに後られる状態は逃げようがないので、それぞれのパートの大きさを調整して逃げていただかないとしかたないかもしれません。
Offline
サンプルありがとうございました
印刷するときに処理されるのであり、
プレビューなどには適応されないのは正常ですか?(私の環境の問題か?という疑問です)
一般的には今回のような小計が別ページになったりグループでページをまたぐことは
まったく問題のないこと、という認識でしょうか?
それならば特にこだわりを持たず、またいだままでもいいのかな、と思えてきました
ページ番号を記入したり、ページ番号が最後でないなら、(次ページにつづく)
とか矢印などを挿入するというのも一般的でしょうか?
一般論は、その内容によるでしょうから何とも言えませんが。
プレビューで同じような表示にするには、各レコードにページ番号を打たないと無理でしょう。ただ、下部小計パートだけがページを繰り越している場合にはページ番号を打つことが難しくなります。
DTPのソフトを使うと上手く制御できたと思いますので、最終的にはそちらで処理を考えられたらいいのでは。
Last edited by Shin (2022-05-21 02:59:29)
Offline
各レコードにページ番号を持たせるスクリプトです。
結構長いものになりました。。
$x = 小計パートの大きさ
$p = 1
$y = 0
Loop
Loop
$x = $x + ボディパートの大きさ
Exit Loop If [ GetNthRecord ( 日付 ; Get ( レコード番号 ) + 1 ) ≠ 日付]
レコード移動 [ 次の; 後まで来たら終了]
End Loop
$y = $y + $x
フィールド設定 [ ページ番号; $p + ($y > 印刷領域の大きさ)]
If [ ページ番号 ≠ $p ]
$y = $x
$p = ページ番号
Else If [ $y = 印刷領域の大きさ ]
$y = 0
$p = ページ番号 + 1
End If
$x = 小計パートの大きさ
レコード移動 [ 次の; 後まで来たら終了]
End Loop
各大きさは、
ボディパートの1行を1としたものでも、
その寸法でもいいでしょう。
これで各グループの最後のレコードにページ番号が入力されます。
グループごとにその番号を移せば各レコードにぺージ番号が入力されますね。
タイトルヘッダ等がありページごとに領域の大きさが異なると
そのページごとに処理しなければなりませんね。
前レス間違いがありました
ページ番号の小計パートは各ページに1回のみ表示されます。
Offline
Pages: 1
[ Generated in 0.005 seconds, 7 queries executed - Memory usage: 528.23 KiB (Peak: 549.14 KiB) ]