본문 바로가기

SIMPLE C#/실전

[SIMPLE C#] 가계부(MDB)를 만들자 (04/보고서다중선택,차트)

youtu.be/KT52NG206t4

리포트를 2개 추가하고, 각 리포트를 하나의 뷰어화면에서 선택할 수 있도록 했습니다.

원형차트도 하나 추가 했습니다! (리포트의 차트도 옵션이 정말 많습니다)

보고서에서 바로 PDF 저장 기능을 만들었는데. 에러가 발생하네요!(__)

해결을 못해서! 좀더 찾아보고 해결되는 데로 메세지 남겨 놓겠습니다.


MoneyBookMDB_Day04.zip
7.63MB

private void toolStripButton2_Click(object sender, EventArgs e)
        {
            var datestr = lbDate.Text.Split('~');
            var sd = DateTime.Parse(datestr[0]);
            var ed = DateTime.Parse(datestr[1]);

            var rep = new Microsoft.Reporting.WinForms.LocalReport();

            //그래프선택
            if (cmbReport.SelectedIndex == 0)   //일별원장
            {
                rep.ReportPath =  @"Report1.rdlc";
            }
            else if (cmbReport.SelectedIndex == 1)    //기간별집계
            {
                rep.ReportPath = @"ReportSumDay.rdlc";
            }
            else if (cmbReport.SelectedIndex == 2) //지출현황(차트)
            {
                rep.ReportPath = @"ReportSumGrp.rdlc";
            }

            //데이터조회(DB -> Dataset)
            this.ta.Fill(this.DataSet1.Data, sd, ed);

            //데이터 정의
            var DsInfo = new Microsoft.Reporting.WinForms.ReportDataSource();
            DsInfo.Name = "DataSet1";
            DsInfo.Value = this.DataSet1.Data;
            rep.DataSources.Clear();
            rep.DataSources.Add(DsInfo);

            var p = new List<Microsoft.Reporting.WinForms.ReportParameter>();
            p.Add(new Microsoft.Reporting.WinForms.ReportParameter("DateS", datestr[0]));
            p.Add(new Microsoft.Reporting.WinForms.ReportParameter("DateE", datestr[1]));
            rep.SetParameters(p);

            var renderdata = rep.Render("PDF", "<DeviceInfo></DeviceInfo>");
            var saved = new SaveFileDialog();
            saved.Filter = "pdf|*.pdf";
            saved.FileName = "report.pdf";
            if(saved.ShowDialog() == DialogResult.OK)
            {
                System.IO.File.WriteAllBytes(saved.FileName, renderdata);
                Pub.log.Add("pdf save : " + saved.FileName);
                Util.MsgI("PDF 저장완료\n" + saved.FileName);
            }
            
        }