using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Windows.Forms; using util = FCOMMON.Util; namespace FLG0000.LogData { public partial class List : FCOMMON.fBase { string fn_fpcolsize = ""; UserSetting userset = null; public List() { InitializeComponent(); //화면전용 설정파일 var usersetfile = new System.IO.FileInfo(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Setting", "LG0000.xml")); if (usersetfile.Directory.Exists == false) usersetfile.Directory.Create(); userset = new UserSetting(usersetfile.FullName); userset.Load(); if (userset.Xml.Exist() == false) userset.Xml.CreateFile(); fn_fpcolsize = util.MakeFilePath(util.CurrentPath, "formSetting", "fp_" + this.Name + ".ini"); this.dsPurchase.LogData.TableNewRow += Purchase_TableNewRow; this.FormClosed += __Closed; dtSD.KeyDown += dtSD_KeyDown; dtED.KeyDown += dtSD_KeyDown; //this.dv1.CellFormatting += dv1_CellFormatting; } void dtSD_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; var tb = sender as ToolStripTextBox; var input = tb.Text.Trim(); if (input == "") tb.Text = DateTime.Now.ToShortDateString(); else { string dt = string.Empty; if (!util.MakeDateString(input, out dt)) { FCOMMON.Util.MsgE("입력값이 올바르지 않습니다."); tb.SelectAll(); tb.Focus(); return; } else { tb.Text = dt; } } if (tb == dtSD) { dtED.Focus(); dtED.SelectAll(); } else { btSearch.PerformClick(); tb.SelectAll(); } } void __Closed(object sender, FormClosedEventArgs e) { } void Purchase_TableNewRow(object sender, DataTableNewRowEventArgs e) { e.Row["gcode"] = FCOMMON.info.Login.gcode; e.Row["pdate"] = DateTime.Now.ToShortDateString(); e.Row["wuid"] = FCOMMON.info.Login.no; e.Row["wdate"] = DateTime.Now; e.Row["lcode"] = "00"; } private void __Load(object sender, EventArgs e) { //로그타입(18) 가져오기 var logtypelist = FCOMMON.DBM.getCodeList("18"); this.cmbLogType.Items.Clear(); foreach (var item in logtypelist) { this.cmbLogType.Items.Add(string.Format("[{0}] {1}", item.Key, item.Value)); } //마지막에 사용한 값으로 자동 선택해준다. var preSelectedType = "[" + userset.lastType + "]"; for (int i = 0; i < cmbLogType.Items.Count; i++) { if (cmbLogType.Items[i].ToString().StartsWith(preSelectedType)) { cmbLogType.SelectedIndex = i; break; } } //선택된 자료가 없고 아이템이 잇다면 1번 항목으로 설정한다. if (cmbLogType.SelectedIndex < 0 && cmbLogType.Items.Count > 0) cmbLogType.SelectedIndex = 0; this.tbSearch.Text = string.Empty; this.dtSD.Text = DateTime.Now.AddDays(-30).ToShortDateString(); this.dtED.Text = DateTime.Now.ToShortDateString(); refreshData(); } private void refreshData() { try { var search = tbSearch.Text.Trim(); this.dsPurchase.LogData.Clear(); this.ta.Fill(this.dsPurchase.LogData, FCOMMON.info.Login.gcode, dtSD.Text, dtED.Text, "%" + search + "%"); this.dsPurchase.LogData.AcceptChanges(); showSummary(); FCOMMON.Util.FPColSizeLoad(ref this.fpSpread1, fn_fpcolsize); } catch (System.Exception ex) { System.Windows.Forms.MessageBox.Show(ex.Message); } FormattingData(); } void FormattingData() { //삭제컬럼인덱스 this.fpSpread1.SuspendLayout(); //var delindex = this.fpSpread1.ActiveSheet.Columns["isdel"].Index; //var statindex = this.fpSpread1.ActiveSheet.Columns["state"].Index; for (int i = 0; i < this.fpSpread1.ActiveSheet.Rows.Count; i++) { } this.fpSpread1.ResumeLayout(); } private void saveData(Boolean prompt) { this.Validate(); this.bs.EndEdit(); try { var cnt = this.ta.Update(this.dsPurchase.LogData); if (prompt) FCOMMON.Util.MsgI(string.Format("{0}건의 자료가 저장 되었습니다.", cnt)); } catch (Exception ex) { FCOMMON.Util.MsgE("저장 실패\n" + ex.Message); } } void showSummary() { decimal sum = 0; var list = this.dsPurchase.LogData.Select(this.bs.Filter, "") as DSLog.LogDataRow[]; // sum = list.Sum(t => t.pumamt); //foreach (dsPurchase.PurchaseRow dr in this.dsPurchase.Purchase.Rows) //if (!dr.IspumamtNull()) sum += dr.pumamt; lbSum.Text = list.Count().ToString("N0"); } private void btSearch_Click(object sender, EventArgs e) { refreshData(); } private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) { func_add(); } private void tbRequest_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) btSearch.PerformClick(); } private void btSave_Click(object sender, EventArgs e) { saveData(true); } private void lbEnd_Click(object sender, EventArgs e) { //end date var list = FCOMMON.DBM.getGroupList("pdate", "purchase", "pdate >= '" + dtSD.Text + "'", true); FCM0000.fLovOneItem f = new FCM0000.fLovOneItem(list); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { dtED.Text = f.Title; btSearch.PerformClick(); } } private void toolStripLabel3_Click(object sender, EventArgs e) { //사용자목록처리 if (tbSearch.Text.Trim() == "") { tbSearch.Text = FCOMMON.info.Login.nameK; } else { tbSearch.Text = string.Empty; } refreshData(); } private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e) { func_delete(); } void func_add() { var newdr = this.dsPurchase.LogData.NewLogDataRow();//.NewPurchaseRow(); var f = new LogData.Add(newdr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.dsPurchase.LogData.AddLogDataRow(newdr); int cnt = this.ta.Update(newdr); if (cnt == 0) FCOMMON.Util.MsgE("저장 실패\n\n다시 시도하시고 증상이 반복되면 chikyun.kim@amkor.co.kr 로 문의 주십시요"); newdr.AcceptChanges(); refreshData(); //181210 } else newdr.Delete(); } void func_delete() { var drv = bs.Current as DataRowView; if (drv == null) return; var dlg = FCOMMON.Util.MsgQ("현재 선택된 자료를 삭제하시겠습니까?"); if (dlg != System.Windows.Forms.DialogResult.Yes) return; bs.RemoveCurrent(); try { int cnt = ta.Update(this.dsPurchase); if (cnt != 1) FCOMMON.Util.MsgE(cnt.ToString() + "건의 자료가 삭제되었습니다."); } catch (Exception ex) { FCOMMON.Util.MsgE("delete error\n" + ex.Message); } } private void btFind_Click(object sender, EventArgs e) { var search = tbFind.Text.Trim(); search = search.Replace("*", "x"); if (tbFind.Text != search) tbFind.Text = search; try { if (search.isEmpty()) { this.bs.Filter = ""; tbFind.BackColor = Color.White; } else { search = search.Replace("'", "''"); string filter = "serial like ? or location like ? or reason like ? or result like ? or remark like ?"; filter = filter.Replace("?", "'%" + search + "%'"); this.bs.Filter = filter; tbFind.BackColor = Color.Lime; } tbFind.SelectAll(); tbFind.Focus(); showSummary(); } catch (Exception ex) { this.tbFind.BackColor = Color.Tomato; FCOMMON.Util.MsgE(ex.Message); } } private void tbFind_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) btFind.PerformClick(); } private void editDataToolStripMenuItem_Click(object sender, EventArgs e) { Func_Edit(); } void Func_Edit() { var drv = this.bs.Current as DataRowView; if (drv == null) return; var dr = drv.Row as DSLog.LogDataRow; var f = new LogData.Add(dr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { //존재하지 않는 sid 는 추가를 해준다. if (dr.RowState != DataRowState.Unchanged) { this.ta.Update(dr); dr.AcceptChanges(); } } else dr.RejectChanges(); } private void autoToolStripMenuItem_Click(object sender, EventArgs e) { FCOMMON.Util.FPColSizeAuto(this.fpSpread1); } private void resetToolStripMenuItem_Click(object sender, EventArgs e) { foreach (FarPoint.Win.Spread.Column col in this.fpSpread1.ActiveSheet.Columns) { col.Width = 100; } } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { FCOMMON.Util.FPColsizeSave(this.fpSpread1, fn_fpcolsize); } private void loadToolStripMenuItem_Click(object sender, EventArgs e) { FCOMMON.Util.FPColSizeLoad(ref this.fpSpread1, fn_fpcolsize); } private void toolStripButton2_Click(object sender, EventArgs e) { Func_Edit(); } private void exportDataToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog sd = new SaveFileDialog(); sd.Filter = "excel|*.xls"; sd.FileName = "logdata.xls"; if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { fpSpread1.SaveExcel(sd.FileName, FarPoint.Excel.ExcelSaveFlags.SaveAsViewed | FarPoint.Excel.ExcelSaveFlags.SaveAsFiltered | FarPoint.Excel.ExcelSaveFlags.NoFormulas | FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders); FCOMMON.Util.MsgI("다음 파일이 생성 되었습니다.\n\n" + sd.FileName); } } void func_copy() { var drv = this.bs.Current as DataRowView; if (drv == null) return; var dr = drv.Row as DSLog.LogItemRow; //현재 데이터를 입력하여 신규 추가를 한다. var newdr = this.dsPurchase.LogData.NewLogDataRow(); FCOMMON.Util.CopyData((System.Data.DataRow)dr, (System.Data.DataRow)newdr); newdr.gcode = FCOMMON.info.Login.gcode; newdr.pdate = DateTime.Now.ToShortDateString(); newdr.wdate = DateTime.Now; newdr.wuid = FCOMMON.info.Login.no; newdr.EndEdit(); var f = new LogData.Add(newdr); if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.dsPurchase.LogData.AddLogDataRow(newdr);//.Purchase.AddPurchaseRow(newdr); this.ta.Update(newdr); newdr.AcceptChanges(); } else newdr.Delete(); } private void toolStripButton1_Click_2(object sender, EventArgs e) { func_copy(); } private void makeRepeatToolStripMenuItem_Click(object sender, EventArgs e) { func_copy(); } private void 편집ToolStripMenuItem1_Click(object sender, EventArgs e) { Func_Edit(); } private void 삭제ToolStripMenuItem_Click(object sender, EventArgs e) { func_delete(); } private void 추가ToolStripMenuItem_Click(object sender, EventArgs e) { func_add(); } private void toolStripButton2_Click_1(object sender, EventArgs e) { this.Close(); } } }