zoukankan      html  css  js  c++  java
  • 测试

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Data.OracleClient;
    using System.Text.RegularExpressions;
    using System.Reflection;
    using System.Diagnostics;
    using System.Runtime.InteropServices;

    namespace CKRL
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            //定义一个reader全局的
            OracleDataReader reader = null; 
            public string JR;
            public string LK;
            public double Row9 = 0;
            public string SPDH;
            public string YS;
            public string XH;
            TimeSpan beforeTime;            //Excel启动之前时间
            TimeSpan afterTime;             //Excel启动之后时间

            private void Form1_Load(object sender, EventArgs e)
            {
                //链接数据库
                ComDB.OpenConn(ComConst.strConn);
                //获得焦点
                this.textBox1.Focus();

            }
     
            //关闭窗体
            protected override void WndProc(ref Message m)
            {
                const int WM_SYSCOMMAND = 0x0112;
                const int SC_CLOSE = 0xF060;
                if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
                {
                    //取消terbox1的验证事件
                    this.textBox1.CausesValidation = false;
                    ComDB.CloseConn();
                    this.Close();
                    return;
                }
                base.WndProc(ref m);
            }
            //关闭按钮
            public void GetCloesdForm()
            {
                DialogResult result = MessageBox.Show("是否要关闭 ?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    this.Close();
                }
                else
                {
                    return;
                }
            }

            private void button2_Click(object sender, EventArgs e)
            {
                //调用这个类
                this.GetCloesdForm();
            }

            //限制框中输入类型
            private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar >= (char)Keys.D0 && e.KeyChar <= (char)Keys.D9 || e.KeyChar == (char)Keys.Back)
                {
                    e.Handled = false;
                }
                else
                {
                    e.Handled = true;
                }
            }

            private void textBox1_Validating(object sender, CancelEventArgs e)
            {
                //少于5位补零
                textBox1.Text = textBox1.Text.ToString().PadLeft(5,'0');
                //如果焦点在关闭上推出函数
                if (button2.Focused)
                {
                    return;
                }
                //捕获异常直接跳到catch
                try
                {
                    if (this.textBox1.Text.ToString() != string.Empty)
                    {
                        //检索数据库中数据
                        string SZBH = this.textBox1.Text.ToString().Trim();
                        string sql = "select A.SPDH as SPDH, B.SPM as  SPM,A.YS as YS,A.XH as XH,A.SZS as SZS,A.CHYDR AS CHYDR,C.ZKS as ZKS,F.SLM AS SLM,E.HYM AS HYM from SZ A  ";
                        sql = sql + "left join SPM B on (A.SPDH = B.Spdh and A.Ys = B.Ys and A.XH = B.Xh)";
                        sql = sql + "left join ZKF C on (A.SPDH = C.Spdh and A.Ys = C.Ys and A.XH = C.Xh)";
                        sql = sql + "left join SZ1 d on(a.szh = d.szh)";
                        sql = sql + "left join SLM f on(d.slbh = f.slbh)";
                        sql = sql + "left join HYM e on(d.hyh = e.hyh)";
                        sql = sql + "where A.SZH = '" + SZBH + "'";
                        reader = (OracleDataReader)ComDB.GetReader(sql);
                        //springd1初始化
                        this.fpSpread1.Sheets[0].RowCount = 0;
                        if (reader.Read())
                        {
                            SPDH = reader["SPDH"].ToString();
                            YS = reader["YS"].ToString();
                            XH = reader["XH"].ToString();
                            this.textBox2.Text = reader["SLM"].ToString();
                            this.textBox3.Text = reader["HYM"].ToString();
                            //显示数据库中的日期
                            string chyd = reader["CHYDR"].ToString().Substring(0, 4) + "-" + reader["CHYDR"].ToString().Substring(4, 2) + "-" + reader["CHYDR"].ToString().Substring(6, 2);
                            this.dateTimePicker2.Value = Convert.ToDateTime(chyd);

                            int i = 0;
                            do
                            {
                                //springd1加行
                                this.fpSpread1.Sheets[0].RowCount = this.fpSpread1.Sheets[0].RowCount + 1;
                                this.fpSpread1.Sheets[0].Cells[i, 0].Text = reader["SPDH"].ToString();
                                this.fpSpread1.Sheets[0].Cells[i, 1].Text = reader["SPM"].ToString();
                                this.fpSpread1.Sheets[0].Cells[i, 2].Text = reader["YS"].ToString();
                                this.fpSpread1.Sheets[0].Cells[i, 3].Text = reader["XH"].ToString();
                                this.fpSpread1.Sheets[0].Cells[i, 4].Text = reader["SZS"].ToString();
                                this.fpSpread1.Sheets[0].Cells[i, 5].Text = reader["ZKS"].ToString();


                                string SQL1 = "select sum(NVL(YCKS,0)) AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                               "WHERE  A.SZH ='" + SZBH + "'AND A.SPDH ='" + reader["SPDH"].ToString() + "'AND A.YS ='" + reader["YS"].ToString() + "' AND A.XH ='" + reader["XH"].ToString() + "' ";
                                OracleDataReader reader1 = (OracleDataReader)ComDB.GetReader(SQL1);
                                if (reader1.Read())
                                {
                                    this.fpSpread1.Sheets[0].Cells[i, 7].Text = reader1["YCKS"].ToString();
                                }
                                else
                                {
                                    this.fpSpread1.Sheets[0].Cells[i, 7].Text = "0";
                                }


                                string A = this.dateTimePicker1.Value.Year.ToString() + dateTimePicker1.Value.Month.ToString().PadLeft(2, '0') + dateTimePicker1.Value.Day.ToString().PadLeft(2, '0');
                                string SQL2 = "select YCKS AS CKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                               "WHERE  G.CKRQ = '" + A + "' AND A.SZH ='" + SZBH + "'AND A.SPDH ='" + reader["SPDH"].ToString() + "'AND A.YS ='" + reader["YS"].ToString() + "' AND A.XH ='" + reader["XH"].ToString() + "'";
                                OracleDataReader reader2 = (OracleDataReader)ComDB.GetReader(SQL2);

                                if (reader2.Read())
                                {
                                    //MessageBox.Show("该日已出库");
                                    //int ss=Convert.ToInt32(reader2["CKS"].ToString())-Convert.ToInt32(reader1["YCKS"].ToString());
                                    this.fpSpread1.Sheets[0].Cells[i, 6].Text = reader2["CKS"].ToString();

                                    string SQL3 = "select NVL(sum(YCKS),0) AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                                  " WHERE  A.SZH ='" + SZBH + "' AND CKRQ < '" + A + "'and A.SPDH = '" + reader["SPDH"].ToString() + "' and " +
                                                  " A.YS = '" + reader["YS"].ToString() + "' and A.XH = '" + reader["XH"].ToString() + "'";
                                    OracleDataReader reader3 = (OracleDataReader)ComDB.GetReader(SQL3);
                                    if (reader3.Read())
                                    {
                                        this.fpSpread1.Sheets[0].Cells[i, 7].Text = reader3["YCKS"].ToString();

                                    }
                                    reader3.Close();
                                    //string SQL4 = "select NVL(YCKS,0) AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                    //              " WHERE  A.SZH ='" + SZBH + "' AND CKRQ ='" + A + "'and A.SPDH = '" + reader["SPDH"].ToString() + "' and " +
                                    //              " A.YS = '" + reader["YS"].ToString() + "' and A.XH = '" + reader["XH"].ToString() + "'";
                                    //OracleDataReader reader4 = (OracleDataReader)ComDB.GetReader(SQL4);
                                    string CKF = reader2["CKS"].ToString();
                                    double c = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 6].Text) + Convert.ToDouble(CKF);
                                    this.fpSpread1.Sheets[0].Cells[i, 9].Text = c.ToString();

                                }
                                else
                                {              //强制转化
                                    double a = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 4].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 7].Text);
                                    this.fpSpread1.Sheets[0].Cells[i, 6].Text = a.ToString();
                                    double c = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 6].Text);
                                    this.fpSpread1.Sheets[0].Cells[i, 9].Text = c.ToString();

                                }
                                reader2.Close();
                                reader1.Close();

                                // 垃圾回收,释放内存
                                GC.Collect();
                                string aa = this.fpSpread1.Sheets[0].Cells[i, 4].Text.Trim();

                                string bb = this.fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
                                string cc = this.fpSpread1.Sheets[0].Cells[i, 7].Text.Trim();
                                double b = Convert.ToDouble(aa) - Convert.ToDouble(bb) - Convert.ToDouble(cc);
                                this.fpSpread1.Sheets[0].Cells[i, 8].Text = b.ToString();

                                //double c = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 7].Text);
                                //this.fpSpread1.Sheets[0].Cells[i, 9].Text = c.ToString();

                                i++;
                            } while (reader.Read());

                            //this.fpSpread1.Sheets[0].Cells[0,6].Text.Focus();
                        }
                        else
                        {
                            MessageBox.Show("没有查询到数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                            this.textBox2.Text = "";
                            this.textBox3.Text = "";
                            this.fpSpread1.Sheets[0].RowCount = 0;
                            //光标回到textBox1中
                            this.textBox1.Focus();
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                    Application.Exit();
                }
                reader.Close();
                GC.Collect();

            }

            private void button1_Click(object sender, EventArgs e)
            {
                //初始化表格
                this.textBox1.Text = string.Empty;
                this.textBox2.Text = string.Empty;
                this.textBox3.Text = string.Empty;
                this.fpSpread1.Sheets[0].RowCount = 0;
                JR = string.Empty;
                LK = string.Empty;
            }

            //回车光标换行
            private void Form1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyValue == 13)
                {

                    e.Handled = true;
                    System.Windows.Forms.SendKeys.Send("{Tab}");

                }
            }

           //表中的离开事件
            private void fpSpread1_LeaveCell(object sender, FarPoint.Win.Spread.LeaveCellEventArgs e)
            {
                //取出当前光标所在行
                int Actrow = this.fpSpread1.Sheets[0].ActiveRowIndex;
                //取出当前光标所在列
                int Actcol = this.fpSpread1.Sheets[0].ActiveColumnIndex;

                LK = this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text;

                if (Actcol == 6)
                {
                    if (LK != JR)
                    {
                        if (this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text != "")
                        {
                            double Row8 = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 4].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 7].Text);
                            this.fpSpread1.Sheets[0].Cells[Actrow, 8].Text = Row8.ToString();

                            string SZBH = this.textBox1.Text.ToString().Trim();
                            string A = this.dateTimePicker1.Value.Year.ToString() + dateTimePicker1.Value.Month.ToString().PadLeft(2, '0') + dateTimePicker1.Value.Day.ToString().PadLeft(2, '0');
                            string SQL2 = "select YCKS AS CKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                           "WHERE  G.CKRQ = '" + A + "' AND A.SZH ='" + SZBH + "'AND A.SPDH ='" + SPDH + "'AND A.YS ='" + YS + "' AND A.XH ='" + XH + "'";

                            OracleDataReader reader2 = (OracleDataReader)ComDB.GetReader(SQL2);
                            if (reader2.Read())
                            {
                                string CKF = reader2["CKS"].ToString();
                                Row9 = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text) + Convert.ToDouble(CKF);
                                this.fpSpread1.Sheets[0].Cells[Actrow, 9].Text = Row9.ToString();
                            }
                            else
                            {
                                Row9 = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text);
                                this.fpSpread1.Sheets[0].Cells[Actrow, 9].Text = Row9.ToString();
                            }
                            reader2.Close();
                            // 垃圾回收,释放内存
                            GC.Collect();
                        }
                        else
                        {
                            // 锁定列,发送回车事件
                            if (this.fpSpread1.Sheets[0].Columns[e.NewColumn].Locked)
                            {
                                SendKeys.Send("{Enter}");
                            }
                        }
                    }
                    else
                    {
                        if (this.fpSpread1.Sheets[0].Columns[e.NewColumn].Locked)
                        {
                            SendKeys.Send("{Enter}");
                        }
                    }
                }
                else
                {
                    if (this.fpSpread1.Sheets[0].Columns[e.NewColumn].Locked)
                    {
                        SendKeys.Send("{Enter}");
                    }
                }

            }

            private void fpSpread1_EnterCell(object sender, FarPoint.Win.Spread.EnterCellEventArgs e)
            {
                //取出当前光标所在行
                int Actrow = this.fpSpread1.Sheets[0].ActiveRowIndex;
                //取出当前光标所在列
                int Actcol = this.fpSpread1.Sheets[0].ActiveColumnIndex;
                if (Actcol == 6)
                {
                    JR = this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text;
                }
                else                                
                {
                    return;
                }
            }

            private void button3_Click(object sender, EventArgs e)
            {
                DialogResult result = MessageBox.Show("是否出库?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                    //将日期形状换成字符型
                    string rq1 = "";
                    string date = this.dateTimePicker1.Text;
                    DateTime d = Convert.ToDateTime(date);
                    d.ToShortDateString();
                    rq1 = d.Year.ToString() + d.Month.ToString().Trim().PadLeft(2, '0') + d.Day.ToString().Trim().PadLeft(2, '0');

                    string rq2 = "";
                    string date2 = this.dateTimePicker2.Text;
                    DateTime d2 = Convert.ToDateTime(date2);
                    d2.ToShortDateString();
                    rq2 = d2.Year.ToString() + d2.Month.ToString().Trim().PadLeft(2, '0') + d2.Day.ToString().Trim().PadLeft(2, '0');
                    double KCS = 0;
                    int Actrow = this.fpSpread1.Sheets[0].ActiveRowIndex;
                    KCS = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[Actrow, 6].Text);
                    if (KCS < 0)
                    {
                        MessageBox.Show("库存不足", "提示",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
                        return;

                    }
                    else
                    {
                        if (Convert.ToInt32(rq1) < Convert.ToInt32(rq2))
                        {

                            DialogResult result1 = MessageBox.Show("是否提前出库 ?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                            if (result == DialogResult.OK)
                            {
                                this.baocun();
                                MessageBox.Show("出库成功", "提示",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
                            }
                            else
                            {
                                return;
                            }

                        }
                        else
                        {
                            this.baocun();
                            MessageBox.Show("出库成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                        }

                    }
                }
                else
                {
                    return;
                }
               
            }


            public void baocun()
            {
                int count=this.fpSpread1.ActiveSheet.NonEmptyRowCount;
                for (int i = 0; i < count; i++)
                {
                    string SPDH = this.fpSpread1.Sheets[0].Cells[i, 0].Text.ToString();
                    string YS = this.fpSpread1.Sheets[0].Cells[i, 2].Text.ToString();
                    string XH = this.fpSpread1.Sheets[0].Cells[i, 3].Text.ToString();
                    string SZBH = this.textBox1.Text.ToString().Trim();

                    string SZH1 = this.textBox1.Text.ToString().Trim();
                    string CKRQ1 = this.dateTimePicker1.Value.Year.ToString() + dateTimePicker1.Value.Month.ToString().PadLeft(2, '0') + dateTimePicker1.Value.Day.ToString().PadLeft(2, '0');
                    string SPDH1 = this.fpSpread1.Sheets[0].Cells[i, 0].Text;
                    string YS1 = this.fpSpread1.Sheets[0].Cells[i, 2].Text;
                    string XH1 = this.fpSpread1.Sheets[0].Cells[i, 3].Text;
                    //更新在库数
                    string SQL2 = "select YCKS AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                  "WHERE  A.SZH ='" + SZBH + "'AND A.SPDH ='" + SPDH + "'AND A.YS ='" + YS + "' AND A.XH ='" + XH + "' AND G.CKRQ = '" + CKRQ1 + "'";
                    OracleDataReader reader2 = (OracleDataReader)ComDB.GetReader(SQL2);
                    if (reader2.Read())
                    {
                        string zksl = string.Empty;
                        zksl = fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
                        String Z = "UPDATE  ZKF SET ZKS =ZKS-'" + zksl + "'+'" + reader2["YCKS"] + "' WHERE  SPDH ='" + SPDH1 + "' AND YS ='" + YS1 + "' AND XH = '" + XH1 + "'";
                        ComDB.ExecSQL(Z);
                        ComDB.CommitTran();
                    }
                    else
                    {
                        string zksl = string.Empty;
                        zksl = fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
                        String Z = "UPDATE  ZKF SET ZKS =ZKS-'" + zksl + "' WHERE  SPDH ='" + SPDH1 + "' AND YS ='" + YS1 + "' AND XH = '" + XH1 + "'";
                        ComDB.ExecSQL(Z);
                        ComDB.CommitTran();
                    }
                    reader2.Close();
                    System.GC.Collect();
                    //更新已出库数
                    string sql = "SELECT YCKS FROM CKF A WHERE CKRQ = '" + CKRQ1 + "' AND SPDH ='" + SPDH1 + "' AND YS ='" + YS1 + "' AND XH = '" + XH1 + "' AND SZH ='" + SZH1 + "'";
                    reader = (OracleDataReader)ComDB.GetReader(sql);
                    if (reader.Read())
                    {
                        string SQL1 = "select YCKS AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                                      "WHERE  A.SZH ='" + SZBH + "'AND A.SPDH ='" + SPDH + "'AND A.YS ='" + YS + "' AND A.XH ='" + XH + "' AND G.CKRQ = '" + CKRQ1 + "'";
                        OracleDataReader reader3 = (OracleDataReader)ComDB.GetReader(SQL1);
                        if(reader3.Read())
                        {
                            string cksl = string.Empty;
                            cksl = fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
                            String S = "UPDATE CKF SET YCKS =YCKS+'" + cksl + "'- '" + reader3["YCKS"] + "' " +
                            "WHERE CKRQ = '" + CKRQ1 + "' AND SPDH ='" + SPDH1 + "' AND YS ='" + YS1 + "' AND XH = '" + XH1 + "' AND SZH ='" + SZH1 + "'";//YCKS+
                            ComDB.ExecSQL(S);
                            ComDB.CommitTran();
                        }
                        else
                        {
                            string cksl = string.Empty;
                            cksl = fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
                            String S = "UPDATE CKF SET YCKS =YCKS+'" + cksl + "'" +
                            "WHERE CKRQ = '" + CKRQ1 + "' AND SPDH ='" + SPDH1 + "' AND YS ='" + YS1 + "' AND XH = '" + XH1 + "' AND SZH ='" + SZH1 + "'";//YCKS+
                            ComDB.ExecSQL(S);
                            ComDB.CommitTran();
                        }
                        reader3.Close();
                        reader.Close();
                        System.GC.Collect();
                    }
                    else
                    {
                        string cksl = string.Empty;
                        cksl = fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
                        String IS = "INSERT INTO CKF(CKRQ, SPDH ,YS ,XH, SZH ,YCKS) VALUES( '" + CKRQ1 + "','" + SPDH1 + "','" + YS1 + "','" + XH1 + "','" + SZH1 + "','" + cksl + "' )";
                        ComDB.ExecSQL(IS);//执行SQL语句
                        ComDB.CommitTran();//提交
                        reader.Close();
                        System.GC.Collect();
                    }

                }
                //光标回到textBox1中
                this.textBox1.Focus();
            }

            private void button4_Click(object sender, EventArgs e)
            {
                  DialogResult result = MessageBox.Show("是否预览?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                  if (result == DialogResult.OK)
                  {
                      ComConst.CHRQ = this.dateTimePicker1.Value.Year.ToString() + this.dateTimePicker1.Value.Month.ToString().PadLeft(2, '0');
                      Form2 BS = new Form2();
                      BS.ShowDialog();
                  }
                  else
                  {
                      return;
                  }
            }
            /// <summary>
            /// 杀 EXCEL 进程
            /// </summary>
            public void KillExcelProcess()
            {
                try
                {
                    Process[] myProcesses;
                    TimeSpan startTime;
                    myProcesses = Process.GetProcessesByName("Excel");

                    //得不到Excel进程ID,暂时只能判断进程启动时间
                    foreach (Process myProcess in myProcesses)
                    {
                        startTime = myProcess.StartTime.TimeOfDay;

                        if (startTime > beforeTime && startTime < afterTime)
                        {
                            myProcess.Kill();
                        }
                    }
                }
                catch (Exception ee)
                {
                    //Error_logger.Error(this.ToString() + ":Error = ", ee);
                }
            }
            //打印表格事件
            public void GetEXCEL(string strCKRQ)
            {
                System.IO.Directory.CreateDirectory("D:\\当月出库表");
                //beforeTime = DateTime.Now.TimeOfDay;
                Excel.ApplicationClass excel = new Excel.ApplicationClass();
                //afterTime = DateTime.Now.TimeOfDay;

                Excel.Workbook workbook = excel.Workbooks.Open(Application.StartupPath + "\\Model\\GZQB.xls",
                                      Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                                      Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                                      Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
                Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets.get_Item(1);
                string strsql = "select A.SZH AS SZH,A.SPDH AS SPDH,B.SPM AS SPM,A.YS AS YS,A.XH AS XH,A.SZS AS SZS," +
                            "NVL(C.CHYDR,0) AS CHYDR,D.CKRQ AS CKRQ,NVL(D.YCKS,0) AS YCKS ,(NVL(A.SZS,0)-NVL(D.YCKS,0)) AS CYS " +   //,(NVL(A.SZS,0)-NVL(D.YCKS,0)) AS CYS
                            "from SZ A " +
                            "LEFT JOIN SPM B ON(A.SPDH = B.SPDH AND A.YS = B.YS AND A.XH  = B.XH) " +
                            "LEFT JOIN SZ1 C ON(A.SZH = C.SZH) " +
                            "LEFT JOIN CKF D ON(A.SPDH = D.SPDH AND A.YS = D.YS AND A.XH  = D.XH AND A.SZH = D.SZH) " +
                            "WHERE SUBSTR(D.CKRQ,0,6) = '" + strCKRQ + "' " +                                                       //截取字符串
                            "ORDER BY A.SZH,A.SPDH,B.SPM";

                //string C = this.dateTimePicker1.Value.Year.ToString() + dateTimePicker1.Value.Month.ToString().PadLeft(2, '0') + dateTimePicker1.Value.Day.ToString().PadLeft(2, '0');
                //string SQL1 = "select NVL(sum(YCKS),0) AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
                //            "WHERE  '" + strCKRQ + "' < '" + C + "' ";


                string SZH = string.Empty;
                string SPDH = string.Empty;
                string SPM = string.Empty;
                string YS = string.Empty;
                string XH = string.Empty;
                string SZS = string.Empty;
                string CHYDR = string.Empty;
                string CKRQ = string.Empty;
                string YCKS = string.Empty;
                string CYS = string.Empty;
                string H = string.Empty;
                string M = string.Empty;
                string T = string.Empty;
                Double CYS1;
                worksheet = (Excel.Worksheet)workbook.Sheets[1];
                worksheet.Name = strCKRQ;                                                                    // sheet 名
                OracleDataReader reader = (OracleDataReader)ComDB.GetReader(strsql);             // FFD010 中的明细
                //OracleDataReader reader1 = (OracleDataReader)ComDB.GetReader(SQL1); 
                if (reader.Read())
                {
                    worksheet.Cells[3, 1] = strCKRQ.Substring(0, 4) + "/" + strCKRQ.Substring(4, 2);   // 日期
                    int i = 5;
                    do
                    {

                        if (i > 5 & reader["SZH"].ToString() == H & reader["SPM"].ToString() == M)
                        {
                            string A = reader["CHYDR"].ToString().Substring(0, 4) + "-" + reader["CHYDR"].ToString().Substring(4, 2) + "-" + reader["CHYDR"].ToString().Substring(6, 2);
                            string B = reader["CKRQ"].ToString().Substring(0, 4) + "-" + reader["CKRQ"].ToString().Substring(4, 2) + "-" + reader["CKRQ"].ToString().Substring(6, 2);
                            CYS1 = Convert.ToDouble(T) - Convert.ToDouble(reader["YCKS"].ToString());
                            worksheet.Cells[i, 1] = " ";                                 // 受注号
                            worksheet.Cells[i, 2] = " ";                                // 商品代号
                            worksheet.Cells[i, 3] = " ";                                 // 商品名
                            worksheet.Cells[i, 4] = " ";                                  // 颜色
                            worksheet.Cells[i, 5] = " ";                                  // 型号
                            worksheet.Cells[i, 6] = " ";                                 // 受注数
                            worksheet.Cells[i, 7] = " ";                                                        // 出库预订日
                            worksheet.Cells[i, 8] = B;                                                        // 出库入力日
                            worksheet.Cells[i, 9] = reader["YCKS"].ToString();                                // 出库数
                            worksheet.Cells[i, 10] = CYS1.ToString();//cys.ToString();               // 差异数
                            worksheet.get_Range("A" + i, "J" + i).Borders.LineStyle = 1;
                            worksheet.get_Range("A" + i, "J" + i).Font.Size = 9;
                            T = CYS1.ToString();
                        }
                        else
                        {

                            string A = reader["CHYDR"].ToString().Substring(0, 4) + "-" + reader["CHYDR"].ToString().Substring(4, 2) + "-" + reader["CHYDR"].ToString().Substring(6, 2);
                            string B = reader["CKRQ"].ToString().Substring(0, 4) + "-" + reader["CKRQ"].ToString().Substring(4, 2) + "-" + reader["CKRQ"].ToString().Substring(6, 2);
                            worksheet.Cells[i, 1] = reader["SZH"].ToString();                                 // 受注号
                            worksheet.Cells[i, 2] = reader["SPDH"].ToString();                                // 商品代号
                            worksheet.Cells[i, 3] = reader["SPM"].ToString();                                 // 商品名
                            worksheet.Cells[i, 4] = reader["YS"].ToString();                                  // 颜色
                            worksheet.Cells[i, 5] = reader["XH"].ToString();                                  // 型号
                            worksheet.Cells[i, 6] = reader["SZS"].ToString();                                 // 受注数
                            worksheet.Cells[i, 7] = A;                                                        // 出库预订日
                            worksheet.Cells[i, 8] = B;                                                        // 出库入力日
                            worksheet.Cells[i, 9] = reader["YCKS"].ToString();                                // 出库数
                            worksheet.Cells[i, 10] = reader["CYS"].ToString();//cys.ToString();               // 差异数
                            worksheet.get_Range("A" + i, "J" + i).Borders.LineStyle = 1;
                            worksheet.get_Range("A" + i, "J" + i).Font.Size = 9;
                            H = reader["SZH"].ToString();
                            M = reader["SPM"].ToString();
                            T = reader["CYS"].ToString();
                        }
                        i++;
                    }
                    while (reader.Read());
                }
                reader.Close();
                //reader1.Close();
                System.GC.Collect();
                worksheet = (Excel.Worksheet)workbook.Sheets[1];
                //worksheet.Delete();

                excel.Visible = true;
                DateTime dt = DateTime.Now;
                string shijian = DateTime.Now.Hour.ToString().PadLeft(2, '0') +
                                            DateTime.Now.Minute.ToString().PadLeft(2, '0') +
                                            DateTime.Now.Second.ToString().PadLeft(2, '0');
                string strDt = "当月出库数" + dt.ToString("yyyyMMdd") + shijian;
                string Save_Path = "D:\\当月出库表\\" + strDt + ".xls";
                excel.ActiveWorkbook.SaveAs(Save_Path,
                    Type.Missing, Type.Missing, Type.Missing,
                    Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
                    Type.Missing, Type.Missing, Type.Missing, Type.Missing);

                //KillExcelProcess();
            }
            private void button5_Click(object sender, EventArgs e)
            {
                DialogResult result = MessageBox.Show("是否要生成 EXCEL?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (result == DialogResult.OK)
                {
                   string RQ = this.dateTimePicker1.Value.Year.ToString() + this.dateTimePicker1.Value.Month.ToString().PadLeft(2, '0');
                   this.GetEXCEL(RQ);
                }
                else
                {
                    return;
                }
            }
         
            //离开事件
            private void dateTimePicker1_Leave(object sender, EventArgs e)
            {
            //    try
            //    {
            //        if (this.textBox1.Text.ToString() != string.Empty)
            //        {
            //            //检索数据库中数据
            //            string SZBH = this.textBox1.Text.ToString().Trim();
            //            string sql = "select A.SPDH as SPDH, B.SPM as  SPM,A.YS as YS,A.XH as XH,A.SZS as SZS,A.CHYDR AS CHYDR,C.ZKS as ZKS,F.SLM AS SLM,E.HYM AS HYM from SZ A  ";
            //            sql = sql + "left join SPM B on (A.SPDH = B.Spdh and A.Ys = B.Ys and A.XH = B.Xh)";
            //            sql = sql + "left join ZKF C on (A.SPDH = C.Spdh and A.Ys = C.Ys and A.XH = C.Xh)";
            //            sql = sql + "left join SZ1 d on(a.szh = d.szh)";
            //            sql = sql + "left join SLM f on(d.slbh = f.slbh)";
            //            sql = sql + "left join HYM e on(d.hyh = e.hyh)";
            //            sql = sql + "where A.SZH = '" + SZBH + "'";
            //            reader = (OracleDataReader)ComDB.GetReader(sql);
            //            //springd1初始化
            //            this.fpSpread1.Sheets[0].RowCount = 0;
            //            if (reader.Read())
            //            {
            //                this.textBox2.Text = reader["SLM"].ToString();
            //                this.textBox3.Text = reader["HYM"].ToString();
            //                //显示数据库中的日期
            //                string chyd = reader["CHYDR"].ToString().Substring(0, 4) + "-" + reader["CHYDR"].ToString().Substring(4, 2) + "-" + reader["CHYDR"].ToString().Substring(6, 2);
            //                this.dateTimePicker2.Value = Convert.ToDateTime(chyd);

            //                int i = 0;
            //                do
            //                {
            //                    //springd1加行
            //                    this.fpSpread1.Sheets[0].RowCount = this.fpSpread1.Sheets[0].RowCount + 1;
            //                    this.fpSpread1.Sheets[0].Cells[i, 0].Text = reader["SPDH"].ToString();
            //                    this.fpSpread1.Sheets[0].Cells[i, 1].Text = reader["SPM"].ToString();
            //                    this.fpSpread1.Sheets[0].Cells[i, 2].Text = reader["YS"].ToString();
            //                    this.fpSpread1.Sheets[0].Cells[i, 3].Text = reader["XH"].ToString();
            //                    this.fpSpread1.Sheets[0].Cells[i, 4].Text = reader["SZS"].ToString();
            //                    this.fpSpread1.Sheets[0].Cells[i, 5].Text = reader["ZKS"].ToString();


            //                    string SQL1 = "select sum(NVL(YCKS,0)) AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
            //                                   "WHERE  A.SZH ='" + SZBH + "'AND A.SPDH ='" + reader["SPDH"].ToString() + "'AND A.YS ='" + reader["YS"].ToString() + "' AND A.XH ='" + reader["XH"].ToString() + "' ";
            //                    OracleDataReader reader1 = (OracleDataReader)ComDB.GetReader(SQL1);
            //                    if (reader1.Read())
            //                    {
            //                        this.fpSpread1.Sheets[0].Cells[i, 7].Text = reader1["YCKS"].ToString();
            //                    }
            //                    else
            //                    {
            //                        this.fpSpread1.Sheets[0].Cells[i, 7].Text = "0";
            //                    }


            //                    string A = this.dateTimePicker1.Value.Year.ToString() + dateTimePicker1.Value.Month.ToString().PadLeft(2, '0') + dateTimePicker1.Value.Day.ToString().PadLeft(2, '0');
            //                    string SQL2 = "select YCKS AS CKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
            //                                   "WHERE  G.CKRQ = '" + A + "' AND A.SZH ='" + SZBH + "'AND A.SPDH ='" + reader["SPDH"].ToString() + "'AND A.YS ='" + reader["YS"].ToString() + "' AND A.XH ='" + reader["XH"].ToString() + "'";
            //                    OracleDataReader reader2 = (OracleDataReader)ComDB.GetReader(SQL2);

            //                    if (reader2.Read())
            //                    {
            //                        //MessageBox.Show("该日已出库");
            //                        //int ss=Convert.ToInt32(reader2["CKS"].ToString())-Convert.ToInt32(reader1["YCKS"].ToString());
            //                        this.fpSpread1.Sheets[0].Cells[i, 6].Text = reader2["CKS"].ToString();

            //                        string SQL3 = "select NVL(sum(YCKS),0) AS YCKS from SZ A LEFT JOIN CKF G ON(A.SZH = G.SZH AND A.SPDH = G.SPDH AND A.YS = G.YS AND A.XH = G.XH) " +
            //                                      " WHERE  A.SZH ='" + SZBH + "' AND CKRQ < '" + A + "'and A.SPDH = '" + reader["SPDH"].ToString() + "' and " +
            //                                      " A.YS = '" + reader["YS"].ToString() + "' and A.XH = '" + reader["XH"].ToString() + "'";
            //                        OracleDataReader reader3 = (OracleDataReader)ComDB.GetReader(SQL3);
            //                        if (reader3.Read())
            //                        {
            //                            this.fpSpread1.Sheets[0].Cells[i, 7].Text = reader3["YCKS"].ToString();

            //                        }
            //                        reader3.Close();
            //                        double c = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 7].Text);
            //                        this.fpSpread1.Sheets[0].Cells[i, 9].Text = c.ToString();

            //                    }
            //                    else
            //                    {              //强制转化
            //                        double a = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 4].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 7].Text);
            //                        this.fpSpread1.Sheets[0].Cells[i, 6].Text = a.ToString();
            //                        double c = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 6].Text);
            //                        this.fpSpread1.Sheets[0].Cells[i, 9].Text = c.ToString();

            //                    }
            //                    reader2.Close();
            //                    reader1.Close();

            //                    // 垃圾回收,释放内存
            //                    GC.Collect();
            //                    string aa = this.fpSpread1.Sheets[0].Cells[i, 4].Text.Trim();
            //                    string bb = this.fpSpread1.Sheets[0].Cells[i, 6].Text.Trim();
            //                    string cc = this.fpSpread1.Sheets[0].Cells[i, 7].Text.Trim();
            //                    double b = Convert.ToDouble(aa) - Convert.ToDouble(bb) - Convert.ToDouble(cc);
            //                    this.fpSpread1.Sheets[0].Cells[i, 8].Text = b.ToString();

            //                    //double c = Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 5].Text) - Convert.ToDouble(this.fpSpread1.Sheets[0].Cells[i, 7].Text);
            //                    //this.fpSpread1.Sheets[0].Cells[i, 9].Text = c.ToString();

            //                    i++;
            //                } while (reader.Read());
            //                reader.Close();
            //                GC.Collect();
            //                //this.fpSpread1.Sheets[0].Cells[0,6].Text.Focus();
            //            }
            //            else
            //            {
            //                MessageBox.Show("没有查询到数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            //                this.textBox2.Text = "";
            //                this.textBox3.Text = "";
            //                this.fpSpread1.Sheets[0].RowCount = 0;
            //                //光标回到textBox1中
            //                this.textBox1.Focus();
            //            }
            //        }
            //        else
            //        {
            //            return;
            //        }
            //    }
            //    catch (Exception ex)
            //    {
            //        MessageBox.Show(ex.ToString());
            //        Application.Exit();
                //}
            }

            private void fpSpread1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
            {
                //if (e.KeyCode.ToString() == "Tab")
                //{
                //    e.KeyCode = (Keys)Keys.Down;
                //}
            }

        }
    }

  • 相关阅读:
    后台取得非服务器控件的一种方法(Request.Form.GetKey(i))
    扩展jQuery键盘事件的几个基本方法(练习jQuery插件扩展)
    Javascript得到CheckBoxList的Value
    sql server的count(小技巧)
    oracle数据库约束条件删除、取消、启用
    iis7.0修改网站端口
    session模式和web园
    理解Session State模式+ASP.NET SESSION丢失FAQ (转)
    Gridview中生成的属性rules="all",在Firefox出现内线框解决办法
    一个类windows系统的效果图
  • 原文地址:https://www.cnblogs.com/zzh1236/p/1313597.html
Copyright © 2011-2022 走看看