DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ActiveReport 日別売上一覧の作成方法

環境/言語:[VB.NET2005]
分類:[.NET]

お世話になります。サンプルを見ても解決しませんでした。
ActiveReport3J

   商品A  商品B  商品C
1日 15,000       5,000
2日 10,000
3日
4日  5,000  60,000
5日 10,000
6日
7日
週計 40,000  60,000  5,000
8日


14日
週計


合計

上記のようなレポートを作成したいのですが、左側の日付を固定で表示する方法が分かりません。
ColumnCountは3で1ページに3つの商品を表示させます。
Detailに日付を書いてしまうと3回表示されてしまいますし、売上の無い日(データが無い日)がありますので、単純にデータを表示させる訳にもまいりません。
サブレポートで全ての日付をラベルで書いて、親レポートはそれに合わせてテキストボックスを複数個ベタで書くのでしょうか??
良い方法をお教え下さいませ。
質問の仕方が悪いようなので・・

N列のレポートを出力するときに、一番左側だけに見出しを付ける方法が分かりません。
グループのフォーマット時にサブレポートを埋め込むとそれらしき事は出来ますが
見出しを含めたN列になってしまいます。(見出しの列幅が広くなってしまいます)
見出しの列幅は小さくして、商品だけN列確保したいのです。

見出し  商品A                               商品B                              商品C・・ 商品D
        販売数   単価     金額     益率     販売数      単価      金額  益率
1日    100      1500     150000   20       200         2000     400000   30
2日
:
:
31日

おそらく根本的に方法が間違っているのだと思うのですが・・
このような場合はcolumnCountをN使う訳ではないのでしょうか?
宜しくお願い致します。<(_ _)>
Viewerに表示する前にCREATE文で仮想テーブルを作成。
その仮想テーブルに一月分の日付をInsertし、そこに表示させたいデータをUpdateさせ、
仮想テーブルをSelec文tで呼び出す、という方法はいかがでしょうか?
Resありがとうございます。
データの日付抜けを作成する所まで出来たとして、その後の表示方法に困っております。
横の列はN個になりますので横方向にデータだけ複数回表示する方法が分かりません。
日付を含めて展開するのは簡単なのですが・・・2回目以降の展開は日付部分が要りません。
何か自分が大きな勘違いをしているのかな・・・(--;)
ColumnCountをNにすると下記の表示は簡単に出来ます。
--日付--Aのデータ--日付--Bのデータ--日付--Cのデータ--・・日付--Nのデータ--

そうではなく
--日付--Aのデータ--Bのデータ--Cのデータ--・・--Nのデータ--
と表示させたいのです。
1ページに4つ表示させるとしたらDのデータまで行くと改ページして
2ページ目はEから始まります。データは可変でNあります。
(日付の幅は小さく、データの幅は大きくしたい。)
プロパティで繰り返す項目を指定したり出来るのでしょうか?
■No25958に返信(chappyさんの記事)
ActiveReport に関しては素人なのでできるできないは分かりません。
ただ、一般的に帳票の横幅は決まっているし、表示項目の幅も決まっています。
商品3つも並べたらA4に収まらなくなるような帳票は役に立たないですよね?

で、最初に思う疑問はNの最大値は無いんですか?ということです。
ちょうどいま ActiveReports 3.0J を使ってます。

■No25958に返信(chappyさんの記事)

> 横の列はN個になりますので横方向にデータだけ複数回表示する方法が分かりません。
> 日付を含めて展開するのは簡単なのですが・・・2回目以降の展開は日付部分が要りません。
> 何か自分が大きな勘違いをしているのかな・・・(--;)
> ColumnCountをNにすると下記の表示は簡単に出来ます。
> --日付--Aのデータ--日付--Bのデータ--日付--Cのデータ--・・日付--Nのデータ--
>
> そうではなく
> --日付--Aのデータ--Bのデータ--Cのデータ--・・--Nのデータ--
> と表示させたいのです。
> 1ページに4つ表示させるとしたらDのデータまで行くと改ページして
> 2ページ目はEから始まります。データは可変でNあります。
> (日付の幅は小さく、データの幅は大きくしたい。)
> プロパティで繰り返す項目を指定したり出来るのでしょうか?


横方向へのデータの繰り返しは判りません。ただし

> そうではなく
> --日付--Aのデータ--Bのデータ--Cのデータ--・・--Nのデータ--
> と表示させたいのです。

