using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Collections; using DataDynamics.ActiveReports.Export.Xls; using DataDynamics.ActiveReports.Export.Pdf; using System.Threading; namespace IControls_FireManager { // // 엑티브레포트 뷰어를 제공합니다. 실제로 데이타는 각 폼에 따라 다르므로 뷰어는 UI 만 신경쓰면 됩니다 // XLS,PDF 버튼은 동적으로 생성합니다. // public partial class Form_ActiveReport_Viewer : Form { // 레포트 정보를 생성시 진행팝업창 public Form Popup_ReportCreate_Progress = new Form(); // 생성자 public void Initialize() { // 컴포넌트 초기화 InitializeComponent(); // 툴바에 메뉴 추가 this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator()); this.viewer_Report.Toolbar.ToolStrip.Items.Add("엑셀 내보내기"); this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator()); this.viewer_Report.Toolbar.ToolStrip.Items.Add("PDF 내보내기"); /// /// 이벤트 /// // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용) this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing); // 윈도우 스타일 변경 이벤트 핸들러 등록 _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event); // 툴바에 등록 this.viewer_Report.Toolbar.ToolStrip.Items[25].Click += new EventHandler(Form_ActiveReportViewer_XLS_Export_Click); this.viewer_Report.Toolbar.ToolStrip.Items[27].Click += new EventHandler(Form_ActiveReportViewer_PDF_Export_Click); /// /// 스타일 변경 /// UI_Style_Initialize(); // 프로그램 실행중 한번만 실행하도록 만듬 _Data.ActiveReportViewer_Enable = true; } // 레포트 (데이타베이스 쿼리 결과를 곧바로 받아서 전체 작업개수를 파악하지 않으며 가변 혹은 고정으로 출력되는 레포트) public Form_ActiveReport_Viewer( // 레포트 타입 ACTIVE_REPORT_DATA DATA_TYPE, // 쿼리 결과 데이타. 즉 실제로 레포트에 출력할 데이타를 전달받음 object ResultData, // 컬럼 텍스트명 및 길이 추출정보필드 // 가변레포트 : _Report_Column_Info 타입의 클래스의 리스트 정보 // 고정레포트 : 해당레포트포맷을 참조해서 인덱서로 구성된 클래스의 리스트 정보 ArrayList Column_Info, // 제목 string Title, // 개요 string Summary, // 컬럼 높이 (가변레포트에서만 사용) float ColumnHeight, // 폰트 사이즈 (가변레포트에서만 사용) int FontSize) { Initialize(); // 총 개수 int All_ProcessCount = _ActiveReport.Get_All_ProcessCount(ResultData); // 결과가 없다면 실행안함 if (ResultData == null || All_ProcessCount == 0) return; // 기존의 팝업창 종료 if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress); // 레포트 생성중입니다. 프로그레스 팝업창 Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Progress, Popup_Style.Normal, _Text.OK, 250, 200, _Text.ReportCreateProgress, All_ProcessCount); // 기존 스레드 종료 _Thread.Abort("ACTIVE_REPORT_DATA"); // 레포트 타입에 따라 폼이 결정된다 object Report = null; switch (DATA_TYPE) { // // 가변레포트 // case ACTIVE_REPORT_DATA.VARIABLE_HEIGHT: Report = new ActiveReport_Variable_Height(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); break; case ACTIVE_REPORT_DATA.VARIABLE_WIDTH: Report = new ActiveReport_Variable_Width(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); break; // // 고정레포트 // case ACTIVE_REPORT_DATA.OPER_GROUP: Report = new ActiveReport_OperGroup(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); break; case ACTIVE_REPORT_DATA.OPER_SET: Report = new ActiveReport_OperSet(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); break; case ACTIVE_REPORT_DATA.PAGE: Report = new ActiveReport_Page(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); break; } // 레포트 문서에다 실제 데이타를 출력하는 스레드 실행 if (Report != null) { this.viewer_Report.Document = ((DataDynamics.ActiveReports.ActiveReport)Report).Document; _Thread.Create("ACTIVE_REPORT_DATA", ActiveReport_DataBinding, Report); } } // // 레포트 생성 스레드 // public void ActiveReport_DataBinding(object ActiveReport_Documnet) { try { // Active Report Document Fetch ((DataDynamics.ActiveReports.ActiveReport)ActiveReport_Documnet).Run(); } catch (Exception e) { _Thread.Abort("ACTIVE_REPORT_DATA"); _Event.DebugView_SendMessage_Write(e.ToString()); } } // set active report class : 혹시 외부에서 접근가능할 루틴이 필요하다면 사용 public DataDynamics.ActiveReports.Document.Document Document { set { this.viewer_Report.Document = value; } } // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용) public void CreateForm_FormClosing(object sender, FormClosingEventArgs e) { // 기존 스레드 종료 _Thread.Abort("ACTIVE_REPORT_DATA"); // 프로그레스바 진행중에는 닫아 버리면 종료 if (Popup_ReportCreate_Progress != null) { _Popup.ProcessPopup_Enable = false; _Popup.ProcessPopup_Processbar_AllCnt = 0; _Popup.ProcessPopup_Processbar_Cnt = 0; Popup_ReportCreate_Progress.Close(); } // 툴바 클릭 이벤트 핸들러 해제 if (this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"] != null) this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_XLS_Export_Click); if (this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"] != null) this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_PDF_Export_Click); // 윈도우 스타일 변경 이벤트 핸들러 해제 _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event); // 프로그램 실행중 한번만 실행하도록 만듬 _Data.ActiveReportViewer_Enable = false; } // 윈도우 스타일 변경 이벤트 public void _Event_WindowStyleSet_SendMessage_Event() { UI_Style_Initialize(); } // 스타일 초기화 함수 private void UI_Style_Initialize() { } // // 파일 내보내기 // // XLS 파일로 내보내기 public void Form_ActiveReportViewer_XLS_Export_Click(object sender, EventArgs e) { // 다이얼로그 생성 SaveFileDialog SaveFileDialog_XLS = new SaveFileDialog(); // 확장자 넣기 SaveFileDialog_XLS.Filter = "(*.xls)|*.xls"; // 파일 세이브 다이얼로그 if (SaveFileDialog_XLS.ShowDialog() == DialogResult.OK) { if (SaveFileDialog_XLS.FileName.Substring(SaveFileDialog_XLS.FileName.Length - 3, 3).ToUpper() == "XLS") { XlsExport DocumentXlsExport = new DataDynamics.ActiveReports.Export.Xls.XlsExport(); DocumentXlsExport.Export(this.viewer_Report.Document, SaveFileDialog_XLS.FileName); } } } // PDF 파일로 내보내기 public void Form_ActiveReportViewer_PDF_Export_Click(object sender, EventArgs e) { // 다이얼로그 생성 SaveFileDialog SaveFileDialog_PDF = new SaveFileDialog(); // 확장자 넣기 SaveFileDialog_PDF.Filter = "(*.pdf)|*.pdf"; // 파일 세이브 다이얼로그 if (SaveFileDialog_PDF.ShowDialog() == DialogResult.OK) { if (SaveFileDialog_PDF.FileName.Substring(SaveFileDialog_PDF.FileName.Length - 3, 3).ToUpper() == "PDF") { PdfExport DocumentPdfExport = new DataDynamics.ActiveReports.Export.Pdf.PdfExport(); DocumentPdfExport.Export(this.viewer_Report.Document, SaveFileDialog_PDF.FileName); } } } } /* public partial class Form_ActiveReport_Viewer : Form { // 레포트 정보를 생성시 진행팝업창 public Form Popup_ReportCreate_Progress = new Form(); public int Popup_ReportCreate_Progress_Count_End = 0; // 최종카운트 // 레포트 문서 (엑티브 레포트 실제 클래스) ActiveReport_OperGroup OperGroup = null; ActiveReport_OperSet OperSet = null; // 수신기 아이디 public string TEMP_RECEIVER_ID = null; // 스레드 종료를 알리는 이벤트 public delegate void ThreadEnd_SendMessage_Handler(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE); public event ThreadEnd_SendMessage_Handler ThreadEnd_SendMessage_Event; public void ThreadEnd_SendMessage_Write(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE) { if (ThreadEnd_SendMessage_Event != null) { ThreadEnd_SendMessage_Event(AllWorkCount, DATA_TYPE); } } // 생성자 공통부 public void Initialize() { // 컴포넌트 초기화 InitializeComponent(); // 툴바에 메뉴 추가 this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator()); this.viewer_Report.Toolbar.ToolStrip.Items.Add("엑셀 내보내기"); this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator()); this.viewer_Report.Toolbar.ToolStrip.Items.Add("PDF 내보내기"); /// /// 이벤트 /// // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용) this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing); // 툴바에 등록 this.viewer_Report.Toolbar.ToolStrip.Items[25].Click += new EventHandler(Form_ActiveReportViewer_XLS_Export_Click); this.viewer_Report.Toolbar.ToolStrip.Items[27].Click += new EventHandler(Form_ActiveReportViewer_PDF_Export_Click); /// /// 스타일 변경 /// // 프로그램 실행중 한번만 실행하도록 만듬 _Data.ActiveReportViewer_Enable = true; } // // 생성자 (기존 타입 과 신규 추가한 가변 레포트용 생성자가 존재한다) // public Form_ActiveReport_Viewer( string RECEIVER_ID, ACTIVE_REPORT_DATA DATA_TYPE) { // 컴포넌트 초기화 InitializeComponent(); // 레포트 데이타 처리의 총개수를 알아내는 스레드 종료하는 이벤트 핸들러 등록 this.ThreadEnd_SendMessage_Event += new ThreadEnd_SendMessage_Handler(Form_ActiveReportViewer_ThreadEnd_SendMessage_Event); // 수신기 아이디 저장 TEMP_RECEIVER_ID = RECEIVER_ID; // 레포트 타입 지정 Create_ActiveReportData(DATA_TYPE); // 툴바에 메뉴 추가 this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator()); this.viewer_Report.Toolbar.ToolStrip.Items.Add("엑셀 내보내기"); this.viewer_Report.Toolbar.ToolStrip.Items.Add(new ToolStripSeparator()); this.viewer_Report.Toolbar.ToolStrip.Items.Add("PDF 내보내기"); // 툴바에 등록 this.viewer_Report.Toolbar.ToolStrip.Items[25].Click += new EventHandler(Form_ActiveReportViewer_XLS_Export_Click); this.viewer_Report.Toolbar.ToolStrip.Items[27].Click += new EventHandler(Form_ActiveReportViewer_PDF_Export_Click); } public Form_ActiveReport_Viewer( ACTIVE_REPORT_DATA DATA_TYPE, object ResultData, // 쿼리 결과 데이타. 즉 실제로 레포트에 출력할 데이타를 전달받음 ArrayList Column_Info, // 컬럼 텍스트명 및 길이 추출정보필드 , _Report_Column_Info 타입의 클래스의 리스트 정보 string Title, // 제목 string Summary, // 개요 float ColumnHeight, // 컬럼 높이 int FontSize) { Initialize(); // 총 개수 int All_ProcessCount = _ActiveReport.Get_All_ProcessCount(ResultData); // 결과가 없다면 실행안함 if (ResultData == null || All_ProcessCount == 0) return; // 기존의 팝업창 종료 if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress); // 레포트 생성중입니다. 프로그레스 팝업창 Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Progress, Popup_Style.Normal, _Text.OK, 250, 200, _Text.ReportCreateProgress, All_ProcessCount); // 기존 스레드 종료 _Thread.Abort("ACTIVE_REPORT_DATA"); // 레포트 타입에 구분되어 실행 switch (DATA_TYPE) { case ACTIVE_REPORT_DATA.VARIABLE_HEIGHT: ActiveReport_Variable_Height Report_ActiveReport_Variable_Height = new ActiveReport_Variable_Height(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); this.viewer_Report.Document = Report_ActiveReport_Variable_Height.Document; _Thread.Create("ACTIVE_REPORT_DATA", ActiveReport_DataBinding, Report_ActiveReport_Variable_Height); break; case ACTIVE_REPORT_DATA.VARIABLE_WIDTH: ActiveReport_Variable_Width Report_ActiveReport_Variable_Width = new ActiveReport_Variable_Width(Popup_ReportCreate_Progress, ResultData, Column_Info, Title, Summary, ColumnHeight, FontSize); this.viewer_Report.Document = Report_ActiveReport_Variable_Width.Document; _Thread.Create("ACTIVE_REPORT_DATA", ActiveReport_DataBinding, Report_ActiveReport_Variable_Width); break; } } // set active report class : 혹시 외부에서 접근가능할 루틴이 필요하다면 사용 public DataDynamics.ActiveReports.Document.Document Document { set { this.viewer_Report.Document = value; } } // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용) public void CreateForm_FormClosing(object sender, FormClosingEventArgs e) { // 프로그레스바 진행중에는 닫아 버리면 종료 if (Popup_ReportCreate_Progress != null) { _Popup.ProcessPopup_Enable = false; _Popup.ProcessPopup_Processbar_AllCnt = 0; _Popup.ProcessPopup_Processbar_Cnt = 0; Popup_ReportCreate_Progress.Close(); } // 툴바 클릭 이벤트 핸들러 해제 if(this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"] != null) this.viewer_Report.Toolbar.ToolStrip.Items["엑셀 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_XLS_Export_Click); if (this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"] != null) this.viewer_Report.Toolbar.ToolStrip.Items["PDF 내보내기"].Click -= new EventHandler(Form_ActiveReportViewer_PDF_Export_Click); // 레포트 데이타 처리의 총개수를 알아내는 스레드 종료하는 이벤트 핸들러 해제 this.ThreadEnd_SendMessage_Event -= new ThreadEnd_SendMessage_Handler(Form_ActiveReportViewer_ThreadEnd_SendMessage_Event); // 프로그램 실행중 한번만 실행하도록 만듬 _Data.ActiveReportViewer_Enable = false; } // 데이타 타입에 따라 레포트 문서 타입이 결정됩니다. public void Create_ActiveReportData(ACTIVE_REPORT_DATA DATA_TYPE) { // 레포트 준비중이라는 팝업창을 생성 if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress); Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.ReportReady, 0); // 데이타 처리 개수를 알아내기 위해 스레드로 돌린다 switch (DATA_TYPE) { // 연동 그룹 case ACTIVE_REPORT_DATA.OPER_GROUP: { Thread WorkingThread_Popup = new Thread(new ThreadStart(Ready_For_AllCnt_OPER_GROUP)); WorkingThread_Popup.Start(); } break; // 연동 설정 case ACTIVE_REPORT_DATA.OPER_SET: { Thread WorkingThread_Popup = new Thread(new ThreadStart(Ready_For_AllCnt_OPER_SET)); WorkingThread_Popup.Start(); } break; } } // // 전체 작업개수를 알아내기 위한 스레드 // // 연동 그룹 public void Ready_For_AllCnt_OPER_GROUP() { // 작업량 예상 Popup_ReportCreate_Progress_Count_End = 0; DataRowCollection DB_TABLE_GROUP_ForPopup = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_GROUP", "GROUP_ID", TEMP_RECEIVER_ID)); if (DB_TABLE_GROUP_ForPopup != null && DB_TABLE_GROUP_ForPopup.Count != 0) { foreach (DataRow GROUP in DB_TABLE_GROUP_ForPopup) { // 그룹 DataRowCollection DB_TABLE_DETAIL_ForPopup = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Gruop_DeviceTable(GROUP[1].ToString(), TEMP_RECEIVER_ID)); if (DB_TABLE_DETAIL_ForPopup != null && DB_TABLE_DETAIL_ForPopup.Count != 0) Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TABLE_DETAIL_ForPopup.Count; // 디바이스가 하나도 없다면 if (DB_TABLE_DETAIL_ForPopup.Count == 0) Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + 1; } } // 이벤트 발생 ThreadEnd_SendMessage_Write(Popup_ReportCreate_Progress_Count_End, ACTIVE_REPORT_DATA.OPER_GROUP); } // 연동 설정 public void Ready_For_AllCnt_OPER_SET() { // 작업량 예상 Popup_ReportCreate_Progress_Count_End = 0; DataRowCollection DB_TABLE_MAP = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_MAP", "MAP_ID", TEMP_RECEIVER_ID)); if (DB_TABLE_MAP != null && DB_TABLE_MAP.Count != 0) { foreach (DataRow MAP in DB_TABLE_MAP) { // 입력 (디바이스) DataRowCollection DB_TABLE_MAP_IN = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Map_ProcessTable(MAP[1].ToString(), "I", TEMP_RECEIVER_ID)); if (DB_TABLE_MAP_IN != null && DB_TABLE_MAP_IN.Count != 0) { Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TABLE_MAP_IN.Count; } // 출력 (디바이스) DataRowCollection DB_TB_MAP_OUT = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Map_ProcessTable(MAP[1].ToString(), "O", "D", TEMP_RECEIVER_ID)); if (DB_TB_MAP_OUT != null && DB_TB_MAP_OUT.Count != 0) { Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TB_MAP_OUT.Count; } // 출력 (그룹) DataRowCollection DB_MAP_OUT_GROUP = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Map_ProcessTable(MAP[1].ToString(), "O", "G", TEMP_RECEIVER_ID)); if (DB_MAP_OUT_GROUP != null && DB_MAP_OUT_GROUP.Count != 0) foreach (DataRow DETAIL in DB_MAP_OUT_GROUP) { DataRowCollection DB_TABLE_TB_DEVICE_TYPE = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_GROUP", "GROUP_ID", DETAIL[5].ToString(), TEMP_RECEIVER_ID)); if (DB_TABLE_TB_DEVICE_TYPE != null && DB_TABLE_TB_DEVICE_TYPE.Count != 0) { Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + DB_TABLE_TB_DEVICE_TYPE.Count; } } // 입력 출력이 없는 경우 if (DB_TABLE_MAP_IN.Count == 0 && DB_TB_MAP_OUT.Count == 0 && DB_MAP_OUT_GROUP.Count == 0) Popup_ReportCreate_Progress_Count_End = Popup_ReportCreate_Progress_Count_End + 1; } } // 이벤트 발생 ThreadEnd_SendMessage_Write(Popup_ReportCreate_Progress_Count_End, ACTIVE_REPORT_DATA.OPER_SET); } // 스레드가 종료되면 호출되는 함수 delegate void CallBack_Form_SetObject(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE); public void Form_ActiveReportViewer_ThreadEnd_SendMessage_Event(int AllWorkCount, ACTIVE_REPORT_DATA DATA_TYPE) { if (this.InvokeRequired) { CallBack_Form_SetObject d = new CallBack_Form_SetObject(Form_ActiveReportViewer_ThreadEnd_SendMessage_Event); this.Invoke(d, new object[] { AllWorkCount, DATA_TYPE }); } else { // 기존의 팝업창을 종료하고 프로그레스바 팝업창으로 재생성 // if (Popup_ReportCreate_Progress != null) _Crossthread.Form_Close(Popup_ReportCreate_Progress); // 작업 데이타가 없다면 경고 문구 출력후 종료 if (AllWorkCount == 0) { Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 350, 150, _Text.NotReportCreateData, 0); } else { Popup_ReportCreate_Progress = _Popup.Create(Popup_Type.Progress, Popup_Style.Normal, _Text.OK, 250, 200, _Text.ReportCreateProgress, AllWorkCount); switch (DATA_TYPE) { case ACTIVE_REPORT_DATA.OPER_GROUP: { // 레포트 문서 지정 OperGroup = new ActiveReport_OperGroup(TEMP_RECEIVER_ID, Popup_ReportCreate_Progress); this.viewer_Report.Document = OperGroup.Document; // 실제 레포트 작업 스레드 생성 Thread WorkingThread = new Thread(new ThreadStart(ActiveReport_DataBinding_OperGroup)); WorkingThread.Start(); } break; case ACTIVE_REPORT_DATA.OPER_SET: { // 레포트 문서 지정 OperSet = new ActiveReport_OperSet(TEMP_RECEIVER_ID, Popup_ReportCreate_Progress); this.viewer_Report.Document = OperSet.Document; // 실제 레포트 작업스레드 생성 Thread WorkingThread = new Thread(new ThreadStart(ActiveReport_DataBinding_OperSet)); WorkingThread.Start(); } break; } } } } // // 레포트 생성 스레드 // public void ActiveReport_DataBinding_OperGroup() { try { OperGroup.Run(); } catch (Exception e) { _Event.DebugView_SendMessage_Write(e.ToString()); } } public void ActiveReport_DataBinding_OperSet() { try { OperSet.Run(); } catch (Exception e) { _Event.DebugView_SendMessage_Write(e.ToString()); } } public void ActiveReport_DataBinding(object ActiveReport_Documnet) { try { // Reflection 을 이용해서 타입을 추출 Type ptype = ActiveReport_Documnet.GetType(); // 레포트 실행 (타입별 실행되는 레포트 문서가 틀리다) if (ptype == typeof(ActiveReport_Variable_Width)) ((ActiveReport_Variable_Width)ActiveReport_Documnet).Run(); else if (ptype == typeof(ActiveReport_Variable_Height)) ((ActiveReport_Variable_Height)ActiveReport_Documnet).Run(); } catch (Exception e) { _Event.DebugView_SendMessage_Write(e.ToString()); } } // // 파일 내보내기 // // XLS 파일로 내보내기 public void Form_ActiveReportViewer_XLS_Export_Click(object sender, EventArgs e) { // 다이얼로그 생성 SaveFileDialog SaveFileDialog_XLS = new SaveFileDialog(); // 확장자 넣기 SaveFileDialog_XLS.Filter = "(*.xls)|*.xls"; // 파일 세이브 다이얼로그 if (SaveFileDialog_XLS.ShowDialog() == DialogResult.OK) { if (SaveFileDialog_XLS.FileName.Substring(SaveFileDialog_XLS.FileName.Length - 3, 3).ToUpper() == "XLS") { XlsExport DocumentXlsExport = new DataDynamics.ActiveReports.Export.Xls.XlsExport(); DocumentXlsExport.Export(this.viewer_Report.Document, SaveFileDialog_XLS.FileName); } } } // PDF 파일로 내보내기 public void Form_ActiveReportViewer_PDF_Export_Click(object sender, EventArgs e) { // 다이얼로그 생성 SaveFileDialog SaveFileDialog_PDF = new SaveFileDialog(); // 확장자 넣기 SaveFileDialog_PDF.Filter = "(*.pdf)|*.pdf"; // 파일 세이브 다이얼로그 if (SaveFileDialog_PDF.ShowDialog() == DialogResult.OK) { if (SaveFileDialog_PDF.FileName.Substring(SaveFileDialog_PDF.FileName.Length - 3, 3).ToUpper() == "PDF") { PdfExport DocumentPdfExport = new DataDynamics.ActiveReports.Export.Pdf.PdfExport(); DocumentPdfExport.Export(this.viewer_Report.Document, SaveFileDialog_PDF.FileName); } } } } */ }