ラベル Microsoft Report の投稿を表示しています。 すべての投稿を表示
ラベル Microsoft Report の投稿を表示しています。 すべての投稿を表示

2018年4月10日火曜日

余白をプログラムで動的に設定 [MicrosoftReport]

MicrosoftReportのlocalReport.Renderで帳票作成時に余白をプログラムで動的に設定。

------------------------------------------------------------------
string marginTop = "20.255";
strinf marginLeft = "10.00";

string deviceInfo =
    "<DeviceInfo>" +
    "  <MarginTop>" + marginTop + "cm</MarginTop>" +
    "  <MarginLeft>" + marginLeft + "cm</MarginLeft>" +
    "</DeviceInfo>";

byte[] bytes = localReport.Render("PDF", deviceInfo);
------------------------------------------------------------------

デザインで"本文"のSizeと余白を足しても
"レポート"のPageSizeを超えない用に設定!

2017年9月29日金曜日

ローカル レポートの処理中にエラーが発生しました。[MicrosoftReport]

"ローカル レポートの処理中にエラーが発生しました。"

Microsoftレポートのエラーは何でもこのエラーだから原因が分かり辛い・・・。

レポートのどの部分でエラーが発生しているか調べるために、
デザインの項目を削除しながら実行してエラー箇所を特定。

一番多い原因はレポートに設定している変数名が
流し込んでいるデータになかったり、
データ型が違ったり。

デザイン項目の一括削除は範囲選択して右クリックの削除!

2017年8月3日木曜日

Visual Studio 2017にレポートデザイナーをインストール [MicrosoftReport]

VisualStudio2017にMicrosoft Reportのレポートデザイナーをインストールする方法。

VisualStudio2017を起動して、
[ツール]→[拡張機能と更新]
を選択。


左のオンラインを選択

右上の検索に"Report rdlc"と入力

一覧に、
[Microsoft Rdlc Report Designer for Visual Studio]
が表示されるので、ダウンロードを選択


ダウンロード後、VisualStudioを閉じるとインストールが始まる。


これでやっとVisualStudio2017でMicrosoft Reportが使える!

2017年4月5日水曜日

データソースに最新の情報が反映されない [MicrosoftReport]

Microsoft Reportでデータソースのクラスの内容を変更した後、デザイナーのデータソースを"最新の情報に更新"としても反映されない・・・

ビルドをしないと反映されないようなのでビルドを行った後に試してみてもダメ・・・。




でもなぜか、VisualStadioを再起動した後に、"最新の情報に更新"を行ったら反映された。

色々作業をした後だと反映されなくなってしまうみたいだけど原因不明。
VisualStadioのバグかな?

しょうがないので内容を変更する都度、VisualStadioを再起動。

2017年3月30日木曜日

テーブルで1行おきに背景色を設定する方法 [MicrosoftReport]

流し込むデータにレコード番号の項目を設定しておく。

デザイナーでテーブルの行を選択し、プロパティの式を選択。


式に↓

 =IIf((Fields!RecordNo.Value Mod 2) = 0, "Transparent","WhiteSmoke")

のようにレコード番号が2で割り切れる場合と割り切れない場合で背景色を変える。

Transparent:背景色なし


で出来るけど・・・

印刷するのにすごく時間がかかるようになってしまう。
なんで・・・式ってそんなに遅くなるの・・・

ページ数が多くなる帳票では2行毎に出力するしかないかなぁ・・・

2017年3月23日木曜日

レポート機能でサーバー上にPDFを作成して開く [MicrosoftReport]

ReportViewerの印刷ボタンがIE以外だと出ない問題の解決策!

サーバー上にPDFを作って、それを別タブで開く。

-------------------------------------------------------------------------------------
using Microsoft.Reporting.WebForms;
~~~~~~~~~~~~~~~~~~~

//印刷データ
List<test> Datas = new List<test>();
~~印刷データの生成~~

