メインコンテンツへスキップ

ページ総数の表示について

コメント

7件のコメント

  • TAKUYA.O

    ykmc様

    ヘルプの「ホーム > Magic xpa 逆引き辞典 > レポート > 帳票ページを列挙するには」のところが参考になるのではないでしょうか。(2回データ読込しますので処理時間が多くなりますが)

     

  • Sun nihara

    カウント関数というとSQLで行数をとって、切り上げしているる感じですか?あ
    わたしもよくやります、同じになるということであれば
    そのカウント関数の結果がおかしいのではと思います

    印刷だとすれば1行目を印刷したときに
    全38行であれば38と取れないといけないわけですから

    1行目 38
    2行目 38・・・ という結果が帰ってきているでしょうか?


  • ykmc

    TAKUYA.O様

     

    早速のご回答ありがとうございます。
    ヘルプの「帳票ページを列挙するには」を当初は参考にさせていただいていたのですが、TAKUYA.O様が仰っている通り処理時間が長くなる可能性を考えました。また使用しているパソコンのスペックがあまり高い方ではないため、そちらの方法は断念しまして別の方法を模索しているところで御座います。

  • ykmc

    Sun nihara 

    早速のご回答ありがとうございます。

    初めてのフォーラムの為、言葉不足が何点かございました。

    まずカウント関数という式で行数を取って切り上げしております。

    そしてカウント関数で全38行であれば正常に

    1行目 1

    2行目 2

    という風に正常に出力されます。

    例としてround(counter(0)/38+0.5,2,0)と式を設定した場合、総ページが表示されるわけではなく、1ページ目は1、2ページ目2とpage関数を使用した場合と同様の出力結果となってしまいます。

  • Sun nihara

    総行数 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 になっているというわけですね



  • TAKUYA.O

    ykmc様

    読込みしているデータがSQLであればですが、

    データビューを”Q=SQLコマンド”として

    select *,count(*) over () AS TOTAL from [テーブル名]

    とやれば、読込みしながら「TOTAL:総行数」がわかるので、総ページ数も計算できると思います。

    おすすめではないですが、処理時間を短くすることは可能と思います。

  • ykmc

    Sun nihara様 TAKUYA.O

    お返事が遅くなり申し訳御座いません。

    結果的に言えば別のデータベースを作りそこに行を埋めることでうまくいきました。

    お二方の意見が無ければかなり時間が掛かっていたかと思います。

    本当にありがとうございました。

サインインしてコメントを残してください。