tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルActiveReports割合計算の行追加方法について
記事No11911
投稿日: 2017/09/29(Fri) 17:12
投稿者TT_Meka
開発環境
Windows7,VisualStudio2012(VisualBasic),Access2010,ActiveReports9.0J

Access上のローカルテーブルをActiveReportを使用して帳票表示しようと考えております。

参照するデータはAccessにある下記のテーブルデータです。
S_ID,S_CODE,S_NAME,SUU
001,1,納品数,10
001,2,返品数,2
002,1,納品数,500
002,2,返品数,1

ActiveReportsのデザイン画面にて、
GroupHeaderにS_IDを指定
DetailにはS_CODE,S_NAME,SUUを指定

ここまでの表示は正常に表示されます。

最終行に返品率を追加表示させたいのですが方法がわかりません。
S_ID | S_CODE | S_NAME  | SUU
001  |      1 |納品数   |  10
001  |      2 |返品数   |   2
     |        |返品率(%)|  20  ←追加(返品数÷納品数×100)
002  |      1 |納品数   | 500
002  |      2 |返品数   |   1
     |        |返品率(%)| 0.2  ←追加(返品数÷納品数×100)

御存知の方いらっしゃいましたら教えて頂けませんでしょうか?
宜しくお願い致します。

[ツリー表示へ]
タイトルRe: ActiveReports割合計算の行追加方法について
記事No11912
投稿日: 2017/09/29(Fri) 18:19
投稿者魔界の仮面弁士
S_CODE と S_NAME の関係性がどうなっているのか、とか、
返品なしの場合に返品レコードが作られるのかなど、多少の疑問はありますが:

> S_ID,S_CODE,S_NAME,SUU
> 001,1,納品数,10
> 001,2,返品数,2
> 002,1,納品数,500
> 002,2,返品数,1

とりあえず

TRANSFORM SUM([SUU]) SELECT [S_ID] FROM [TBL]
GROUP BY [S_ID] ORDER BY [S_ID] ASC PIVOT [S_NAME]

もしくは

SELECT [S_ID]
, SUM(IIF([S_CODE] = 1, [SUU], 0)) AS `納品数`
, SUM(IIF([S_CODE] = 2, [SUU], 0)) AS `返品数`
FROM [TBL] GROUP BY [S_ID] ORDER BY [S_ID] ASC

という SQL によって、

S_ID  納品数  返品数
----  ------  ------
001      10       2
002     500       1

という結果が得られるので、これを使って、1 つの Detail 内を

「S_ID」『1』『納品数』「納品数」
「S_ID」『2』『返品数』「返品数」
       『返品率(%)』「返品数÷納品数×100」

という 3 段構成で表現するというのはどうでしょう。

※「」はフィールド参照の TextBox
※『』は固定値の Label

[ツリー表示へ]