LocalReport localReport = new LocalReport();

//デザインファイルの指定
localReport.ReportPath = @".\Report.rdlc";

//サブレポートがある場合は設定
localReport.SubreportProcessing += new SubreportProcessingEventHandler(SubreportProcessingEventHandler);

//データをセット
ReportDataSource reportDataSource = new ReportDataSource("DataSet_Design", Datas);

localReport.DataSources.Add(reportDataSource);

localReport.Refresh();

//PDFデータをバイト配列に格納
byte[] bytes = localReport.Render("PDF");

//tempフォルダにpdfを作成
string fileName = "Report" + DateTime.Now.ToString("yyyyMMddhhmmssfff") + ".pdf";

FileStream fs = new FileStream(@".\temp\" + fileName, FileMode.Create);

fs.Write(bytes, 0, bytes.Length);

fs.Close();

//pdfを別タブで開く
string url = @"\\temp\\" + fileName;

ClientScript.RegisterStartupScript(this.Page.GetType(), "OpenNewWindow",
    @"<script language=""javascript"">window.open('" + url + @"', 'TARGET');</script>");
-------------------------------------------------------------------------------------

ローカル環境にAcrobat ReaderなどのPDFを開く機能が必要になるけど、とても良い感じに。

これでASP.netもMicrosoftReportで十分。

2017年3月17日金曜日

'Tablix' に内部メンバーを含む詳細メンバーが含まれています。詳細メンバーには、静的な内部メンバーのみを含めることができます。 [MicrosoftReport]

MicrosoftReportで一覧の中に表を作成し、データを登録しビルドをしたら、

"tablix 'Tablix' に内部メンバーを含む詳細メンバーが含まれています。詳細メンバーには、静的な内部メンバーのみを含めることができます。"
とエラーが。

表はデフォルトでは行数がデータ数だけ表示されるようになっているので、一覧の中ではダメらしい。

データの行を右クリック→行グループ→グループの削除
でグループのみの削除


でグループを削除すれば1行しか表示しない静的なテーブルになってエラーは消えた。

2017年3月16日木曜日

ASP.netでデータソースにオブジェクトを設定できない [MicrosoftReport]

ASP.netでレポートの作成時に、オブジェクトをデータソースにしたいのに設定画面がデータベースへの接続しか出ない!

ASPだとオブジェクトをデータソースに出来ないの・・・

しょうがないので、クラスライブラリのプロジェクトを作って、ASPのプロジェクトから参照したら出来た。

 
なんで直接出来ないんだろ・・・。

2017年3月12日日曜日

Visual Studio 2017にレポート機能がない [MicrosoftReport]

Visual Studio 2017 Communityを入れてみたけどレポート機能がない!!

Visual Studio 2015で作った.rdlcファイル開いてもxml形式で開かれるだけ・・・
 コンパイルは出来るけど。

Visual Studio 2015でインストール時に
SQL Server Data Tools
を入れなきゃだったから2017でも入れてみたけどダメ・・・

SQL Server Data Toolsの最新バージョンを検索したら
まだVisual Studio 2015になってるから
https://msdn.microsoft.com/ja-jp/mt186501

2017はまだなのかなぁ・・・

早めに対応してくれると良いけど。


2017-08-03 追記
↓インストール方法発見!
https://yukamemo-ver3.blogspot.jp/2017/08/visualstudio2017-microsoftreport.html

2017年3月10日金曜日

ASP.netのレポートに独自クラスでデータをセット [MicrosoftReport]

レポートにデータを流し込むには、DataSetが一般的みたいだけど、
DeataSetだと文字列で指定しなきゃだから使い勝手が悪い・・・。
 
なのでクラスのListをデータに流し込む方法!

まずはオリジナルのクラスを作成。
----------------------------------------------------------
public class SampleDesign
{
    //Selectメソッドで流し込むデータを生成し返り値にする
    //引数は必要なものを必要なだけ定義する
    [DataObjectMethod(DataObjectMethodType.Select, true)]
    public List<SampleDesign> Select(int test)
    {
        List<SampleDesign> datas = new List<SampleDesign>();

        SampleDesign data;

        data = new SampleDesign();
        data.TestCD = 1;
        data.TestName = "表示名称";
        datas.Add(data);
       
        data = new SampleDesign();
        data.TestCD = 2;
        data.TestName = "表示名称2つ目";
        datas.Add(data);
        return datas;
    }

    //帳票の項目
    public int TestCD { get; set; }
    public string TestName { get; set; }
}
------------------------------------------------------

デザイン画面にReportViewerとScriptManagerとObjectDataSourceを配置する。
ビルドを行い、DataSourceのデータソースの定義で作ったクラスを選択する。



データメソッドの定義画面で、
SELECTタブのメソッドの選択で、クラス内に定義したSelectを選択する。



パラメーターの定義画面で、
Selectに必要なパラメーターの設定を行う。


パラメーターはObjectDataSource1.SelectParametersにセットすればSelectで受けられる。
--------------------------------------------------------------------
protected void Page_Load(object sender, EventArgs e)
{
    this.ObjectDataSource1.SelectParameters[0] =
           new Parameter("test", TypeCode.Int32, "4321");
}
--------------------------------------------------------------------

これでビルドして実行!!

2017年2月28日火曜日

ページ毎に明細と合計を表示 [MicrosoftReport]

Microsoftレポートでページ毎に明細と合計を表示したい場合、
単票形式のレポートで、サブレポートに明細を表示すれば出来る!

これなら一通りの帳票は出来そう。

単票形式で改ページ
https://yukamemo-ver3.blogspot.jp/2016/09/microsoft-report.html

サブレポート
https://yukamemo-ver3.blogspot.jp/2016/09/microsoft-report_19.html

ちょっとデザインしにくいけどVBReportは遅いしActiveReportは高いし、これでいいかも。

2017年2月17日金曜日

ASP.netのReportViewerにIE以外だと印刷ボタンが表示されない・・・[MicrosoftReport]

ASP.netのReportViewerを使用したらIEだと直接印刷ができるけど、
それ以外のEdgeとかChromeだと印刷ボタンが表示されない・・・

出す方法がないか調べたけどハードル高そう・・・

pdfでダウンロードボタン押すと、下にダウンロードファイルが表示されて
それ押せばそのままブラウザで表示されて印刷できるからまあいいかなぁ・・・。


2017/03/23追記
↓こちらの方法の方が良さそう
https://yukamemo-ver3.blogspot.jp/2017/03/pdf-microsoftreport.html

2015年12月4日金曜日

サブレポートへのパラメーターの渡し方 [MicrosoftReport]

サブレポートへのパラメーターの渡し方

○受け取り方


作成したサブレポートのレポートデータ→パラメーター
に新規追加でパラメーターを追加。

○渡し方


親レポートに配置したサブレポートを右クリック→サブレポートのプロパティ→パラメーター
にサブレポートで追加した名前のパラメーターを追加。

○プログラムでの受け取り方
void SubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
{
  string tokuisakicd = e.Parameters[0].Values[0];
}

これでページ毎に処理ができる!

2015年7月8日水曜日

単票形式で改ページ方法 [MicrosoftReport]

単票形式のデザインで改ページの仕方。

[ツールボックス]から[一覧]を選択し、デザインに配置。

[一覧]を画面いっぱいに広げて、テキストボックスなどのアイテムを配置。



プログラムからリストなどでセットした分だけページを表示してくれる。

------------------------------------------------
List dataList = new List();
Class data = new Class();
data.field = 111;
dataList.Add(data);
data = new Class();
data.field = 222;
dataList.Add(data);
DesignBindingSource.DataSource = dataList;
this.ReportViewer.RefreshReport();
------------------------------------------------

改ページに[一覧]を使うとは・・・。