の「日付」の設定だけなら、

日付データとバインドしたラベル(もしくはテキスト)を非表示もしくは表示外に配置し、
左端に配置した非バインドの日付ラベルを CellPainting イベント等で設定する

という方法が考えられます。

#試してないのであくまで推測です。<(_ _)>
帳票として成り立つかどうかは利用する人の判断になりますので何とも言えません。
今回の場合は分析の為の帳票というより保存するための帳票だと思います。
帳票を見る人がPCを扱えない年配者だと思って下さい。
扱っている商品が毎日どれだけ売れているかを紙ベースで出力したいのだと思います。
月によって扱う商品は増えたり減ったりしますのでNは固定にはなりません。
データとしては下記のようになっています。(数値は適当)
これを日付ごとに商品を横展開にして出力するというイメージです。商品数は100以上あります。

日付  商品 売上数 売上金額 益率
12/01  A     100    120000   0.40
12/01   B     120    150000   0.38
12/01   C      20     30000   0.51
12/01   F      50     50000   0.42
12/02   A     100    300000   0.35
12/02   B     200    580000   0.35
12/03   B     300    420000   0.38
12/03   D      50    300000   0.40
12/05   A      20     50000   0.38
:       :
:       :
12/31   N     250    320000   0.39
■No25961に返信(chappyさんの記事)

chappy さん、こんにちは。

私も toorisugari さんと同じく仮想テーブルを作成する方法を使用しています。
私の場合は、テーブルの設計をするうえで「帳票の出力イメージのレイアウトのまま」で行っています。

> --日付--Aのデータ--Bのデータ--Cのデータ--・・--Nのデータ--

としたいなら

テーブルの設計としてはこの様になります。
(ただし、1ページに3列までとした場合)

ページ番号, 行番号, 日付, 1列目のデータ(販売数, 単価, 金額, 益率), 2列目のデータ, 3列目のデータ

上記テーブルのデータの例はこの様になります。
(注:列のデータは括弧([])でくくっています。また数字は適当です)


(1ページ目:A商品, B商品, C商品)
1, 1, 12/ 1, [  10,   12,  120,   40], [  10,   10,  100,   10], [  10,   10,  100,   10]
1, 2, 12/ 2, [  20,   10,  200,   20], [null, null, null, null], [  20,   10,  200,   20]
(〜略〜)
1, 31, 12/31, [  60,   10,  600,   60], [  60,   10,  600,   60], [null, null, null, null]

(2ページ目:D商品, E商品, F商品)
2, 1, 12/ 1, [null, null, null, null], [  10,   10,  100,   10], [  10,   10,  100,   10]
2, 2, 12/ 2, [  20,   10,  200,   20], [  20,   10,  200,   20], [  20,   10,  200,   20]
(〜略〜)
2, 31, 12/31, [  60,   10,  600,   60], [  60,   10,  600,   60], [  60,   10,  600,   60]

(商品が終了するまでページは続く…)


作成したデータは、ページ番号と行番号でソートしつつ、ページブレイクや見出しの制御をしながら出力できます。

あくまでも一例ですので、あとはお好きなように設計してください。
やっぱりデータの方を帳票に合わせるという感じになっちゃうんですね・・。
せっかく横にN個展開できる機能があるのだから、ページヘッダみたいに
行側にヘッダが付けられたら解決するのですが・・・。
通常は行ヘッダは必要ないですが、項目が複数回展開される時は必要になりますよね?
以前に書きましたようにグループヘッダをUnderLayNextをTrueにしたら代替できるのですが
これをするとデータの一員になってしまい列幅の制御が出来ません。(*_*)
何とかActiveReportsの機能を使って実現したかったのですが、どうも無理っぽい感じですね。

ご意見、ありがとうございました。m(__)m
■No25960に返信(ひらぽんさんの記事)。
>
> 「日付」の設定だけなら、
>
> 日付データとバインドしたラベル(もしくはテキスト)を非表示もしくは表示外に配置し、
> 左端に配置した非バインドの日付ラベルを CellPainting イベント等で設定する
>
> という方法が考えられます。
>
> #試してないのであくまで推測です。<(_ _)>

すみません。ActiveReports と MutiRow と混同してしまいました。
上記の書き込み MutiRow の場合でした。ごめんなさい。<(_ _;)>

DOBON.NET | プログラミング道 | プログラミング掲示板