This commit is contained in:
chi
2023-12-19 11:49:57 +09:00
parent 4334725900
commit 6e925857b3
18 changed files with 1881 additions and 268 deletions

View File

@@ -4,6 +4,8 @@ using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.ServiceModel.Activation.Configuration;
using System.ServiceModel.Configuration;
using System.Text;
using System.Windows.Forms;
using util = FCOMMON.Util;
@@ -81,10 +83,10 @@ namespace FCM0000
else
{
if (skey.StartsWith("%") == false) skey = "%" + skey;
if (skey.EndsWith("%") == false) skey += "%";
if (skey.EndsWith("%") == false) skey += "%";
}
this.ta.FillNoImage(this.dsMSSQL.Items, FCOMMON.info.Login.gcode, cateSearch,skey);
this.ta.FillNoImage(this.dsMSSQL.Items, FCOMMON.info.Login.gcode, cateSearch, skey);
}
else
this.ta.FillDupCheck(this.dsMSSQL.Items, FCOMMON.info.Login.gcode, cateSearch);
@@ -132,7 +134,7 @@ namespace FCM0000
tbSearch.Focus();
return;
}
refreshData();
}
@@ -425,5 +427,125 @@ namespace FCM0000
{
if (e.KeyCode == Keys.Enter) toolStripButton2.PerformClick();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
var msg = "이 기능은 엑셀 파일에서 품목정보를 읽어들여 업데이트 하는 기능 입니다\n" +
"엑셀파일의 열 구성은 다음과 같이 합니다\n" +
"SID,품명,모델,단가,공급처,제조\n" +
"1번줄에는 제목 줄이며, 실제 자료는 2번 줄 부터 시작합니다\n" +
"SID는 9자리이며, (SID/품명이) 없는 자료는 입력되지 않습니다\n1번시트에 데이가 있어야 합니다\n계속 할까요?";
if (util.MsgQ(msg) != DialogResult.Yes) return;
var od = new OpenFileDialog();
od.Filter = "excel|*.xlsx|allfiles|*.*";
if (od.ShowDialog() != DialogResult.OK) return;
libxl.Book book;// = new libxl.BinBook();
book = new libxl.XmlBook();
book.setKey(FCOMMON.info.libxlCompany, FCOMMON.info.libxlKey);
var ta = new dsMSSQLTableAdapters.ItemsTableAdapter();
var dt = new dsMSSQL.ItemsDataTable();
try
{
book.load(od.FileName);
if (book.sheetCount() < 1)
{
util.MsgE("1번 시트가 없습니다. 파일을 확인하세요");
return;
}
var sheet = book.getSheet(0);
var maxrow = sheet.lastRow();
var icnt = 0;
var ucnt = 0;
if (util.MsgQ($"입력을 시작할까요? 전체({maxrow})건\n시간이 오래 걸릴 수 있으므로 기다려 주세요") != DialogResult.Yes) return;
var f = new Form();
f.Text = "data input";
f.Size = new Size(400, 100);
f.ControlBox = false;
f.Padding = new Padding(10, 10, 10, 10);
var p = new ProgressBar();
p.Dock = DockStyle.Fill;
p.Maximum = maxrow;
p.Value = 0;
f.StartPosition = FormStartPosition.CenterScreen;
f.Controls.Add(p);
f.Show();
Application.DoEvents();
for (int i = 1; i < maxrow; i++)
{
var sid = sheet.readStr(i, 0); if (sid.isEmpty()) continue;
var name = sheet.readStr(i, 1); if (name.isEmpty()) continue;
var model = sheet.readStr(i, 2); if (model.isEmpty()) model = name;
if (name.Equals(model)) model = ".";
f.Text = $"입력중 기다려주세요({i}/{maxrow})";
p.Value = i;
decimal price = 0;
if (sheet.cellType(i, 3) == libxl.CellType.CELLTYPE_STRING)
{
var vprice = sheet.readStr(i, 3).Replace(",", "");
decimal.TryParse(vprice, out price);
}
else
{
price = (decimal)(sheet.readNum(i, 3));
}
var supp = sheet.readStr(i, 4);
var manu = sheet.readStr(i, 5);
var dr = ta.GetBySID(FCOMMON.info.Login.gcode, sid).FirstOrDefault();
if (dr == null)
{
dr = dt.NewItemsRow();
dr.gcode = FCOMMON.info.Login.gcode;
dr.disable = false;
dr.import = "1";
dr.sid = sid;
dr.name = name;
dr.model = model;
dr.supply = supp;
dr.manu = manu;
dr.price = price;
dr.wdate = DateTime.Now;
dr.wuid = FCOMMON.info.Login.no;
dt.AddItemsRow(dr);
icnt += ta.Update(dr);
//icnt += 1;
}
else
{
if (dr.name.Equals(name) == false) dr.name = name;
if (dr.model.isEmpty() || model.Length > dr.model.Length) dr.model = model;
if (price > 0) dr.price = price;
if (supp.isEmpty() == false) dr.supply = supp;
if (manu.isEmpty() == false) dr.manu = manu;
dr.EndEdit();
ucnt += ta.Update(dr);
//ucnt += 1;
}
if(i % 2 ==0) Application.DoEvents();
}
f.Dispose();
util.MsgI($"입력수:{icnt}\n변경수:{ucnt}");
}
catch (Exception ex)
{
FCOMMON.Util.MsgE(ex.Message);
return;
}
ta.Dispose();
}
}
}