using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.OleDb; using System.Drawing; using System.IO; using System.Net.NetworkInformation; using System.Threading; using System.Windows.Forms; using Microsoft.Win32; using Oracle.ManagedDataAccess.Client; using Sap.Data.SQLAnywhere; using SuperMap.RealEstate.Windows.Controls.NetSocket; using SuperMap.RealEstate.Windows.Forms; using Business = SuperMap.RealEstate.SaleStore.Storage.Business; namespace InventoryTool { public partial class InventoryToolMain : FormBase { BackgroundWorker bgWorker = new BackgroundWorker(); #region 公用项 static string dbip = "", dbport = "", dbname = "", dbuser = "", dbpass = "", conname = "", serverpartcode = "", shopcode = "", machinecode = ""; string SqlString = string.Empty; string connString = string.Empty; static string cashRegisterIP = ""; string odbcString = string.Empty; string machineName = string.Empty; string machineIP = string.Empty; string strConnection = string.Empty; string endAccountDate = string.Empty; string serverpartshop_id = string.Empty; string noBarCode = string.Empty; string macAddress = string.Empty; OleDbConnection con = null; #endregion #region 初始化页面 public InventoryToolMain() { string filePath = Path.GetFullPath("InventoryData.mdb"); strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Persist Security Info=False"; con = new OleDbConnection(strConnection); InitializeComponent(); bgWorker.WorkerReportsProgress = true; bgWorker.WorkerSupportsCancellation = true; bgWorker.DoWork += DoWork_Handler; bgWorker.ProgressChanged += ProgressChanged_Handler; bgWorker.RunWorkerCompleted += RunWorkerCompleted_Handler; QueryOracle(); label11.Text = ""; Thread msgthr = new Thread(new ParameterizedThreadStart(msgtxt => { MessageBox.Show((string)msgtxt); })); } #endregion #region 初始化 public OracleConnection QueryOracle() { try { //判断没有set.ini文件,那么就新建set.ini文件 if (File.Exists("D:\\HighWayPosSoft\\setup.ini")) { FileStream fs = new FileStream("D:\\HighWayPosSoft\\setup.ini", FileMode.Open); StreamReader m_streamReader = new StreamReader(fs); m_streamReader.BaseStream.Seek(0, SeekOrigin.Begin); string strLine = m_streamReader.ReadLine(); do { string[] split = strLine.Split('='); string b = split[0]; if (b == "dbip") dbip = split[1]; else if (b == "dbport") dbport = split[1]; else if (b == "dbname") dbname = split[1]; else if (b == "dbuser") dbuser = split[1]; else if (b == "dbpass") dbpass = split[1]; else if (b == "conname") conname = split[1]; else if (b == "serverpartcode") serverpartcode = split[1]; else if (b == "shopcode") shopcode = split[1]; else if (b == "machinecode") machinecode = split[1]; strLine = m_streamReader.ReadLine(); } while (strLine != null); m_streamReader.Close(); fs.Close(); } else if (File.Exists("D:\\HighWayPosSoft\\set.ini")) { //如果已经存在set.ini文件,则直接读取它信息 FileStream fs = new FileStream("D:\\HighWayPosSoft\\set.ini", FileMode.Open); StreamReader STRreader = new StreamReader(fs); STRreader.BaseStream.Seek(0, SeekOrigin.Begin); string STRline = STRreader.ReadLine(); do { string[] split = STRline.Split('='); string i = split[0]; if (i == "dbip") dbip = split[1]; else if (i == "dbport") dbport = split[1]; else if (i == "dbname") dbname = split[1]; else if (i == "dbuser") dbuser = split[1]; else if (i == "dbpass") dbpass = split[1]; else if (i == "conname") conname = split[1]; else if (i == "serverpartcode") serverpartcode = split[1]; else if (i == "shopcode") shopcode = split[1]; else if (i == "machinecode") machinecode = split[1]; STRline = STRreader.ReadLine(); } while (STRline != null); STRreader.Close(); fs.Close(); } else { ServerSetting frm = new ServerSetting(); frm.ShowDialog(); if (frm.DialogResult == DialogResult.OK) { dbip = frm.Serverip; dbport = frm.Serverport; conname = frm.Connname; dbuser = frm.User; dbpass = frm.Pass; } } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); } connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = " + dbip + ")(PORT = " + dbport + "))(CONNECT_DATA = (SERVICE_NAME = " + conname + "))); User Id = " + dbuser + "; Password=" + dbpass + ";"; OracleConnection conn = new OracleConnection(connString); string MACAddress = GetMACINFO(); #region 根据当前的Mac地址获取收银机IP和编号 //try //{ // conn.Open(); // string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM HIGHWAY_EXCHANGE.T_MACHINEINFO A WHERE A.SHOPCODE=(" + // "SELECT SHOPCODE FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE B.SHOPNAME ='" + cobSHOPCODE.Text + "') ORDER BY MACHINECODE ASC"; // ArrayList listCompanyID = new ArrayList(); // OracleCommand Com = new OracleCommand(comStr, conn); // OracleDataReader rd = Com.ExecuteReader(); // if (rd.HasRows) // { // while (rd.Read()) // { // listCompanyID.Add(rd["MACHINECODE"].ToString()); // } // listCompanyID.Insert(0, "全部"); // CobMACHINECODE.DataSource = listCompanyID; // rd.Dispose(); // } // conn.Close(); //} //catch (Exception ex) //{ // LogHelper.WriteServiceLog(ex.Message); // conn.Close(); //} #endregion #region 根据业态获取门店信息 try { conn.Open(); string comStr = "SELECT * FROM T_SHOPMESSAGE WHERE BUSINESSTYPE IN ('1000','1005','9001') ORDER BY SERVERPARTSHOP_ID ASC"; ArrayList listshopID = new ArrayList(); OracleCommand Com = new OracleCommand(comStr, conn); OracleDataReader rd = Com.ExecuteReader(); if (rd.HasRows) { con.Open(); while (rd.Read()) { listshopID.Add(rd["SHOPNAME"].ToString()); string shopnameSql = "SELECT * FROM SHOPMESSAGE WHERE SERVERPARTSHOP_ID=" + Convert.ToInt64(rd["SERVERPARTSHOP_ID"]); OleDbCommand comshop = new OleDbCommand(shopnameSql, con); OleDbDataReader drshop = comshop.ExecuteReader(); if (!drshop.HasRows) { string insert1Sql = "INSERT INTO SHOPMESSAGE (ServerpartShop_id,SHOPCODE,SHOPNAME,BUSINESSTYPE) values (" + Convert.ToInt64(rd["SERVERPARTSHOP_ID"]) + ",'" + Convert.ToString(rd["SHOPCODE"]) + "','" + Convert.ToString(rd["SHOPNAME"]) + "','" + Convert.ToString(rd["BUSINESSTYPE"]) + "')"; OleDbCommand com = new OleDbCommand(insert1Sql, con); com.ExecuteNonQuery(); } } con.Close(); listshopID.Insert(0, "请选择门店"); cobSHOPCODE.DataSource = listshopID; rd.Dispose(); } conn.Close(); CommodityInfo.Focus(); } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); conn.Close(); } #endregion CommodityInfo.Focus(); return conn; } #endregion #region 清空盘点数据按钮事件 private void button1_Click(object sender, EventArgs e) { try { if (bgWorker.IsBusy) { MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } DialogResult dr = MessageBox.Show("盘点数据清空后将不可恢复!", "清空盘点数据", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (dr == DialogResult.OK) { con.Open(); string delSql = "delete * from CommodityInventory;delete * from SHOPMESSAGE"; OleDbCommand comm = new OleDbCommand(delSql, con); comm.ExecuteNonQuery(); con.Close(); MessageBox.Show("数据已清空", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } else { } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); con.Close(); } CommodityInfo.Focus(); } #endregion #region 查询 private void btnSearch_Click(object sender, EventArgs e) { try { if (bgWorker.IsBusy) { MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (cobSHOPCODE.Text == "请选择门店") { MessageBox.Show("请先选择门店!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (CobMACHINECODE.Text == "请选择收银机") { MessageBox.Show("请先选择收银机号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { con.Open(); string selectSql = @"select ID,CommodityBarCode,CommodityName, iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum, iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory where CheckDate='" + AccountDate.Text + "'"; OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); //创建适配对象 DataTable dt = new DataTable(); //新建表对象 da.Fill(dt); //用适配对象填充表对象 if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { dt.Rows[i]["ID"] = i + 1; } } dataGridView1.DataSource = dt; con.Close(); dataGridView1.MultiSelect = false; dataGridView1.Rows[dataGridView1.RowCount - 1].Selected = true; dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1]; ChangeColor(); } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); con.Close(); } } private void Search_Click(object sender, EventArgs e) { if (bgWorker.IsBusy) { MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (cobSHOPCODE.Text == "请选择门店" || CobMACHINECODE.Text == "请选择收银机" || cobSHOPCODE.Text == "" || CobMACHINECODE.Text == "") { SelectDate frm1 = new SelectDate(); frm1.Text = "盘点查询门店选择"; frm1.ShowDialog(); if (frm1.DialogResult == DialogResult.OK) { Search.Enabled = false; con.Open(); string selectSql = @"select ID,CommodityBarCode,CommodityName, iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum, iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory where CheckDate='" + frm1.CheckDate + "'"; //MessageBox.Show(selectSql); OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); //创建适配对象 DataTable dt = new DataTable(); //新建表对象 da.Fill(dt); //用适配对象填充表对象 if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { dt.Rows[i]["ID"] = i + 1; } dataGridView1.DataSource = dt; //MessageBox.Show(dt.Rows.Count.ToString()); dataGridView1.MultiSelect = false; dataGridView1.Rows[dataGridView1.RowCount - 1].Selected = true; dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1]; } con.Close(); CommodityInfo.Focus(); ChangeColor(); Search.Enabled = true; } else { this.btnSearch_Click(sender, e); CommodityInfo.Focus(); } } else { this.btnSearch_Click(sender, e); CommodityInfo.Focus(); } } #endregion #region 扫描枪盘点 private void CommodityInfo_KeyDown(object sender, KeyEventArgs e) { try { if (e.KeyCode == Keys.Enter)//判断回车键 { if (bgWorker.IsBusy) { MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); commodityname.Focus(); commodityname.SelectAll(); return; } if (cobSHOPCODE.Text == "请选择门店") { MessageBox.Show("请先选择门店!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); commodityname.Focus(); commodityname.SelectAll(); } else if (CobMACHINECODE.Text == "请选择收银机") { MessageBox.Show("请先选择收银机号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); commodityname.Focus(); commodityname.SelectAll(); } else if (cobCHECKMODE.Text == "请选择盘点模式") { MessageBox.Show("请先选择盘点模式!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); commodityname.Focus(); commodityname.SelectAll(); } else //保存盘点信息 { commodityname.Text = ""; string commodityInfo = CommodityInfo.Text; string[] sArray = commodityInfo.Split(','); CommodityBarCode.Text = sArray[0].ToString(); CommodityNum.Text = sArray[1].ToString(); InventoryDate.Text = sArray[2].ToString(); con.Open(); string selectSql = "select * from CommodityInventory where CommodityBarCode='" + CommodityBarCode.Text + "' and CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID = " + serverpartshop_id + ""; string updateSql = ""; OleDbDataAdapter da = new OleDbDataAdapter(selectSql, con); DataTable dt = new DataTable(); da.Fill(dt); con.Close(); string barcode = @"select serverpartshop_id,commodity_name from DBA.t_commodityex" + " where COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'"; SAConnection conany = new SAConnection(odbcString); conany.Open(); SACommand _barcode = new SACommand(barcode, conany); SADataReader barcodereader = _barcode.ExecuteReader(); if (barcodereader.HasRows) { if (barcodereader.Read()) { commodityname.Text = Convert.ToString(barcodereader["commodity_name"]); } } if (cobCHECKMODE.Text == "门店盘点")//门店盘点模式 { string sellDate = @"SELECT SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,Max(SELLDATA_DATE) as InventoryDate FROM DBA.t_commodityex a, DBA.t_selldata b WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND b.SELLDATA_DATE > '" + AccountDate.Text + "'" + " AND A.SERVERPARTSHOP_ID= " + serverpartshop_id + " AND b.SELLDATA_DATE <= '" + InventoryDate.Text + "' AND A.COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'"; SACommand sellCommand = new SACommand(sellDate, conany); SADataReader sellRead = sellCommand.ExecuteReader(); if (sellRead.HasRows)//判断是否有流水 { if (sellRead.Read()) { if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { if (Convert.ToDateTime(dr["InventoryDate"]) <= Convert.ToDateTime(InventoryDate.Text)) { updateSql = @"update CommodityInventory set InventoryNum=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text)) + ",SellCount=" + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",InventoryDate='" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "' where CommodityBarCode='" + CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id; con.Open(); OleDbCommand comm = new OleDbCommand(updateSql, con); comm.ExecuteNonQuery(); con.Close(); } else { updateSql = @"update CommodityInventory set InventoryNum=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) + Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + " where CommodityBarCode='" + CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id; con.Open(); OleDbCommand comm = new OleDbCommand(updateSql, con); comm.ExecuteNonQuery(); con.Close(); } } conany.Close(); } else { string insertSql = "insert into CommodityInventory (CommodityBarCode,CommodityName,InventoryNum,SellCount,TotalCount,InventoryDate,ServerpartShop_id," + "CheckDate) values ('" + CommodityBarCode.Text + "','" + commodityname.Text + "'," + CommodityNum.Text + "," + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + "," + (Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",'" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')"; con.Open(); OleDbCommand comm = new OleDbCommand(insertSql, con); comm.ExecuteNonQuery(); con.Close(); conany.Close(); } } } else //没有流水记录 { //string barcode = @"select serverpartshop_id,commodity_name from DBA.t_commodityex // where COMMODITY_BARCODE = '" + CommodityBarCode.Text + "'"; //OdbcCommand _barcode = new OdbcCommand(barcode, conany); //OdbcDataReader barcodereader = _barcode.ExecuteReader(); if (barcodereader.HasRows) { string insertSql = @"insert into CommodityInventory (CommodityBarCode,InventoryNum,SellCount,TotalCount,InventoryDate,ServerpartShop_id ,CheckDate) values ('" + CommodityBarCode.Text + "'," + CommodityNum.Text + "," + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + "," + (CommodityNum.Text + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"])) + ",'" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')"; conany.Close(); con.Open(); OleDbCommand comm = new OleDbCommand(insertSql, con); comm.ExecuteNonQuery(); con.Close(); //commodityname.Text = barcodereader["commodity_name"].ToString(); } else { noBarCode += CommodityBarCode.Text; CommodityInfo.Clear(); CommodityInfo.Focus(); return; } noBarCode += CommodityBarCode.Text; CommodityInfo.Clear(); CommodityInfo.Focus(); return; } } else //仓库盘点模式 { if (barcodereader.HasRows) //检查条码是否存在 { if (dt.Rows.Count > 0) //有盘点记录 { foreach (DataRow dr in dt.Rows) { if (Convert.ToDateTime(dr["InventoryDate"]) < Convert.ToDateTime(InventoryDate.Text)) //盘点录入时间大于上一条记录 { updateSql = "update CommodityInventory set CheckDesc=" + (Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) + Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) + Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + ",InventoryDate='" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "' where CommodityBarCode='" + CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id; con.Open(); OleDbCommand comm = new OleDbCommand(updateSql, con); comm.ExecuteNonQuery(); con.Close(); } else //盘点录入时间小于上一条记录 { updateSql = "update CommodityInventory set CheckDesc=" + (Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) + Convert.ToInt32(CommodityNum.Text)) + ",TotalCount=" + (Convert.ToInt32(dr["InventoryNum"].ToString() == "" ? "0" : dr["InventoryNum"]) + Convert.ToInt32(CommodityNum.Text) + Convert.ToInt32(dr["CheckDesc"].ToString() == "" ? "0" : dr["CheckDesc"]) + Convert.ToInt32(dr["SellCount"].ToString() == "" ? "0" : dr["SellCount"])) + " where CommodityBarCode='" + CommodityBarCode.Text + "' AND CheckDate='" + AccountDate.Text + "' AND SERVERPARTSHOP_ID=" + serverpartshop_id; con.Open(); OleDbCommand comm = new OleDbCommand(updateSql, con); comm.ExecuteNonQuery(); con.Close(); } } conany.Close(); } else //没有盘点记录 { string insertSql = "insert into CommodityInventory (CommodityBarCode,CommodityName,CheckDesc,TotalCount,InventoryDate,ServerpartShop_id ,CheckDate) values ('" + CommodityBarCode.Text + "','" + commodityname.Text + "'," + CommodityNum.Text + "," + (Convert.ToInt32(CommodityNum.Text)) + ",'" + Convert.ToDateTime(InventoryDate.Text).ToString("yyyy/MM/dd HH:mm:ss") + "'," + serverpartshop_id + ",'" + AccountDate.Text + "')"; con.Open(); OleDbCommand comm = new OleDbCommand(insertSql, con); comm.ExecuteNonQuery(); con.Close(); conany.Close(); } this.btnSearch_Click(sender, e); CommodityInfo.Clear(); CommodityInfo.Focus(); } else { noBarCode += CommodityBarCode.Text; CommodityInfo.Clear(); CommodityInfo.Focus(); return; } } this.btnSearch_Click(sender, e); CommodityInfo.Clear(); CommodityInfo.Focus(); return; } } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); con.Close(); } CommodityInfo.Focus(); } #endregion #region 数据校对 private void btnCheck_Click(object sender, EventArgs e) { try { if (bgWorker.IsBusy) { MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } if (cobSHOPCODE.Text == "请选择门店" || cobSHOPCODE.Text == "") { MessageBox.Show("请先选择门店!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (CobMACHINECODE.Text == "请选择收银机" || CobMACHINECODE.Text == "") { MessageBox.Show("请先选择收银机号!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { SADataReader reader = null; SAConnection conany = new SAConnection(odbcString); conany.Open(); string commodity = @"SELECT a.COMMODITY_NAME AS CommodityName,a.COMMODITY_BARCODE AS CommodityBarCode,0 AS InventoryNum, SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount,Max(SELLDATA_DATE) as InventoryDate FROM DBA.t_commodityex a, DBA.t_selldata b WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND SELLDATA_DATE > '" + AccountDate.Text + "' AND A.SERVERPARTSHOP_ID='" + serverpartshop_id + "' GROUP BY a.COMMODITY_NAME,a.COMMODITY_BARCODE"; SACommand command = new SACommand(commodity, conany); reader = command.ExecuteReader(); DataTable dt = new DataTable(); //新建表对象 dt.Load(reader); con.Open(); string selectSql = @" select CommodityBarCode, iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum, iif(isnull(SellCount),0,SellCount) AS SellCount, iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate from CommodityInventory where InventoryDate > '" + AccountDate.Text + "'"; OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con); DataTable dtInventory = new DataTable(); daInventory.Fill(dtInventory); foreach (DataRow sell in dt.Rows) { bool has = false; DataRow[] InvDr = dtInventory.Select("CommodityBarCode='" + sell["CommodityBarCode"].ToString() + "'"); if (InvDr.Length > 0) { string sellDate = @"SELECT SUM(b.SELLCOUNT) AS SellCount,0 as TotalCount, Max(SELLDATA_DATE) as InventoryDate FROM DBA.t_commodityex a, DBA.t_selldata b WHERE a.COMMODITY_CODE = b.COMMODITY_CODE AND SELLDATA_DATE > '" + AccountDate.Text + "'" + "AND A.SERVERPARTSHOP_ID= " + serverpartshop_id + " AND b.SELLDATA_DATE <= '" + InvDr[0]["InventoryDate"].ToString() + "' AND A.COMMODITY_BARCODE = '" + sell["CommodityBarCode"].ToString() + "'"; SACommand sellCommand = new SACommand(sellDate, conany); SADataReader sellRead = sellCommand.ExecuteReader(); if (sellRead.HasRows) { has = true; string updateSql = @"update CommodityInventory set SellCount=" + Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + ",TotalCount=" + (Convert.ToInt32(sellRead["SellCount"].ToString() == "" ? "0" : sellRead["SellCount"]) + Convert.ToInt32(InvDr[0]["InventoryNum"])) + " where CommodityBarCode='" + sell["CommodityBarCode"].ToString() + "'"; OleDbCommand comm = new OleDbCommand(updateSql, con); comm.ExecuteNonQuery(); } } if (!has) { string insertSql = @"insert into CommodityInventory (CommodityBarCode,CommodityName,InventoryNum,SellCount,TotalCount,InventoryDate,CheckDate) values ('" + sell["CommodityBarCode"] + "','" + sell["CommodityName"].ToString() + "',0," + Convert.ToInt32(sell["SellCount"]) + "," + Convert.ToInt32(sell["SellCount"]) + ",'" + sell["InventoryDate"] + "','" + AccountDate.Text + "')"; OleDbCommand comm = new OleDbCommand(insertSql, con); comm.ExecuteNonQuery(); } } conany.Close(); con.Close(); if (!string.IsNullOrEmpty(noBarCode)) { MessageBox.Show("收银机不存在条码为:'" + noBarCode + "'的商品", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("数据校验成功!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } this.btnSearch_Click(sender, e); CommodityInfo.Clear(); CommodityInfo.Focus(); } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); con.Close(); CommodityInfo.Focus(); } } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { CommodityInfo.Focus(); ChangeColor(); } #endregion #region 门店选项改变事件 private void cobSHOPCODE_SelectedIndexChanged_1(object sender, EventArgs e) { OracleConnection conn = new OracleConnection(connString); #region 根据当前门店获取收银机IP和编号 try { if (cobSHOPCODE.Text != "请选择门店") { conn.Open(); string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS,MACHINENAME FROM HIGHWAY_EXCHANGE.T_MACHINEINFO A WHERE A.SHOPCODE=(" + "SELECT SHOPCODE FROM HIGHWAY_EXCHANGE.T_SHOPMESSAGE B WHERE B.SHOPNAME ='" + cobSHOPCODE.Text + "') ORDER BY MACHINECODE ASC"; ArrayList listCompanyID = new ArrayList(); OracleCommand Com = new OracleCommand(comStr, conn); OracleDataReader rd = Com.ExecuteReader(); if (rd.HasRows) { while (rd.Read()) { listCompanyID.Add(rd["MACHINECODE"].ToString()); } listCompanyID.Insert(0, "请选择收银机"); CobMACHINECODE.DataSource = listCompanyID; rd.Dispose(); ArrayList listmode = new ArrayList(); listmode.Insert(0, "请选择盘点模式"); listmode.Add("门店盘点"); listmode.Add("仓库盘点"); cobCHECKMODE.DataSource = listmode; } conn.Close(); } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); conn.Close(); } #endregion CommodityInfo.Focus(); } #endregion #region 收银机号选项改变事件 private void CobMACHINECODE_SelectedIndexChanged_1(object sender, EventArgs e) { try { if (CobMACHINECODE.Text != "请选择收银机") { OracleConnection conn = new OracleConnection(connString); conn.Open(); string comStr = "SELECT MACHINECODE,MACHINE_IP,MACHINE_MACADDRESS FROM T_MACHINEINFO WHERE MACHINECODE = '" + CobMACHINECODE.Text + "'"; ArrayList listCompanyID = new ArrayList(); OracleCommand Com = new OracleCommand(comStr, conn); OracleDataReader rd = Com.ExecuteReader(); if (rd.HasRows) { while (rd.Read()) { cashRegisterIP = rd["MACHINE_IP"].ToString(); macAddress = rd["MACHINE_MACADDRESS"].ToString(); } } conn.Close(); #region 根据Mac地址获取收银机IP和名称 try { conn.Open(); string registerIPSql = "SELECT MACHINE_IP,MACHINENAME,SERVERPARTCODE,SHOPCODE FROM T_MACHINEINFO WHERE MACHINE_MACADDRESS = '" + macAddress + "'"; OracleCommand registerIPCom = new OracleCommand(registerIPSql, conn); OracleDataReader registerIPrd = registerIPCom.ExecuteReader(); if (registerIPrd.HasRows) { while (registerIPrd.Read()) { machineIP = registerIPrd["MACHINE_IP"].ToString(); machineName = registerIPrd["MACHINENAME"].ToString(); serverpartcode = registerIPrd["SERVERPARTCODE"].ToString(); shopcode = registerIPrd["SHOPCODE"].ToString(); } } conn.Close(); } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); conn.Close(); } #endregion //odbcString = "DSN=anysql1;UID=dba;PWD=sql;"; //odbcString = "driver={RY Sybase SQL Anywhere 11.0};Dsn=" + machineName + ";UID=dba;PWD=sql;" + // "servername=" + machineName + ";commlinks='SharedMemory,TCPIP{host=" + machineIP + "}'"; odbcString = "host=" + machineIP + ";server=" + machineName + ";userid=dba;password=sql"; #region 获取门店编号 try { SAConnection conany = new SAConnection(odbcString); conany.Open(); string serverpartshopid = @"select serverpartshop_id from DBA.t_shopmessage where serverpartcode='" + serverpartcode + "' and shopcode=" + shopcode + ""; SACommand _serverpartshopid = new SACommand(serverpartshopid, conany); SADataReader shopidreader = _serverpartshopid.ExecuteReader(); if (shopidreader.HasRows) { while (shopidreader.Read()) { serverpartshop_id = shopidreader["serverpartshop_id"].ToString(); } } conany.Close(); } catch (Exception ex) { MessageBox.Show("收银机连接失败,请重新选择!"); throw new Exception("shopcode " + ex.Message); } #endregion #region 获取最近的结账日期 try { string checkDate = @"SELECT ENDACCOUNT_DATE FROM DBA.t_endaccount where ENDACCOUNT_DATE > Getdate()-5 ORDER BY ENDACCOUNT_DATE DESC"; SAConnection conany = new SAConnection(odbcString); conany.Open(); AccountDate.Items.Clear(); SACommand _checkDate = new SACommand(checkDate, conany); SADataReader checkDateRd = _checkDate.ExecuteReader(); if (checkDateRd.HasRows) { while (checkDateRd.Read()) { AccountDate.Items.Add(checkDateRd[0].ToString()); //endAccountDate = Convert.ToDateTime(checkDateRd["ENDACCOUNT_DATE"]).ToString("yyyy/MM/dd HH:mm:ss"); } } conany.Close(); AccountDate.SelectedIndex = 0; } catch (Exception ex) { throw new Exception("endaccount" + ex.Message); } #endregion } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); } CommodityInfo.Focus(); } #endregion private void AccountDate_SelectedIndexChanged_1(object sender, EventArgs e) { CommodityInfo.Focus(); } private void cobCHECKMODE_SelectedIndexChanged_1(object sender, EventArgs e) { CommodityInfo.Focus(); } #region 获取MAC地址 public static string GetMACINFO() { string key = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\"; string MacAddress = string.Empty; try { NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet && adapter.GetPhysicalAddress().ToString().Length != 0) { string fRegistryKey = key + adapter.Id + "\\Connection"; RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false); if (rk != null) { string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString(); int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0)); if (fPnpInstanceID.Length > 3 && fPnpInstanceID.Substring(0, 3) == "PCI") { MacAddress = adapter.GetPhysicalAddress().ToString(); for (int i = 1; i < 6; i++) { MacAddress = MacAddress.Insert(3 * i - 1, ":"); } break; } } } } } catch (Exception ex) { //这里写异常的处理 } return MacAddress; } #endregion #region 上传数据到服务区 private void btnUpLoad_Click(object sender, EventArgs e) { if (!bgWorker.IsBusy) { bgWorker.RunWorkerAsync(); } #region 改用多线程 //int temp = 0; //int tmp = 0; //int i = 0; ////if (cobSHOPCODE.Text == "请选择门店") ////{ //// MessageBox.Show("请先选择门店!"); ////} ////else if (CobMACHINECODE.Text == "请选择收银机") ////{ //// MessageBox.Show("请先选择收银机号!"); ////} ////else ////{ //SelectDate frm1 = new SelectDate(); //frm1.Text = "盘点上传门店选择"; //frm1.ShowDialog(); //if (frm1.DialogResult == DialogResult.OK) //{ // progressBar1.Visible = true; // label11.Visible = true; // progressBar1.Value = 0; // try // { // string log = string.Empty; // con.Open(); // string selectSql = @" // select CommodityBarCode,iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum, // iif(isnull(SellCount),0,SellCount) AS SellCount, // iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, // iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,CheckDate // from CommodityInventory // where CheckDate = '" + frm1.CheckDate + "'"; // OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con); // DataTable dtInventory = new DataTable(); // daInventory.Fill(dtInventory); // con.Close(); // foreach (DataRow dr in dtInventory.Rows) // { // string updateSql = @"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A SET A.CUROVERPLUSCOUNT = " + dr["TotalCount"] + // ",A.CHECKDESC = '仓库数量:" + dr["CheckDesc"] + "' WHERE COMMODITY_BARCODE = '" + dr["CommodityBarCode"] + // "' AND exists(select 1 from SALESTORE_STORAGE.T_CHECKCOMMODITY b where a.CHECKCOMMODITY_ID = b.CHECKCOMMODITY_ID and " + // " b.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss') and b.SERVERPARTSHOP_ID = " + frm1.Shop_id + // " and b.CHECK_STATE = 0 and b.CHECK_TYPE IN(1000,3000))"; // string selectStr = @"SELECT A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A ,SALESTORE_STORAGE.T_CHECKCOMMODITY B // WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND COMMODITY_BARCODE='" + dr["CommodityBarCode"] + // "' AND B.SERVERPARTSHOP_ID=" + frm1.Shop_id + " AND B.CHECK_STATE = 0 AND B.CHECK_TYPE IN(1000,3000)" + // " AND B.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss')"; // Business.CHECKCOMMODITYDETAIL _CHECKCOMMODITYDETAIL = new Business.CHECKCOMMODITYDETAIL(this.Transaction); // DataTable dt = _CHECKCOMMODITYDETAIL.ExecuteDataTable(selectStr, null); // i++; // label11.Text = "正在上传盘点数据,进度:" + (int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100) + "%"; // //Application.DoEvents(); // progressBar1.Value = (int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100); // if (dt.Rows.Count > 0) // { // _CHECKCOMMODITYDETAIL.ExecuteNonQuery(updateSql, null); // string updateSql1 = "UPDATE CommodityInventory SET Flag = 0 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'"; // con.Open(); // OleDbCommand comm = new OleDbCommand(updateSql1, con); // comm.ExecuteNonQuery(); // con.Close(); // tmp++; // } // else // { // string updateSql1 = "UPDATE CommodityInventory SET Flag = 1 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'"; // con.Open(); // OleDbCommand comm = new OleDbCommand(updateSql1, con); // comm.ExecuteNonQuery(); // con.Close(); // log += dr["CommodityBarCode"].ToString() + ",\r\n"; // temp++; // } // } // // string checkcommodity=@" INSERT INTO SALESTORE_STORAGE.T_CHECKCOMMODITY (CHECKPERSON,CHECKDATE,SERVERPART_ID, // // SERVERPARTSHOP_ID,CHECKCOMMODITY_DESC,CHECK_STATE,CHECK_PASSPORT_GUID,CHECK_TYPE) // // VALUES ()" // Business.CHECKCOMMODITY _CHECKCOMMODITY = new Business.CHECKCOMMODITY(this.Transaction); // label11.Text = "盘点数据上传完成!"; // if (!string.IsNullOrEmpty(log)) // { // MessageBox.Show("盘点数据上传结束!成功" + tmp + "条;失败" + temp + "条;\r\n失败原因:本期盘点无入库记录。点击确定查看失败记录详情"); // con.Open(); // string selectSqllocal = @"select ID,CommodityBarCode,CommodityName, // iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum, // iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, // iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory // where CheckDate='" + frm1.CheckDate + "'AND Flag = 1"; // OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象 // DataTable dt1 = new DataTable(); //新建表对象 // da.Fill(dt1); //用适配对象填充表对象 // dataGridView1.DataSource = dt1; // con.Close(); // CommodityInfo.Focus(); // ChangeColor(); // label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条;失败" + temp + "条,失败原因:无入库记录"; // progressBar1.Visible = false; // } // else // { // MessageBox.Show("盘点数据上传完成!上传成功" + tmp + "条盘点记录"); // con.Open(); // string selectSqllocal = @"select ID,CommodityBarCode,CommodityName, // iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum, // iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, // iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory // where CheckDate='" + frm1.CheckDate + "'"; // OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象 // DataTable dt1 = new DataTable(); //新建表对象 // da.Fill(dt1); //用适配对象填充表对象 // dataGridView1.DataSource = dt1; // con.Close(); // CommodityInfo.Focus(); // label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条。"; // progressBar1.Visible = false; // } // } // catch (Exception ex) // { // LogHelper.WriteServiceLog(ex.Message); // con.Close(); // } //} #endregion } #endregion #region 多线程上传数据,避免程序假死 private void ProgressChanged_Handler(object sender, ProgressChangedEventArgs args) { progressBar1.Visible = true; label11.Visible = true; progressBar1.Value = args.ProgressPercentage; label11.Text = "正在上传盘点数据,进度:" + args.ProgressPercentage.ToString() + "%"; } private void DoWork_Handler(object sender, DoWorkEventArgs args) { BackgroundWorker worker = sender as BackgroundWorker; try { int temp = 0; int tmp = 0; int i = 0; SelectDate frm1 = new SelectDate(); frm1.Text = "盘点上传门店选择"; frm1.ShowDialog(); if (frm1.DialogResult == DialogResult.OK) { string log = string.Empty; con.Open(); string selectSql = @" select CommodityBarCode,iif(isnull(InventoryNum),0,InventoryNum) AS InventoryNum, iif(isnull(SellCount),0,SellCount) AS SellCount, iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,CheckDate from CommodityInventory where CheckDate = '" + frm1.CheckDate + "'"; OleDbDataAdapter daInventory = new OleDbDataAdapter(selectSql, con); DataTable dtInventory = new DataTable(); daInventory.Fill(dtInventory); con.Close(); foreach (DataRow dr in dtInventory.Rows) { string updateSql = @"UPDATE SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A SET A.CUROVERPLUSCOUNT = " + dr["TotalCount"] + ",A.CHECKDESC = '仓库数量:" + dr["CheckDesc"] + "' WHERE COMMODITY_BARCODE = '" + dr["CommodityBarCode"] + "' AND exists(select 1 from SALESTORE_STORAGE.T_CHECKCOMMODITY b where a.CHECKCOMMODITY_ID = b.CHECKCOMMODITY_ID and " + " b.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss') and b.SERVERPARTSHOP_ID = " + frm1.Shop_id + " and b.CHECK_STATE = 0 and b.CHECK_TYPE IN(1000,3000))"; string selectStr = @"SELECT A.* FROM SALESTORE_STORAGE.T_CHECKCOMMODITYDETAIL A ,SALESTORE_STORAGE.T_CHECKCOMMODITY B WHERE A.CHECKCOMMODITY_ID = B.CHECKCOMMODITY_ID AND COMMODITY_BARCODE='" + dr["CommodityBarCode"] + "' AND B.SERVERPARTSHOP_ID=" + frm1.Shop_id + " AND B.CHECK_STATE = 0 AND B.CHECK_TYPE IN(1000,3000)" + " AND B.CHECKDATE = TO_DATE('" + dr["CheckDate"] + "','yyyy/MM/dd HH24:mi:ss')"; Business.CHECKCOMMODITYDETAIL _CHECKCOMMODITYDETAIL = new Business.CHECKCOMMODITYDETAIL(this.Transaction); DataTable dt = _CHECKCOMMODITYDETAIL.ExecuteDataTable(selectStr, null); if (dt.Rows.Count > 0) { _CHECKCOMMODITYDETAIL.ExecuteNonQuery(updateSql, null); string updateSql1 = "UPDATE CommodityInventory SET Flag = 0 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'"; con.Open(); OleDbCommand comm = new OleDbCommand(updateSql1, con); comm.ExecuteNonQuery(); con.Close(); tmp++; } else { string updateSql1 = "UPDATE CommodityInventory SET Flag = 1 WHERE CommodityBarCode = '" + dr["CommodityBarCode"].ToString() + "'"; con.Open(); OleDbCommand comm = new OleDbCommand(updateSql1, con); comm.ExecuteNonQuery(); con.Close(); log += dr["CommodityBarCode"].ToString() + ",\r\n"; temp++; } i++; //label11.Text = "正在上传盘点数据,进度:" + (int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100) + "%"; //Application.DoEvents(); worker.ReportProgress((int)((i / Convert.ToDecimal(dtInventory.Rows.Count.ToString())) * 100)); } // string checkcommodity=@" INSERT INTO SALESTORE_STORAGE.T_CHECKCOMMODITY (CHECKPERSON,CHECKDATE,SERVERPART_ID, // SERVERPARTSHOP_ID,CHECKCOMMODITY_DESC,CHECK_STATE,CHECK_PASSPORT_GUID,CHECK_TYPE) // VALUES ()" Business.CHECKCOMMODITY _CHECKCOMMODITY = new Business.CHECKCOMMODITY(this.Transaction); //label11.Text = "盘点数据上传完成!"; if (!string.IsNullOrEmpty(log)) { ShowMessage("盘点数据上传结束!成功" + tmp + "条;失败" + temp + "条;\r\n失败原因:本期盘点无入库记录。点击确定查看失败记录详情"); con.Open(); string selectSqllocal = @"select ID,CommodityBarCode,CommodityName, iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum, iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory where CheckDate='" + frm1.CheckDate + "'AND Flag = 1"; OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象 DataTable dt1 = new DataTable(); //新建表对象 da.Fill(dt1); //用适配对象填充表对象 if (dt1.Rows.Count > 0) { for (int r = 0; r < dt1.Rows.Count; r++) { dt1.Rows[r]["ID"] = r + 1; } } ViewData(dt1, "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条;失败" + temp + "条,失败原因:无入库记录"); //dataGridView1.DataSource = dt1; con.Close(); CommodityInfo.Focus(); ChangeColor(); //label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条;失败" + temp + "条,失败原因:无入库记录"; //progressBar1.Visible = false; } else { ShowMessage("盘点数据上传完成!上传成功" + tmp + "条盘点记录"); con.Open(); string selectSqllocal = @"select ID,CommodityBarCode,CommodityName, iif(isnull(InventoryNum),0,InventoryNum)+iif(isnull(SellCount),0,SellCount) AS InventoryNum, iif(isnull(CheckDesc),0,CheckDesc) AS CheckDesc, iif(isnull(TotalCount),0,TotalCount) AS TotalCount,InventoryDate,iif(isnull(Flag),0,Flag) AS Flag from CommodityInventory where CheckDate='" + frm1.CheckDate + "'"; OleDbDataAdapter da = new OleDbDataAdapter(selectSqllocal, con); //创建适配对象 DataTable dt1 = new DataTable(); //新建表对象 da.Fill(dt1); //用适配对象填充表对象 if (dt1.Rows.Count > 0) { for (int r = 0; r < dt1.Rows.Count; r++) { dt1.Rows[r]["ID"] = r + 1; } } ViewData(dt1, "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条。"); //dataGridView1.DataSource = dt1; con.Close(); CommodityInfo.Focus(); //label11.Text = "盘点数据上传结束!上传总数:" + (decimal)(tmp + temp) + "条;成功" + tmp + "条。"; //progressBar1.Visible = false; } } } catch (Exception ex) { LogHelper.WriteServiceLog(ex.Message); con.Close(); } } #endregion public void ShowMessage(string msg) { this.Invoke(new MessageBoxShow(MessageBoxShow_F), new object[] { msg }); } delegate void MessageBoxShow(string msg); void MessageBoxShow_F(string msg) { MessageBox.Show(msg, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } public void ViewData(DataTable dt, string msg) { Invoke(new dataview(dataGridView_D), new object[] { dt, msg }); } delegate void dataview(DataTable dt, string msg); void dataGridView_D(DataTable dt, string msg) { dataGridView1.DataSource = dt; dataGridView1.MultiSelect = false; dataGridView1.Rows[dataGridView1.RowCount - 1].Selected = true; dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[1]; label11.Text = msg; progressBar1.Visible = false; ChangeColor(); } private void RunWorkerCompleted_Handler(object sender, RunWorkerCompletedEventArgs args) { //progressBar1.Value = 0; //if (args.Cancelled) //{ // MessageBox.Show("上传任务已取消。", "提示信息"); //} //else //{ // MessageBox.Show("后台任务正常结束。", "消息"); //} } #region 上传失败记录显示红色 public void ChangeColor() { for (int i = 0; i < dataGridView1.Rows.Count; i++) { if (dataGridView1.Rows[i].Cells["Flag"].Value.ToString() == "1") { for (int j = 0; j < dataGridView1.Rows[i].Cells.Count; j++) { dataGridView1.Rows[i].Cells[j].Style.ForeColor = Color.Red; dataGridView1.Rows[i].Cells[j].Style.Font = new Font(dataGridView1.Font, FontStyle.Bold); } } } } #endregion #region 数据窗口添加行号 private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e) { //SolidBrush b = new SolidBrush(this.dataGridView1.RowHeadersDefaultCellStyle.ForeColor); //e.Graphics.DrawString((e.RowIndex + 1).ToString(System.Globalization.CultureInfo.CurrentUICulture), this.dataGridView1.DefaultCellStyle.Font, b, e.RowBounds.Location.X + 12, e.RowBounds.Location.Y + 4); //Application.DoEvents(); } #endregion private void InventoryToolMain_FormClosing(object sender, FormClosingEventArgs e) { if (bgWorker.IsBusy) { MessageBox.Show("正在上传盘点数据,请稍后……", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); e.Cancel = true; } } } }