Пример #1
0
        public virtual CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport()
        {
            NyuukinYoteiHyou_Report rpt = new NyuukinYoteiHyou_Report();

            rpt.Site = this.Site;
            return(rpt);
        }
        protected override void PrintSec()
        {
            // レコード定義を行う
            DataTable table = CheckData();

            try
            {
                if (table == null)
                {
                    return;
                }
                //xsdファイルを保存します。

                //DB ---→ xsd ----→ クリスタルレポート

                //というデータの流れになります
                //table.TableName = ProID;
                //table.WriteXmlSchema("DataTable" + ProID + ".xsd");

                //①保存した.xsdはプロジェクトに追加しておきます。
                DialogResult            ret;
                NyuukinYoteiHyou_Report Report = new NyuukinYoteiHyou_Report();

                //DataTableのDetailOnが1かどうかで詳細セクションを印字するかどうかの設定を
                //している(セクションエキスパート)

                switch (PrintMode)
                {
                case EPrintMode.DIRECT:
                    if (StartUpKBN == "1")
                    {
                        ret = DialogResult.No;
                    }
                    else
                    {
                        //Q208 印刷します。”はい”でプレビュー、”いいえ”で直接プリンターから印刷します。
                        ret = bbl.ShowMessage("Q208");
                        if (ret == DialogResult.Cancel)
                        {
                            return;
                        }
                    }
                    Report.PrintOptions.PaperSize        = CrystalDecisions.Shared.PaperSize.PaperA4;
                    Report.PrintOptions.PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Landscape;

                    // 印字データをセット
                    Report.SetDataSource(table);
                    Report.Refresh();

                    if (ret == DialogResult.Yes)
                    {
                        //プレビュー
                        var previewForm = new Viewer();
                        previewForm.CrystalReportViewer1.ShowPrintButton = true;
                        previewForm.CrystalReportViewer1.ReportSource    = Report;
                        //previewForm.CrystalReportViewer1.Zoom(1);
                        previewForm.ShowDialog();
                    }
                    else
                    {
                        int marginLeft = 360;
                        CrystalDecisions.Shared.PageMargins margin = Report.PrintOptions.PageMargins;
                        margin.leftMargin   = marginLeft;   // mmの指定をtwip単位に変換する
                        margin.topMargin    = marginLeft;
                        margin.bottomMargin = marginLeft;   //mmToTwip(marginLeft);
                        margin.rightMargin  = marginLeft;
                        Report.PrintOptions.ApplyPageMargins(margin);
                        // プリンタに印刷
                        Report.PrintToPrinter(0, false, 0, 0);
                    }
                    break;

                case EPrintMode.PDF:
                    if (bbl.ShowMessage("Q204") != DialogResult.Yes)
                    {
                        return;
                    }
                    string filePath = "";
                    if (!ShowSaveFileDialog(InProgramNM, out filePath))
                    {
                        return;
                    }

                    // 印字データをセット
                    Report.SetDataSource(table);
                    Report.Refresh();

                    bool result = OutputPDF(filePath, Report);

                    //PDF出力が完了しました。
                    bbl.ShowMessage("I202");

                    break;
                }

                //プログラム実行履歴
                InsertLog(Get_L_Log_Entity());
            }
            finally
            {
            }

            //更新後画面そのまま
            detailControls[0].Focus();
        }