過去の桐井戸端BBS (桐ver.9)
19885 一覧表レポートのセルは複製して重ねあわせをすることができないのでしょうか 悲しげ 2003/04/12-23:29
レポートに一覧表(または伝票)オブジェクトがあります。
で、その中にセル(テキストオブジェクト)として、次のように
FLAG1,FLAG2,A,Bの各項目とその明細データがあるとします。

FLAG1 FLAG2   A    B
--------------------------------------
 R   0   aa   bb
     1   あいうえお
     2   さしすせそ

Aの部分のテキストソースは
 #cond([FLAG1]="R",#表引き(…a表から…)
    ,[FLAG2]>0,#表引き(…c表から…))
Bの部分のテキストソースは
 #cond([FLAG1]="R",#表引き(…b表から…))

となっています。しかるに、セルAにおいて、[FLAG2]>0 で表引きされるデータは
「あいうえおかきくけこ」のようになっていて全部が表示しきれません。
とりあえずは「フォントサイズの調節」にチェックを入れて表示させてはいますが、
小さくて見にくいです。
希望としては

FLAG1 FLAG2   A    B
--------------------------------------
 R   0   aa   bb
     1   あいうえおかきくけこ
     2   さしすせそたちつてと

のように出力させたいのです。

当初は、こんなの簡単じゃん──
AとBをA'とB'に「複製」して(背景を透明にして)上にかぶせてから、
A'とB'のセルをグループ化(A'に吸収合併)しようとしました。
そしてこの時、
 Aのテキストソースは #cond([FLAG1]="R",#表引き(…a表から…))
 A'のテキストソースは #cond([FLAG2]>0,#表引き(…c表から…))
にするつもりでした。
が、何と一覧表(または伝票)内のセルは、複製もコピー&ペーストの
重ね合わせもできないではあ〜りませんか!
はて、困りました。何かうまいやり方(力技)はないでしょうか?

なお、
Aの部分のテキストソースは
 #cond([FLAG1]="R",#表引き(…a表から…)
    ,[FLAG2]>0,#sstr(#表引き(…c表から…),1,5))
Bの部分のテキストソースは
 #cond([FLAG1]="R",#表引き(…b表から…)
    ,[FLAG2]>0,#sstr(#表引き(…c表から…),6))
のような方法も考えましたが、実はAとBの間には縦に区切り線が入ってたり。(;_;)

19886 Re:一覧表rptのセルのことで 悲しげ 2003/04/12-23:34
記事番号19885へのコメント
最後の行

>実はAとBの間には縦に区切り線が入ってたり。(;_;)

は消し忘れですので、無視して下さい。(^^;)

19887 Re:一覧表rptのセルのことで 通りすがり 2003/04/13-00:17
記事番号19885へのコメント
無責任モードで。

>AとBをA'とB'に「複製」して(背景を透明にして)上にかぶせてから、
>A'とB'のセルをグループ化(A'に吸収合併)しようとしました。
>が、何と一覧表(または伝票)内のセルは、複製もコピー&ペーストの
>重ね合わせもできないではあ〜りませんか!

複合レポートにし、一覧表オブジェクトそのものを2つ重ねたら?
1つは2つのセル、もう1つは「セルのグループ化」をしたもの。
文字があふれる場合にのみ印字(表示)させ、それ以外は印字(表示)させない。
背景を透明にすることと、行の高さを固定してあればどう?
A、Bの区切りの縦罫線は・・・・「無視」。
「力技」というより「強引?」

19888 Re:一覧表rptのセルのことで 磯田 2003/04/13-00:20
記事番号19885へのコメント
こんばんわ。悲しげさんは、[FLAG1]>0の場合に2つのセルを結合させたいとのことですが、
逆転の発送でFlag=Rのときに、2つのセルを分けることを考えてみたらいかがでしょうか。つまり、
#cond([FLAG1]="R",#表引き(…a表から…)+#複写(" ",5-#文字数(#表引き(…b表から…)))+#表引き(…b表から…),[FLAG2]>0,#表引き(…表から…))
では、いかがでしょうか?
19889 Re:一覧表rptのセルのことで 通りすがり 2003/04/13-01:14
記事番号19887へのコメント
>1つは2つのセル、もう1つは「セルのグループ化」をしたもの。

ちなみに、この一覧表オブジェクトは、[A]のグループ化した幅を持った「1つのセル」だけの一覧表で良いですよね。
もちろん、罫線は裏にある一覧表に任せる。
あとは、職人技で、2枚ピッタリ重ねる・・・・。

19890 Re:一覧表rptのセルのことで 通りすがり 2003/04/13-01:18
記事番号19888へのコメント
>逆転の発送で2つのセルを分けること

1つのセルを2つのセルに分けたように表示させるということですよね。(^^ゞ
こっちが簡単ですね。
プロポーショナルフォントを使わず、文字数さえそろえさせれば、見かけ上、上手くいきそうです。


19894 一覧表・伝票を2つ重ねる方法 佐田 守弘 2003/04/13-22:45
記事番号19885へのコメント
悲しげさん

いろいろ考えてみましたが、一覧表ないし伝票オブジェクトを同じ位置に2つ重ねて、
上になった方を透明にしておく以外の方法はなさそうですね。
ただし、間の縦罫線の問題は残ります。

悲しげさんならこの後はいわなくても、もうお分りだと思いますが、
過去ログを後で読む方のために、一通りの解説をしておきます。

●悲しげさんのやりたい事
私なりの理解でいえば、ちょうどExcelのセルの様に、もし所定のセル幅で収まらない時には、
文字列の続きを隣のセルにはみ出したい。
そしてそのはみ出しを行うかどうかを[FLAG1]の値で制御したいという事の様ですね。

●伝票と一覧表オブジェクト内の子オブジェクト
「子オブジェクト」は私の造語です。つまり伝票オブジェクトの中にある子供のオブジェクトなのでこう呼ぶ事にします。
で、このこオブジェクトは、レポート上に直接配置するテキストやラベルと同等の属性を与えられるのですが、
独立したオブジェクトではない様なのです。
つまり、あくまでも一覧表ないし伝票オブジェクトの中にある2次元配列のセルに与えられる属性であって、
2次元配列の場所に通常のテキストオブジェクトが埋め込まれているのではない様です。

子オブジェクトをコピーまたはカットして、他の子オブジェクトないしは、
レポート上に独立したオブジェクトとして貼り付けられます。
カットした場合、子オブジェクトの属性はなくなりますが、子オブジェクトは残ります。
逆に他からペーストした場合には、子オブジェクトが重なるのではなく、
子オブジェクトの属性が書き換えられます。

以上が悲しげさんが試してうまく行かなかった理由と考えます。

●マスタページには配置できない
マスタページに一覧表・伝票オブジェクトを配置してみようかとも思ったのですが、これはだめですね。

●明細ページにオブジェクトを2つ重ねる
片方はグループ化し、片方はグループ化しない状態にしておき、#条件選択関数で
どちらかに印刷させるわけです。
つまり、
グループ化してない方の一覧表
 #条件([FLAG1]="R",#表引き(…a表から…)) ・・・Aの部分
 #条件([FLAG1]="R",#表引き(…b表から…)) ・・・Bの部分
グループ化した方の一覧表
 #条件([FLAG1]<>"R",#表引き(…a表から…)) ・・・グループ化したセル

なお、それ以外のセルについては、白色で印字する様に設定した方が、行数の制御のためにベターだと思います。

●縦罫線の問題
さて、なんともはや・・・。
直線オブジェクトの印字非印字の制御ができれば良いのですが。
あるいはもう1つ一覧表オブジェクトを重ねて、罫線の場所に「|」を印刷する
とか。

佐田守弘(KS-00119)

19895 宝くじを買ったつもり? しぼうかん 2003/04/14-00:21
記事番号19885へのコメント
こんばんは、私ごときが当たりの返事を書ける訳は無いのですが、一つ思いついたので、恥をかくのを覚悟で書いてみますが、

印刷時はコマンドボタンから印刷ですよね?

[A]+[B]をグループ化したレポートと[A]と[B]を別にしたレポートを
2つ作り、その[A]に表引きされる値の桁数によってレポートを印刷するレポート
を切り替えるのはどうでしょうか?

これなら罫線も問題内容に思えますが、たぶんハズしていますよね。
19896 また空振り しぼうかん 2003/04/14-00:39
記事番号19895へのコメント
あっこれじゃダメでした。
1行目に[A]と[B]、2行目にグループ化された[A’]だけを表示したくて
もすべて[A]と[B]かグループ化された[A’]しか表示出来なくなってしまいますね。

ああこのツリーとこの前のツリーを削除したい。トホホ(;_;)

19902 Re:縦罫線の問題 通りすがり 2003/04/14-14:03
記事番号19894へのコメント
>●縦罫線の問題
>さて、なんともはや・・・。
>直線オブジェクトの印字非印字の制御ができれば良いのですが。
>あるいはもう1つ一覧表オブジェクトを重ねて、罫線の場所に「|」を印刷する
>とか。

こんなイメージですか?

こんなイメージに印刷されればいいの?
2つの一覧表オブジェクト重ねあわせで、
印字属性を使えば可能かな?
通常は背景を「透明」、[Flag2]<>0の時に「白」。

2枚重ね&印字属性だけで解決できると思いますが。

19905 Re:一覧表rptのセルのことで(まとレス) 悲しげ 2003/04/14-14:26
記事番号19885へのコメント
どもっ、皆様(まとレスで失礼します)
昨日は早朝から深夜まで別所に缶詰状態でして、各コメントを今日見せていただきました。
出された案を、幾つか試させていただいて、次回に結果をご報告させていただきます。<(_ _)>

19966 報告 悲しげ 2003/04/16-02:09
記事番号19905へのコメント
一覧表オブジェクトをもうひとつ重ねる方法を試してみたのですが、
う〜ん、何だかうまく行かないです。
重ね方は、簡単で、要するに「複製」させてそのまま動かさないことで実現できます。
で、複製させた方(一覧表2)の方の二つのセル([A]と[B])をひとつのセルにグループ化し、
それぞれのソース(計算式)も書き換えました。

さて、プレビューさせてみたところ(実印刷も同様なのですが)、
複製させた方(一覧表2)が全く出ません。
実は、プレビューさせた時(あるいはプレビュー画面で頁を移動した時)、それらは瞬時表示されて直ちに消えます
(印刷ではカケラも出ない)。
一覧表2の方は、当然ながらオブジェクトのリスト上では、下に存在しています。背景も全て透明です。
……と云う訳で、詰まっています。
原因と思しきことに何かヒントはありませんでしょうか?

19967 Re:報告 うにん 2003/04/16-09:38
記事番号19966へのコメント
>一覧表2の方は、当然ながらオブジェクトのリスト上では、下に存在
>しています。背景も全て透明です。

全てということは、一覧表内のブツ個別に設定したのではないですか?
一覧表オブジェクト自体の背景を設定し忘れていると思われます。

19972 Re:報告 悲しげ 2003/04/16-11:51
記事番号19967へのコメント
どもっ、うにんさん

>>一覧表2の方は、当然ながらオブジェクトのリスト上では、下に存在
>>しています。背景も全て透明です。
>
>全てということは、一覧表内のブツ個別に設定したのではないですか?
>一覧表オブジェクト自体の背景を設定し忘れていると思われます。

殆どピンポンです。(^^)v
「一覧表1」オブジェクトを「複製」して同じ場所に「一覧表2」オブジェクトが出来ている状態で、
「一覧表2」オブジェクト自体の背景についても当然ながら「透明」に変更しています
(元は「なし」になっていた)。
が、「一覧表1」オブジェクト自体の背景は「なし」のままだったので、
ここを(半信半疑ながら)「透明」に変更したら、ようやくうまく行きました。

それはそれで一件落着なのかもしれませんが、でも何だか変です。
「一覧表2」オブジェクトは当然ながら「オブジェクトのリスト」上では
「一覧表1」よりも下に存在しています。と云うことは、通常は下のものほど手前に印刷されるはずだと思うのですが、
今回のふたつの「一覧表*」オブジェクトについては、この関係がどうやら逆になっているようなのです。(?_?)
ちなみに、「一覧表*」オブジェクトは「重なり順」を変更することはできません
(そのメニューが出ない)。と云う訳で、仕方がないので、
ふたつの「一覧表*」の関係を逆に考えてセルの合体(グループ化)やらテキストソースの計算式を変更して、
ようやく目的を達成することができました。
なんか変ですけど、一応そおゆうことで。(^^;)
あ、これはv8sp6上でです。

で、縦罫線(テキストの囲み罫線)の関係ですが、確かに「印字属性」で「属性式」により、
背景を「透明」から「白」にすることで、これまた目的を達成することができました。
それはそうなんですけど、実際に出力させてみると、
グループ化したセルにあっても罫線が貫かれている方がかえって自然に見えたので、
この点は放置することにしました。
となると、ふたつの「一覧表*」の関係が逆だろうと実態的には問題にならないことにはなりそうですが。(^^;)

以上、ご報告とします。

ps:
#19888の磯田さんの案も試してみましたが、縦罫線の関係と、
元はふたつであった(つまりAとBの)横表示位置が中央そろえであったことの
関係でちょいと不採用としました。<(_ _)>
19975 Re:報告 うにん 2003/04/16-12:06
記事番号19972へのコメント
>ちなみに、「一覧表*」オブジェクトは「重なり順」を変更することは
>できません(そのメニューが出ない)。と云う訳で、仕方がないので、
>ふたつの「一覧表*」の関係を逆に考えてセルの合体(グループ化)や
>らテキストソースの計算式を変更して、ようやく目的を達成することが
>できました。なんか変ですけど、一応そおゆうことで。(^^;)
>あ、これはv8sp6上でです。

V9でも、オブジェクトのリストで右クリックしても「重なり順」メニューはありませんが、
書式メニューの方で変更できます。

確かに、前面に出すと下に移動しますから、ちょっと不思議ですね。

19977 Re:報告 悲しげ 2003/04/16-12:11
記事番号19975へのコメント
どもっ、うにんさん

>V9でも、オブジェクトのリストで右クリックしても「重なり順」メニューは
>ありませんが、書式メニューの方で変更できます。

あ、v8でも書式メニューには存在してました。(^^;)
でも、結果が変なこと(逆となること)は同じですけどね。

19978 Re:削除依頼は 悲しげ 2003/04/16-12:20
記事番号19896へのコメント
どもっ、しぼうかんさん、コメントをどうも。(^^)
この度は、レポート定義上の問題でありました。
それと

>ああこのツリーとこの前のツリーを削除したい。トホホ(;_;)

「このツリー」と云うと、通常は#19885から始まる「幹」を指すと思います。
幹から削除されちゃ困るので、削除依頼は#19895から分枝している
branch(小枝)の方に限定しておきましょう。(^^;)
(この小枝も含めて)

19994 レポートオブジェクトの印刷順序 佐田 守弘 2003/04/17-00:30
記事番号19977へのコメント
悲しげさん
私もはっきりした原因は分りませんが、ちょっと思い当たる事を述べます。

レポートのオブジェクトの中の計算式の値の評価は単純ではないらしいのです。
印刷前にレポートに設定されている計算式を評価するために、何回かスキャンし、
印刷順序などを決めていると思われます。
このため、オブジェクトの定義順が印刷順にならない事があり得るのかも知れません。

「なぜそんな複雑な事をしているのか」ですか?。
それは開発者が考えてもいないかった使い方をするユーザーがいるからでしょう。
計算関数を使って変数に値を代入し、その値を別の場所で使う様な使い方への
対応といったところではないでしょうか(多分...)。

レポートの下段の方で集計した値をページの先頭の方に印刷するような事が可能になるのも、
そういった裏の仕組みがあるためではないかと思います。

佐田守弘(KS-00119)
一覧表の2枚重ねをされるとは、多分予想もしてなかったかも。

戻る