ページ総数の表示について
ページ総数の表示についてご教授いただきたいです。
現在レコード後処理にてcaunt関数/1ページの最大行数に0.5を加算して総ページ数を表示させようとしていますが、どう頑張ってもpage関数と同じ結果にしかならないです。
理想としては1/3ページとして表示させたいのですがどうすればいいのか見当もついておりません。
どなたかご教授よろしくお願いいたします。
-
ykmc様
ヘルプの「ホーム > Magic xpa 逆引き辞典 > レポート > 帳票ページを列挙するには」のところが参考になるのではないでしょうか。(2回データ読込しますので処理時間が多くなりますが)
-
カウント関数というとSQLで行数をとって、切り上げしているる感じですか?あ
わたしもよくやります、同じになるということであれば
そのカウント関数の結果がおかしいのではと思います
印刷だとすれば1行目を印刷したときに
全38行であれば38と取れないといけないわけですから
1行目 38
2行目 38・・・ という結果が帰ってきているでしょうか? -
TAKUYA.O様
早速のご回答ありがとうございます。
ヘルプの「帳票ページを列挙するには」を当初は参考にさせていただいていたのですが、TAKUYA.O様が仰っている通り処理時間が長くなる可能性を考えました。また使用しているパソコンのスペックがあまり高い方ではないため、そちらの方法は断念しまして別の方法を模索しているところで御座います。 -
早速のご回答ありがとうございます。
初めてのフォーラムの為、言葉不足が何点かございました。
まずカウント関数という式で行数を取って切り上げしております。
そしてカウント関数で全38行であれば正常に
1行目 1
2行目 2
という風に正常に出力されます。
例としてround(counter(0)/38+0.5,2,0)と式を設定した場合、総ページが表示されるわけではなく、1ページ目は1、2ページ目2とpage関数を使用した場合と同様の出力結果となってしまいます。
-
総行数 38行
1ページあたり 10行 とした場合、
counter(0) は 今の時点でのカウンターですから
1行目 str(page(0,1),'3') & '/' & round(1/10+0.5,2,0)
2行目 str(page(0,1),'3') & '/' & round(2/10+0.5,2,0)・・・
11行目 str(page(0,1),'3') & '/' & round(11/10+0.5,2,0)・・・
38行目 str(page(0,1),'3') & '/' & round(38/10+0.5,2,0)
という結果になります
counter(0)ではなくて総行数が入るべきではないでしょうか
印刷であれば、
そのページ毎で最初か最後にフォーム出力したときの計算値が入るので
1ページ目 1/1 2ページ目 2/2 3ページ目 3/3 になっているというわけですね -
ykmc様
読込みしているデータがSQLであればですが、
データビューを”Q=SQLコマンド”として
select *,count(*) over () AS TOTAL from [テーブル名]
とやれば、読込みしながら「TOTAL:総行数」がわかるので、総ページ数も計算できると思います。
おすすめではないですが、処理時間を短くすることは可能と思います。
-
Sun nihara様 TAKUYA.O様
お返事が遅くなり申し訳御座いません。
結果的に言えば別のデータベースを作りそこに行を埋めることでうまくいきました。
お二方の意見が無ければかなり時間が掛かっていたかと思います。
本当にありがとうございました。
サインインしてコメントを残してください。
コメント
7件のコメント