どうも、Twitterはフォローされるけど、読者登録はされないぺやんぐ(@peyangu485)です。
いやまぁ、いいんだけどね。(どっちにしろありがたいこと)
◆背景
ActiveReports 3.0から変換ツールを使用し、9.0で使用するためのマイグレ作業中。
コードは3.0当時のまま、検証を開始した。
◆現象
印刷時に「〇〇は既に存在しています」エラーが出てこける。
◆発生箇所
ページフッターにグループフッターのコントロールをAddしているところ。
◆原因
単純にコントロール名が重複するからだと思われる。
◆対応
そもそも、ページフッタとグループフッタの違いについて知る必要がある。
- ページフッタはdetail行が何行あってもページフッタ領域が割り当てられる。
- グループフッタは、同一グループで、detail行が次のページに跨っても領域は割り当てられず、detail行の出力が全て終わってからからグループフッタ領域を割り当てる。
つまり、毎ページ出したかったらページフッタ、グループ単位で出したかったらグループフッタを使うらしい。
そのまんまやな。
てことで、対応としては、
その1:デザイナでグループフッターのコントロールをページフッターに移動し、コード上で追加しないようにする。
問題:グループフッターに置いて、データをバインドしていた場合、動きが変わる。(ページフッター上のコントロールにはバインドできないので)
その2:コード上でグループフッター上のコントロールをコピーし、コントロール名を変更した後にページフッターに追加する。
問題:コードが汚くなる。
コントロール名が変更されることの弊害を考慮する必要がある。
データをバインドしていないコントロールしかない場合なら、対応その1で問題なさそう。
3.0だとこうしないといけなかった可能性があるし。
コード上にはどういった意図でコードで追加をしたのか記載されていないので、あくまで憶測だが。
バインドしている場合が問題。
その1その2、どっちも対応としてはよろしくない。
今回、グループ単位での出力があるっぽいけど、毎ページ出力しているページフッターを利用して、グループフッター自体をvisible=falseにしてるから、結局ページフッターに最初から置いておけばすむ話になりそう。
バインドもしてなさそうだし。
コード見てると、最初に作った人がデザイナ開くのが億劫になってコード上でページフッターに追加させただけでは説が濃厚。
グループフッターを非表示にしているところとか。
低スペックPCだったからコード上で対応した感ある。
◆まとめ
対応方法が決まったら、また追記します。
今のところその1で行くつもり。