protected override ResultStatus Save(PokeBall poke) { try { DataTable dtCurrent = (DataTable)gcMain.DataSource; gvMain.CloseEditor(); gvMain.UpdateCurrentRow(); DataTable dtChange = dtCurrent.GetChanges(); DataTable dtForAdd = dtCurrent.GetChanges(DataRowState.Added); DataTable dtForModified = dtCurrent.GetChanges(DataRowState.Modified); DataTable dtForDeleted = dtCurrent.GetChanges(DataRowState.Deleted); if (dtChange == null) { MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText); return(ResultStatus.Fail); } if (dtChange.Rows.Count == 0) { MessageDisplay.Warning("沒有變更資料,不需要存檔!", GlobalInfo.WarningText); return(ResultStatus.Fail); } //隱藏欄位賦值 foreach (DataRow dr in dtCurrent.Rows) { if (dr.RowState == DataRowState.Added || dr.RowState == DataRowState.Modified) { dr["SPNT1_W_TIME"] = DateTime.Now; dr["SPNT1_W_USER_ID"] = GlobalInfo.USER_ID; } } dtChange = dtCurrent.GetChanges(); ResultData result = new SPNT1().UpdateData(dtChange); if (result.Status == ResultStatus.Fail) { return(ResultStatus.Fail); } } catch (Exception ex) { WriteLog(ex); } return(ResultStatus.Success); }
/// <summary> /// 3.6 跨商品折抵比率 /// </summary> /// <param name="workbook"></param> /// <param name="is_eymd">yyyyMMdd</param> /// <param name="is_code"></param> /// <returns></returns> protected ResultStatus wf_40210_8(Workbook workbook, string is_eymd, List <string> is_code) { try { string reportId = "40210_8"; string reportName = "跨商品折抵比率"; ShowMsg(reportId + '-' + reportName + " 轉檔中..."); //1.get master dataTable DataTable dtTarget = dao40210.d_40210_8(is_eymd, is_code); if (dtTarget.Rows.Count <= 0) { MessageDisplay.Info(string.Format("{0},{1}-{2},讀取無任何資料!", is_eymd, reportId, reportName), GlobalInfo.ResultText); return(ResultStatus.Fail); } //1.1 write caption Worksheet worksheet = workbook.Worksheets[reportName]; //欄位(B1, B5) value=T150 T180 DataTable dtTemp = new SPNT1().ListData2(); worksheet.Cells[0, 1].SetValue(dtTemp.Rows[0]["tinv_150"]); worksheet.Cells[4, 1].SetValue(dtTemp.Rows[0]["tinv_180"]); //1.2 write data foreach (DataRow dr in dtTarget.Rows) { int rpt_col_num = dr["rpt_col_num"].AsInt() - 1; worksheet.Cells[1, rpt_col_num].SetValue(dr["spns1_150_avg_val"]); worksheet.Cells[2, rpt_col_num].SetValue(dr["spns1_150_std"]); worksheet.Cells[3, rpt_col_num].SetValue(dr["spns2_150_rate"]); worksheet.Cells[5, rpt_col_num].SetValue(dr["spns1_180_avg_val"]); worksheet.Cells[6, rpt_col_num].SetValue(dr["spns1_180_std"]); worksheet.Cells[7, rpt_col_num].SetValue(dr["spns2_180_rate"]); worksheet.Cells[8, rpt_col_num].SetValue(dr["spns2_max_rate"]); int col = dr["col"].AsInt(); int row_1 = dr["row_1"].AsInt(); decimal spns2_cp_day_rate = Math.Truncate(dr["spns2_cp_day_rate"].AsDecimal() * 100) / 100;//ken,要把小數點第二位直接去掉,不能用Round worksheet.Cells[row_1 - 1, col - 1].Value = spns2_cp_day_rate; int row_2 = dr["row_2"].AsInt(); decimal spns2_day_rate = Math.Truncate(dr["spns2_day_rate"].AsDecimal() * 100) / 100;//ken,要把小數點第二位直接去掉,不能用Round worksheet.Cells[row_2 - 1, col - 1].Value = spns2_day_rate; }//foreach(DataRow dr in dtTarget.Rows){ //2.get detail dataTable DataTable dtDetail = dao40210.d_40210_8_detail(is_eymd, is_code); if (dtDetail.Rows.Count <= 0) { MessageDisplay.Info(string.Format("{0},{1}-{2}明細,讀取無任何資料!", is_eymd, reportId, reportName), GlobalInfo.ResultText); return(ResultStatus.Fail); } //2.1 write data int rowIndex = 20 - 1; DateTime ls_ymd = DateTime.MinValue; foreach (DataRow dr in dtDetail.Rows) { int colIndex = dr["rpt_col_num"].AsInt(); DateTime spns1d_detial_ymd = dr["spns1d_detial_ymd"].AsDateTime("yyyyMMdd"); if (ls_ymd != spns1d_detial_ymd) { ls_ymd = spns1d_detial_ymd; rowIndex++; worksheet.Cells[rowIndex, 0].SetValue(spns1d_detial_ymd.ToString("yyyy/MM/dd")); } worksheet.Cells[rowIndex, colIndex - 1].SetValue(dr["spns1d_t_val"]); }//foreach(DataRow dr in dtDetail.Rows){ worksheet.ScrollTo(0, 0); flag++; return(ResultStatus.Success); } catch (Exception ex) { WriteLog(ex); return(ResultStatus.Fail); } }
protected override ResultStatus Export() { try { #region 輸入&日期檢核 if (string.Compare(txtStartDate.Text, txtEndDate.Text) > 0) { MessageDisplay.Error(CheckDate.Datedif, GlobalInfo.ErrorText); return(ResultStatus.Fail); } #endregion //0.檢查日期跟商品是否有選擇正確 //todo check if (cbxProd.CheckedItemsCount < 1) { MessageDisplay.Warning("請勾選商品!", GlobalInfo.WarningText); return(ResultStatus.Fail); } this.Cursor = Cursors.WaitCursor; this.Refresh(); Thread.Sleep(5); labMsg.Visible = true; ShowMsg("訊息:資料轉出中........"); //1.設定一些變數,把邏輯直接寫在該變數屬性內 List <string> listCode = new List <string>();//多筆,用逗號分隔 if (cbxProd.Items[0].CheckState == CheckState.Checked) { listCode.Add("'1'"); } if (cbxProd.Items[1].CheckState == CheckState.Checked) { listCode.Add("'5'"); } DataTable dtTemp = new SPNT1().ListData(); decimal chi_150 = dtTemp.Rows[0][0].AsDecimal(); decimal chi_180 = dtTemp.Rows[0][1].AsDecimal(); decimal v365 = dtTemp.Rows[0][2].AsDecimal(); //2.開始轉出資料 panFilter.Enabled = false; panProd.Enabled = false; //labMsg.Visible = true; //labMsg.Text = "訊息:資料轉出中........"; //this.Refresh(); //2.1 open xls string excelDestinationPath = PbFunc.wf_copy_file(_ProgramID, _ProgramID, ""); Workbook workbook = new Workbook(); workbook.LoadDocument(excelDestinationPath); flag = 0; //3.write sheet data if (cbxProd.Items[0].CheckState == CheckState.Checked || cbxProd.Items[1].CheckState == CheckState.Checked) { //3.1 現貨data wf_40210_3_old(workbook, StartDate, EndDate, listCode, TotalDayCount); //3.2 指數選擇權VSR wf_40210_4(workbook, StartDate, EndDate, listCode, chi_150, chi_180, v365, TotalDayCount); //3.3 期貨data wf_40210_5(workbook, StartDate, EndDate, listCode, TotalDayCount); //3.4 期貨契約PSR wf_40210_6(workbook, EndDate, listCode); //3.5 Delta折耗比率 wf_40210_7(workbook, StartDate, EndDate, listCode, TotalDayCount); //3.6 跨商品折抵比率 wf_40210_8(workbook, EndDate, listCode); }//if (cbxProd.Items[0].CheckState || cbxProd.Items[1].CheckState) //3.7 STC VSR計算 if (cbxProd.Items[2].CheckState == CheckState.Checked) { wf_40210_1(workbook, "STC", StartDate, EndDate, chi_150, chi_180, v365, TotalDayCount); } //3.8 ETC VSR計算 if (cbxProd.Items[3].CheckState == CheckState.Checked) { wf_40210_1(workbook, "ETC", StartDate, EndDate, chi_150, chi_180, v365, TotalDayCount); } if (flag <= 0) { File.Delete(excelDestinationPath); return(ResultStatus.Fail); } else { //存檔 workbook.SaveDocument(excelDestinationPath); ShowMsg("轉檔完成"); if (FlagAdmin) { System.Diagnostics.Process.Start(excelDestinationPath); } return(ResultStatus.Success); } } catch (Exception ex) { ShowMsg("轉檔錯誤"); WriteLog(ex); } finally { panFilter.Enabled = true; panProd.Enabled = true; labMsg.Text = ""; labMsg.Visible = false; this.Cursor = Cursors.Arrow; this.Refresh(); Thread.Sleep(5); } return(ResultStatus.Fail); }