编程与数学 03-008 《看潮企业管理软件》项目开发 15 工序统计 4-2

编程与数学 03-008 《看潮企业管理软件》项目开发 15 工序统计 4-2

摘要:本文介绍了基于DevExpress WinForms开发的"看潮企业管理软件"工序统计模块(Uf07Gzjj)。该系统采用C#语言和.NET Framework技术栈,实现计件工作量统计表的全生命周期管理,支持数据录入、审核、登账等核心业务流程。系统创新性地采用动态列生成技术,根据部门工序自动构建统计表格,支持横向与纵向双模式数据录入。通过Ribbon界面整合打印预览、XML数据交换、批量审核等高级功能,配合完整的权限控制体系(编辑/审核/打印分级授权)和智能窗口布局记忆机制,为制造型企业提供了高效、灵活的计件工资管理解决方案。
关键词:计件工作量统计;DevExpress WinForms;工序管理;数据审核流程;动态列生成;权限控制;XML数据交换
人工智能助手:DeepSeek、Kimi

三、窗体功能代码

第一部分

csharp 复制代码
using DevExpress.Data;
using DevExpress.Utils;
using DevExpress.Utils.Menu;
using DevExpress.XtraBars;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid;
using DevExpress.XtraGrid.Columns;
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraLayout;
using DevExpress.XtraTab;
using System;
using System.Data;
using System.Text;
using System.Windows.Forms;
using static KcErp.KcDb;
using static KcErp.KcEditfm;
using static KcErp.KcEditgd;
using static KcErp.KcMain;
namespace KcErp
{
    public partial class Uf07Gzjj : DevExpress.XtraEditors.XtraForm
    {
        #region "public"
        public string dyoid = "";
        public string fdjmc = "计件工作量统计表";
        public string fgnbh;
        public string fgnmc;
        public string ft1 = "gzjjo";         //制造表1
        public string ft1dj = "djr";
        public string ft1list = "oid,ny,bmdh,bmmc,jjzl,gymc,rq,chxh,chdh,chhc,scdh,jhsl,bz,tzr,shr,djr";
        public string ft1oid = "oid";
        public string ft1oidqz = "gzjj{ppcxh}_{业务期间}_";
        public string ft1order = "oid";
        public string ft1qj = "ny";
        public string ft1sh = "shr";
        public string ft1tjts = "";
        public string ft1tz = "tzr";
        public string ft1where = "oid like 'gzjj{ppcxh}%' and bmdh='{生产部门代号}' and ny='{业务期间}' and gymc='{工艺名称}' and {是否登记}=iif(djr<>'',1,0)";
        public string ft2 = "gzjjm";           //制造表2
        public string ft2djbjzd = "sfdj";
        public string ft2list = "mid,oid,ny,bmdh,bmmc,rybh,ryxm,gymc,gxmc,tjsl,sfgx,sfsh,sfdj";
        public string ft2mid = "mid";
        public string ft2oid = "oid";
        public string ft2order = "oid,rybh,mid";
        public string ft2qj = "ny";
        public string ft2shbjzd = "sfsh";
        public string ft2where = "oid like 'gzjj{ppcxh}%'  and bmdh='{生产部门代号}' and ny='{业务期间}' and gymc='{工艺名称}' and sfdj={是否登记}";
        public string ftbb = "";         //制造表版本
        public bool fzxsr;
        #endregion
        #region "dim"
        bool adding = false;
        bool djenter = false;
        string dqbmdh = "";
        //当前部门代号
        string dqbmmc = "";
        int dqdjh = -1;
        int dqdjs = 0;
        DataTable dqdt2;
        //当前部门名称
        string dqgymc = "";
        //当前工艺名称
        string dqjjzl = "";
        string dqmid = "";
        int dqmrow = -1;
        string dqoid = "";
        string dqsfdj;
        //计件种类
        string dqywqj = "";
        bool drsjz = false;
        DataTable dt1;
        DataTable dt2;
        //载入年月
        DataTable dtbmgx;
        //部门工序
        DataTable dtbmry;
        DataTable dttj1;
        DataTable dtzd1;
        DataTable dtzd2;
        bool entermtgv = false;
        bool fh = false;
        BaseEdit[] firstedit;
        string[] ft1fd;
        //字段列表数组
        string[] ft2fd;
        //数据调入中
        bool gsjsz = false;
        string jszdstr = "";
        bool loaderr = false;
        bool loadfm = false;
        bool loading = false;
        //首控件
        GridView mtgv = new GridView();
        string oidqz;
        //计算中
        bool savem = false;
        //单据装入中
        //表单装入中
        bool saving = false;
        bool sfdj;
        bool sfsp;
        bool sftj;
        //编码前缀
        int sfzj;
        //是否增加  1添加同级 2添加下级 3修改
        bool sfzr;
        //单据保存中
        string sql1;
        string sql2;
        //编辑、审核、打印、参考、图片、文档、文件、设计、导出
        bool xzbj;
        bool xzck;
        bool xzdc;
        bool xzdy;
        bool xzsh;
        bool xzwj;
        string ywqj;          //业务期间
         //是否载入
                 //是否提交
                 //是否审核
                 //是否登记
    //单据体主数据表视图
        string zrtjstr = "";
             //部门人员
        #endregion
        public Uf07Gzjj()
        {
            InitializeComponent();
            // 窗体生命周期
            this.Load += Form_load;
            this.FormClosing += Form_formclosing;
            this.FormClosed += Form_FormClosed;
            this.Disposed += Form_disposed;
            this.VisibleChanged += Fm_visiblechanged;
            // 按钮点击
            this.Btpg1.Click += Btpg1_ItemClick;
            this.Btpg2.Click += Btpg2_ItemClick;
            this.Btpg3.Click += Btpg3_ItemClick;
            this.Btpg4.Click += Btpg4_ItemClick;
            // Bar 按钮 ItemClick
            this.BarTJ.ItemClick += BarTJ_ItemClick;
            this.BarZR.ItemClick += BarZR_ItemClick;
            this.BarDJ.ItemClick += Bardj_itemclick;
            this.BarCZ.ItemClick += Textss;
            this.BarSH.ItemClick += Barsh_itemclick;
            this.BarHelp.ItemClick += Barhelp_itemclick;
            this.Barexit.ItemClick += Barexit_itemclick;
            this.BarPrint.ItemClick += Barprint_itemclick;
            this.BarPreview.ItemClick += Barpreview_itemclick;
            this.BarFullsh.ItemClick += Barfullsh_itemclick;
            this.BarFulldj.ItemClick += Barfulldj_itemclick;
            // 单据相关 Bar 按钮
            this.BardjOK.ItemClick += BardjOK_ItemClick;
            this.BardjCancel.ItemClick += BardjCancel_ItemClick;
            this.BardjTJ.ItemClick += BardjTJ_ItemClick;
            this.BardjXG.ItemClick += BardjXG_ItemClick;
            this.BardjSC.ItemClick += BardjSC_ItemClick;
            this.BardjDR.ItemClick += BardjDR_ItemClick;
            // 导出/导入
            this.Bardcwj.ItemClick += Bardcwj_itemclick;
            this.Bardrwj.ItemClick += Bardrwj_itemclick;
            // 其他
            this.DJTab.SelectedPageChanged += Djtab_selectedpagechanged;
        }
        private static void Fmecload(ref LayoutControl lc, ref DataRow dr)
        {
            // 加载单记录头字段值
            string[] itag;
            for (int lt = 0; lt < lc.Items.Count; lt++)
            {
                itag = lc.Items[lt].Tag.ToString().Split(',');
                if (itag.Length == 5)
                {
                    BaseEdit ec;
                    LayoutControlItem ci = lc.Items[lt] as LayoutControlItem;
                    if (ci != null)
                    {
                        ec = ci.Control as BaseEdit;
                        if (!Convert.IsDBNull(dr[itag[2]]))
                        {
                            ec.EditValue = dr[itag[2]];
                        }
                        else
                        {
                            ec.EditValue = DBNull.Value;
                        }
                        ec.Properties.ReadOnly = true;
                    }
                }
            }
        }
        private static void Fmxmcls(ref LayoutControl lc, ref bool rw)
        {
            // 编辑项目清空
            string[] itag;
            for (int lt = 0; lt < lc.Items.Count; lt++)
            {
                itag = lc.Items[lt].Tag.ToString().Split(',');
                if (itag.Length == 5)
                {
                    BaseEdit ec;
                    LayoutControlItem ci = lc.Items[lt] as LayoutControlItem;
                    if (ci != null)
                    {
                        ec = ci.Control as BaseEdit;
                        if (ec != null)
                        {
                            switch (itag[3])
                            {
                                case "char":
                                case "nchar":
                                case "text":
                                case "ntext":
                                case "varchar":
                                case "nvarchar":
                                    ec.EditValue = "";
                                    break;
                                case "int":
                                case "smallint":
                                case "bigint":
                                case "decimal":
                                case "numeric":
                                case "float":
                                case "real":
                                    ec.EditValue = "";
                                    break;
                                case "date":
                                case "datetime":
                                case "datetime2":
                                case "smalldatetime":
                                case "datetimeofset":
                                    ec.EditValue = Getywdate();
                                    break;
                                case "time":
                                    ec.EditValue = DateTime.Now.TimeOfDay;
                                    break;
                                case "bit":
                                    ec.EditValue = false;
                                    break;
                                case "binary":
                                    ec.EditValue = DBNull.Value;
                                    break;
                                case "image":
                                    ec.EditValue = DBNull.Value;
                                    break;
                                default:
                                    ec.EditValue = DBNull.Value;
                                    break;
                            }
                            ec.Properties.ReadOnly = rw;
                            if (!rw)
                            {
                                ec.Properties.ReadOnly = (itag[1].IndexOf("read") > -1);
                            }
                        }
                    }
                }
            }
        }
        private static void Fmxmec(ref LayoutControl lc, ref bool rw)
        {
            // 项目只读属性设置
            string[] itag;
            for (int lt = 0; lt < lc.Items.Count; lt++)
            {
                itag = lc.Items[lt].Tag.ToString().Split(',');
                if (itag.Length == 5)
                {
                    BaseEdit ec;
                    LayoutControlItem ci = lc.Items[lt] as LayoutControlItem;
                    if (ci != null)
                    {
                        ec = ci.Control as BaseEdit;
                        ec.Properties.ReadOnly = rw;
                        if (!rw)
                        {
                            ec.Properties.ReadOnly = (itag[1].IndexOf("read") > -1);
                        }
                    }
                }
            }
        }
        private void Bardcwj_itemclick(object sender, ItemClickEventArgs e)
        {
            try
            {
                if (dt1.Rows.Count <= 0)
                {
                    MsgOxShow("没有查询结果,无法导出");
                    return;
                }
                if (dt2.Rows.Count <= 0)
                {
                    MsgOxShow("没有查询结果,无法导出");
                    return;
                }
                string djzs = dt1.Rows.Count.ToString().Trim() + "张";
                DataSet dsdc = new DataSet();
                DataTable dcdt1 = dt1.Copy();
                dcdt1.TableName = ft1;
                dsdc.Tables.Add(dcdt1);
                DataTable dcdt2 = dt2.Copy();
                dcdt2.TableName = ft2;
                dsdc.Tables.Add(dcdt2);
                SaveFileDialog ofd = new SaveFileDialog();
                ofd.Filter = "xml文件|*.xml";
                //打开文件
                ofd.InitialDirectory = pFilesXml;
                ofd.FileName = pDBmc + " " + ywqj + " " + DateTime.Now.ToString("yyyymmddhhmm") + " " + fdjmc.ToString().Trim() + "" + djzs + ".xml";
                if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    dsdc.WriteXml(ofd.FileName, XmlWriteMode.WriteSchema);
                    MsgXxShow(ofd.FileName + "导出完成");
                }
                dcdt1 = null;
                dcdt2 = null;
                dsdc = null;
                ofd = null;
            }
            catch (Exception ex)
            {
                MsgExShow("文件导出", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void Bardj_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //登账 单据
            if (!sfsp) return;
            try
            {
                if (!sfsp)
                {
                         MsgOxShow("尚未审核,不能登账");
               return;
                }
                if (dt1.Rows[dqdjh][ft1dj].ToString() == "")
                {
                    if (MsgSfShow("单据登账后将无法更改,确定要进行登账操作吗?") != System.Windows.Forms.DialogResult.OK)
                    {
                        return;
                    }
                    string czjg = KcDb.DBexec("select x9_djdj('" + pDQYH + "','" + pBJMC + "','" + fdjmc + "','" + dqoid + "')");
                    if (czjg == pDQYH)
                    {
                        dt1.Rows[dqdjh][ft1dj] = pDQYH;
                        if (dt2.DefaultView.Count > 0)
                        {
                            for (int t2r = dt2.DefaultView.Count - 1; t2r >= 0; t2r += -1)
                            {
                                dt2.DefaultView[t2r][ft2djbjzd] = 1;
                            }
                        }
                    }
                    else
                    {
                        MsgOxShow(czjg);
                        return;
                    }
                }
                else
                {
                    if (MsgSfShow("单据反登账是将单据恢复到未登账状态,确定要进行反登账操作吗?") != System.Windows.Forms.DialogResult.OK)
                    {
                        return;
                    }
                    string czjg = KcDb.DBexec("select x9_djdj('" + pDQYH + "','" + pBJMC + "','" + fdjmc + "','" + dqoid + "')");
                    if (czjg == pDQYH)
                    {
                        dt1.Rows[dqdjh][ft1dj] = "";
                        if (dt2.DefaultView.Count > 0)
                        {
                            for (int t2r = dt2.DefaultView.Count - 1; t2r >= 0; t2r += -1)
                            {
                                dt2.DefaultView[t2r][ft2djbjzd] = 0;
                            }
                        }
                    }
                    else
                    {
                        MsgOxShow(czjg);
                        return;
                    }
                }
                DataTable udt2 = dt2.GetChanges(); //表二
                DataTable udt1 = dt1.GetChanges(); //表一
                if (KcDb.GetDtSaven(ft1, udt1, ft2, udt2, "", null, ft1dj, ft2djbjzd, ""))
                {
                    dt1.AcceptChanges();
                    dt2.AcceptChanges();
                }
                udt2 = null;
                udt1 = null;
                sftj = true;
                Djload();
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                MsgExShow("登账单据[" + dqoid + "]", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void BardjCancel_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (dqdjh >= 0)
            {
                Djload();
            }
            else
            {
                Fmxmclear(true);
                mtgv.OptionsBehavior.ReadOnly = true;
                dt2.DefaultView.RowFilter = "false";
                dqdt2.Rows.Clear();
                sfzj = 0;
                Barenabled();
            }
        }
        private void BardjDR_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            // 数据导入
            if (mtgv.OptionsBehavior.ReadOnly) return;
            if (sfzj == 0) return;
            try
            {
                string msgstr = "";
                string sqlo = "";
                string sqlm = "";
                string sqld = "";
                DataTable dt = KcDb.DtRead("select * from x9_gn_0djsr_dr where gnbh='" + fgnbh + "' and rtrim(drmc)<>'' order by gnmc,xh");
                if (dt.Rows.Count <= 0)
                {
                    MsgXxShow("没有定义数据导入!");
                    return;
                }
                FmDJDR fmdr = new FmDJDR();
                fmdr.Text = fgnmc + "数据导入";
                fmdr.fgnbh = fgnbh;
                fmdr.fgnmc = fgnmc;
                fmdr.dtlist = dt;
                fmdr.ShowDialog(this);
                if (!fmdr.sfok)
                {
                    dt = null;
                    fmdr.Dispose();
                    return;
                }
                drsjz = true;
                adding = true;
                string colname = "";
                int coltch = -1;
                DataTable dttco = new DataTable();
                DataTable dttcm = new DataTable();
                DataTable dttcd = new DataTable();
                string droid = "";
                // 导入头存储过程 xt_djdro  '" + pdqyh + "',功能名称,数据名称,条件字符串
                sqlo = "select x9_djdro('" + pDQYH + "', '" + fgnmc + "', '" + fmdr.fdrmc + "','" + fmdr.tjstr + "')";
                string drostr = KcDb.DBString(sqlo);
                if (drostr.IndexOf("错误") > -1 || drostr.ToLower().IndexOf("select") <= -1)
                {
                    MsgXxShow(drostr);
                    dttco = null;
                }
                else
                {
                    dttco = KcDb.DtRead(drostr);
                }
                if (dttco != null)
                {
                    dttco.TableName = "djo";
                    if (dttco.Rows.Count > 0 && dttco.Columns.Count > 1)
                    {
                        string[] tccol = new string[dttco.Columns.Count];
                        for (int i = 0; i < tccol.Length; i++)
                        {
                            if (dttco.Columns[i].ColumnName.ToLower() == ft1oid.ToLower())
                            {
                                droid = dttco.Rows[0][ft1oid].ToString();
                            }
                            if (dttco.Columns[i].ColumnName.ToLower() == ft1oid.ToLower() ||
                                dttco.Columns[i].ColumnName.ToLower() == ft1qj.ToLower() ||
                                dttco.Columns[i].ColumnName.ToLower() == ft1tz.ToLower())
                            {
                                tccol[i] = "";
                            }
                            else
                            {
                                tccol[i] = dttco.Columns[i].ColumnName;
                            }
                        }
                        Loaddrtext(dttco.Rows[0], tccol);
                        msgstr += "导入单记录头数据1行\r\n";
                    }
                    else
                    {
                        msgstr += "导入单记录头数据0行\r\n";
                    }
                }
                else
                {
                    msgstr += "导入单记录头数据没有定义\r\n";
                }
                // 导入体存储过程 xt_djdrm  '" + pdqyh + "',功能名称,单记录名称缩写,数据导入名称,条件字符串
                sqlm = "select x9_djdrm('" + pDQYH + "', '" + fgnmc + "', '" + fmdr.fdrmc + "','" + fmdr.tjstr + "')";
                string drmstr = KcDb.DBString(sqlm);
                if (drmstr.IndexOf("错误") > -1 || drmstr.ToLower().IndexOf("select") <= -1)
                {
                    MsgXxShow(drmstr);
                    dttcm = null;
                }
                else
                {
                    dttcm = KcDb.DtRead(drmstr);
                }
                int mhs = 0;
                if (dttcm != null)
                {
                    if (dttcm.Rows.Count > 0 && dttcm.Columns.Count > 1)
                    {
                        for (int r = mtgv.RowCount - 1; r >= 0; r--)
                        {
                            if (mtgv.GetRowCellValue(r, mtgv.VisibleColumns[0]).ToString().Trim() == "")
                            {
                                mtgv.DeleteRow(r);
                            }
                        }
                        string[] tccol = new string[dttcm.Columns.Count];
                        for (int i = 0; i < tccol.Length; i++)
                        {
                            string fn = dttcm.Columns[i].ColumnName.ToLower();
                            if (fn == ft2oid.ToLower() || fn == ft2mid.ToLower())
                            {
                                tccol[i] = "";
                            }
                            else
                            {
                                tccol[i] = dttcm.Columns[i].ColumnName;
                            }
                        }
                        DataRow drmrow;
                        int drnm = 0;
                        for (int r = 0; r < dttcm.Rows.Count; r++)
                        {
                            drmrow = dqdt2.NewRow();
                            drnm = 0;
                            for (int c = 0; c < dqdt2.Columns.Count; c++)
                            {
                                colname = dqdt2.Columns[c].ColumnName;
                                coltch = Array.IndexOf(tccol, colname);
                                if (coltch >= 0)
                                {
                                    drmrow[colname] = dttcm.Rows[r][coltch];
                                    drnm++;
                                }
                            }
                            if (drnm == 0)
                            {
                                continue;
                            }
                            drmrow[ft2mid] = KcDb.DBInteger("select x9_djmid('" + ft2 + "','" + ft2mid + "')");
                            drmrow[ft2oid] = Baroid.EditValue.ToString();
                            dqdt2.Rows.Add(drmrow);
                            mhs++;
                        }
                        DataRow nrow = dqdt2.NewRow();
                        nrow[ft2mid] = KcDb.DBInteger("select x9_djmid('" + ft2 + "','" + ft2mid + "')");
                        nrow[ft2oid] = Baroid.EditValue.ToString();
                        dqdt2.Rows.Add(nrow);
                        mtgv.RefreshData();
                        msgstr += "导入单记录体数据" + mhs.ToString().Trim() + "行\r\n";
                    }
                }
                fmdr.Dispose();
                mtgv.FocusedRowHandle = mtgv.RowCount - 1;
                drsjz = false;
                adding = false;
                MsgXxShow("数据导入操作完成,请检查其正确性!\r\n" + msgstr);
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                drsjz = false;
                adding = false;
                MsgExShow("数据导入", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void BardjOK_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            try
            {
                if (!Fmvalid(this, ref DJTab))
                {
                    return;
                }
                string firstmc = "";
                string nextmc;
                string nextmctext;
                mtgv.PostEditor();
                mtgv.FocusedRowHandle = 1;
                mtgv.FocusedRowHandle = 0;
                DJTab.Focus();
                firstmc = mtgv.VisibleColumns[0].FieldName;
                nextmc = mtgv.VisibleColumns[1].FieldName;
                nextmctext = mtgv.VisibleColumns[1].Caption;
                gsjsz = false;
                Savedjo();
                Savedjm();
                sfzj = 0;
                sftj = false;
                Djload();
            }
            catch (Exception ex)
            {
                MsgExShow("保存单记录", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void BardjSC_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!sfzr) return;
            if (sfzj != 0) return;
            if (MsgSfShow("单记录删除操作直接提交数据,删除的单记录将无法恢复,确实要删除当前单记录吗?") != System.Windows.Forms.DialogResult.OK) return;
            try
            {
                string dqoid = Baroid.EditValue.ToString();
                string yzstr = KcDb.DBexec("select dbo.x9_tj_when('" + pDQYH + "','" + fdjmc + "','" + dqoid + "')");
                if (yzstr.Trim() != pDQYH)
                {
                    MsgOxShow(yzstr + "\r\n" + "单记录不能删除");
                    return;
                }
                if (KcDb.DBString("select x9_djoid(0,'" + ft1 + "','" + ft1oid + "','" + oidqz + "')") != "")
                {
                    MsgOxShow("单记录号未能更新" + "\r\n" + "单记录不能删除");
                    return;
                }
                dt1.Rows[dqdjh].Delete();
                for (int s = dt2.DefaultView.Count - 1; s >= 0; s--)
                {
                    dt2.DefaultView[s].Delete();
                }
                DataTable udt1 = dt1.GetChanges();
                if (udt1 != null)
                {
                    if (KcDb.GetDtSaven(ft1, udt1))
                    {
                        dt1.AcceptChanges();
                    }
                }
                udt1 = null;
                DataTable udt2 = dt2.GetChanges();
                if (udt2 != null)
                {
                    if (KcDb.GetDtSaven(ft2, udt2))
                    {
                        dt2.AcceptChanges();
                    }
                }
                udt2 = null;
                dqdjs = dt1.Rows.Count;
                if (dqdjs > 0)
                {
                    dqdjh = 0;
                }
                else
                {
                    dqdjh = -1;
                }
                Btpg4_ItemClick(null, null);
                // 删除单记录时未删除关联信息,需要在后台处理
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                MsgExShow("删除单记录", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void BardjTJ_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!sfzr) return;
            try
            {
                sfzj = 1;
                Barenabled();
                Fmxmclear(false);
                DJTab.SelectedTabPageIndex = 0;
                DJTab.TabPages[0].Controls[0].Focus();
                Baroid.EditValue = KcDb.DBString("select x9_djoid(2,'" + ft1 + "','" + ft1oid + "','" + oidqz + "')");
                dqdt2.Rows.Clear();
                dqdt2.AcceptChanges();
                // 添加时增行,所有人员
                for (int r = 0; r < dtbmry.Rows.Count; r++)
                {
                    DataRow nrow = dqdt2.NewRow();
                    nrow["rybh"] = dtbmry.Rows[r]["rybh"];
                    nrow["ryxm"] = dtbmry.Rows[r]["ryxm"];
                    dqdt2.Rows.Add(nrow);
                }
                mtgv.OptionsBehavior.ReadOnly = false;
                mtgv.RefreshData();
                Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + dt1.Rows.Count.ToString().Trim() + "张][" + (mtgv.FocusedRowHandle + 1).ToString().Trim() + "/" + mtgv.RowCount.ToString().Trim() + "行]";
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                MsgExShow("添加单记录", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void BardjXG_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!sfzr) return;
            try
            {
                sfzj = 2;
                Barenabled();
                Fmxmrw(false);
                if (mtgv.RowCount < 2)
                {
                    for (int r = mtgv.RowCount; r <= 1; r++)
                    {
                        DataRow nrow = dqdt2.NewRow();
                        dqdt2.Rows.Add(nrow);
                    }
                }
                mtgv.OptionsBehavior.ReadOnly = false;
                mtgv.FocusedRowHandle = 0;
                mtgv.FocusedColumn = mtgv.VisibleColumns[0];
                mtgv.Focus();
                Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + dt1.Rows.Count.ToString().Trim() + "张][" + (mtgv.FocusedRowHandle + 1).ToString().Trim() + "/" + mtgv.RowCount.ToString().Trim() + "行]";
            }
            catch (Exception ex)
            {
                MsgExShow("修改单记录", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void Bardrwj_itemclick(object sender, ItemClickEventArgs e)
        {
            //收集文件数据
            OpenFileDialog ofd = new OpenFileDialog();
            DataSet DsWj = new DataSet();
            DataTable dtset = null;
            try
            {
                ofd.Filter = "xml文件|*.xml";
                ofd.InitialDirectory = (pDRLJ != "" ? pDRLJ : pFilesXml);
                //打开文件
                if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    DsWj.ReadXml(ofd.FileName);
                }
                else
                {
                    DsWj = null;
                    dtset = null;
                    ofd = null;
                    return;
                }
                if (DsWj.Tables.Count != 2)
                {
                    MsgOxShow("不是有效单据文件,无法导入");
                    return;
                }
                pDRLJ = ofd.FileName.Replace(ofd.SafeFileName, "");
                foreach (DataColumn col in DsWj.Tables[0].Columns)
                {
                    string lm = col.ColumnName;
                    if (lm != lm.ToLower())
                    {
                        col.ColumnName = lm.ToLower();
                    }
                }
                foreach (DataColumn col in DsWj.Tables[1].Columns)
                {
                    string lm = col.ColumnName;
                    if (lm != lm.ToLower())
                    {
                        col.ColumnName = lm.ToLower();
                    }
                }
                int ohs = 0;
                int mhs = 0;
                string droid = "";
                string newoid = "";
                string colname = "";
                int coltch = -1;
                string[] tccol1 = new string[DsWj.Tables[0].Columns.Count];
                for (int i = 0; i <= tccol1.Length - 1; i++)
                {
                    if (DsWj.Tables[0].Columns[i].ColumnName.ToLower() == ft1oid.ToLower() || DsWj.Tables[0].Columns[i].ColumnName.ToLower() == ft1qj.ToLower()
                        || DsWj.Tables[0].Columns[i].ColumnName.ToLower() == ft1tz.ToLower())
                    {
                        tccol1[i] = "";
                    }
                    else
                    {
                        tccol1[i] = DsWj.Tables[0].Columns[i].ColumnName;
                    }
                }
                string[] tccol2 = new string[DsWj.Tables[1].Columns.Count];
                for (int i = 0; i <= tccol2.Length - 1; i++)
                {
                    string fn = DsWj.Tables[1].Columns[i].ColumnName.ToLower();
                    if (fn == ft2oid.ToLower() || fn == ft2mid.ToLower() || fn == ft2qj.ToLower())
                    {
                        tccol2[i] = "";
                    }
                    else
                    {
                        tccol2[i] = DsWj.Tables[1].Columns[i].ColumnName;
                    }
                }
                for (int r1 = 0; r1 <= DsWj.Tables[0].Rows.Count - 1; r1++)
                {
                    //djo
                    newoid = "";
                    coltch = DsWj.Tables[0].Columns.IndexOf(ft1oid);
                    if (coltch < 0)
                    {
                        continue;
                    }
                    coltch = DsWj.Tables[0].Columns.IndexOf(ft2oid);
                    if (coltch < 0)
                    {
                        continue;
                    }
                    droid = DsWj.Tables[0].Rows[r1][ft1oid].ToString();
                    DataRow drorow = dt1.NewRow();
                    for (int c = 0; c <= dt1.Columns.Count - 1; c++)
                    {
                        colname = dt1.Columns[c].ColumnName;
                        coltch = Array.IndexOf(tccol1, colname);
                        if (coltch >= 0)
                        {
                            try
                            {
                                drorow[colname] = DsWj.Tables[0].Rows[r1][coltch];
                            }
                            catch (Exception ex)
                            {
                            }
                        }
                    }
                    newoid = KcDb.DBString("select x9_djoid(1,'" + ft1 + "','" + ft1oid + "','" + oidqz + "')");
                    drorow[ft1oid] = newoid;
                    drorow[ft1qj] = ywqj;
                    drorow[ft1tz] = pDQYH;
                    drorow[ft1sh] = "";
                    drorow[ft1dj] = "";
                    dt1.Rows.Add(drorow);
                    drorow = null;
                    ohs += 1;
                    //djm
                    DataRow[] dcrs2 = DsWj.Tables[1].Select(ft2oid + "='" + droid + "'");
                    DataRow drmrow = null;
                    int dqhh = 1;
                    for (int r2 = 0; r2 <= dcrs2.Length - 1; r2++)
                    {
                        drmrow = dt2.NewRow();
                        for (int c = 0; c <= dt2.Columns.Count - 1; c++)
                        {
                            colname = dt2.Columns[c].ColumnName;
                            coltch = Array.IndexOf(tccol2, colname);
                            if (coltch >= 0)
                            {
                                try
                                {
                                    drmrow[colname] = dcrs2[r2][coltch];
                                }
                                catch (Exception ex)
                                {
                                }
                            }
                        }
                        drmrow[ft2mid] = KcDb.DBInteger("select x9_djmid('" + ft2 + "','" + ft2mid + "')");
                        drmrow[ft2oid] = newoid;
                        drmrow[ft2qj] = ywqj;
                        drmrow["sfdj"] = 0;
                        dt2.Rows.Add(drmrow);
                        dqhh += 1;
                        mhs += 1;
                    }
                }
                ofd = null;
                dtset = null;
                DsWj = null;
                if (ohs > 0)
                {
                    sftj = false;
                    dqdjs = dt1.Rows.Count;
                    Btpg4_ItemClick(null, null);
                    MsgXxShow("单据导入完成,共导入" + ohs.ToString().Trim() + "张" + mhs.ToString().Trim() + "行,请检查导入数据的正确性");
                }
                else
                {
                    MsgXxShow("没有单据被导入");
                }
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                ofd = null;
                dtset = null;
                DsWj = null;
                MsgExShow("文件导入", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void Barenabled()
        {
            BarZR.Enabled = (sfzj == 0);
            BarTJ.Enabled = (sfzj == 0) && (sfzr && (!sftj)) && xzbj;
            BardjTJ.Enabled = (sfzj == 0) && xzbj;
            BardjXG.Enabled = (sfzj == 0) && dqdjs > 0 && (!sfsp) && (!sfdj) && xzbj;
            BardjSC.Enabled = (sfzj == 0) && sfzr && sftj && (dqdjs > 0) && (!sfsp) && (!sfdj) && (dqdjh == dqdjs - 1) && xzbj;
            BarPreview.Enabled = (sfzj == 0) && (sfzr && sftj) && sfsp && xzdy;
            BarPrint.Enabled = (sfzj == 0) && (sfzr && sftj) && sfsp && xzdy;
            BardjCancel.Enabled = (sfzj > 0) && sfzr;
            BardjOK.Enabled = (sfzj > 0) && sfzr;
            BardjDR.Enabled = (sfzj == 1 || sfzj == 2) && sfzr && xzbj;
            Btpg1.Enabled = (sfzj == 0) && dqdjs > 0 && dqdjh != 0;
            Btpg2.Enabled = (sfzj == 0) && dqdjs > 0 && dqdjh != 0;
            Btpg3.Enabled = (sfzj == 0) && dqdjs > 0 && dqdjh != dqdjs - 1;
            Btpg4.Enabled = (sfzj == 0) && dqdjs > 0 && dqdjh != dqdjs - 1;
            BarCZ.Enabled = (sfzj == 0) && dqdjs > 0;
            BarSH.Enabled = (sfzj == 0) && sfzr && sftj && dqdjs > 0 && (!sfdj) && xzsh;
            BarDJ.Enabled = (sfzj == 0) && sfzr && sftj && dqdjs > 0 && sfsp && xzsh;
            BarFullsh.Enabled = (sfzj == 0) && sfzr && sftj && dqdjs > 0 && (!sfdj) && xzsh;
            BarFulldj.Enabled = (sfzj == 0) && sfzr && sftj && dqdjs > 0 && sfsp && xzsh;
            Bardcwj.Enabled = (sfzj == 0) && sfzr && sftj && dqdjs > 0 && xzdc;
            Bardrwj.Enabled = (sfzj == 0) && sfzr && sftj && xzbj;
        }
        private void Barexit_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (sfzj > 0)
            {
                MsgOxShow("正在编辑数据,请确定或取消后退出");
            }
            else
            {
                try
                {
                    SaveFmSet();
                    if (!sftj)
                    {
                        Dttj();
                    }
                    fh = true;
                    dt1 = null;
                    dt2 = null;
                    this.Close();
                }
                catch (Exception ex)
                {
                    MsgExShow("返回上级窗口", ex.Message, ex.Source, ex.StackTrace);
                }
            }
        }
        private void Barfulldj_itemclick(object sender, ItemClickEventArgs e)
        {
            //登账 全部
            if (MsgSfShow("全部登账将一次性登账所有已经符合条件的单据,不符合条件的将被忽略" + Environment.NewLine +
                        "确要执行全部登账吗?") != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }
            try
            {
                string czjg = "";
                bool djtj = false;
                int wcsl = 0;
                for (int r = 0; r <= dt1.Rows.Count - 1; r++)
                {
                    if (dt1.Rows[r][ft1dj].ToString() != "")
                    {
                        continue;
                    }
                    djtj = (dt1.Rows[r][ft1sh].ToString() != "");
                    if (!djtj)
                    {
                        continue;
                    }
                    czjg = KcDb.DBexec("select x9_djdj('" + pDQYH + "','" + pBJMC + "','" + fdjmc + "','" + dt1.Rows[r][ft1oid] + "')");
                    if (czjg == pDQYH)
                    {
                        dt1.Rows[r][ft1dj] = pDQYH;
                        dt2.DefaultView.RowFilter = ft2oid + "='" + dt1.Rows[r][ft1oid] + "'";
                        if (dt2.DefaultView.Count > 0)
                        {
                            for (int t2r = dt2.DefaultView.Count - 1; t2r >= 0; t2r += -1)
                            {
                                dt2.DefaultView[t2r][ft2djbjzd] = true;
                            }
                        }
                        wcsl += 1;
                    }
                    else
                    {
                        MsgOxShow(czjg);
                    }
                }
                DataTable udt2 = dt2.GetChanges(); //表二
                DataTable udt1 = dt1.GetChanges(); //表一
                if (KcDb.GetDtSaven(ft1, udt1, ft2, udt2, "", null, ft1dj, ft2djbjzd, ""))
                {
                    dt1.AcceptChanges();
                    dt2.AcceptChanges();
                }
                udt2 = null;
                udt1 = null;
                sftj = true;
                Djload();
                MsgXxShow("全部单据登账操作已经完成,请检查结果是否正确,本次共完成 " + wcsl.ToString().Trim() + " 张单据的处理!");
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                MsgExShow("登账全部单据", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void Barfullsh_itemclick(object sender, ItemClickEventArgs e)
        {
            //全部审核
            bool spcz = false;
            try
            {
                spcz = !sfsp;
                if (MsgSfShow("全部" + (spcz ? "" : "取消") + "审核" + "将一次性处理所有单据。" + Environment.NewLine +
                          "。请在确定所有数据的正确性和合法性后执行此操作,是否继续?") != System.Windows.Forms.DialogResult.OK)
                {
                    return;
                }
                string czsql = "";
                string czjg = "";
                int wcsl = 0;
                for (int r = 0; r <= dt1.Rows.Count - 1; r++)
                {
                    if (dt1.Rows[r][ft1dj].ToString().Trim() != "")      //已经登账
                    {
                        continue;
                    }
                    if (spcz)
                    {
                        if (dt1.Rows[r][ft1sh].ToString() != "")   //已经审核
                        {
                            continue;
                        }
                    }
                    else
                    {
                        //取消
                        if (dt1.Rows[r][ft1sh].ToString() == "")   //未经审核
                        {
                            continue;
                        }
                        else
                        {
                            if (dt1.Rows[r][ft1sh].ToString() != pDQYH)     //他人审核 
                            {
                                continue;
                            }
                        }
                    }
                    czsql = "select x9_djsp('" + pDQYH + "','" + pBJMC + "','" + fdjmc + "','" + dt1.Rows[r][ft1oid] + "','" + "审核" + "'," + (spcz ? "true" : "false") + ")";
                    czjg = KcDb.DBexec(czsql);
                    if (czjg == pDQYH)
                    {
                        dt1.Rows[r][ft1sh] = (spcz ? pDQYH : "");
                        dt2.DefaultView.RowFilter = ft2oid + "='" + dt1.Rows[r][ft1oid] + "'";
                        if (dt2.DefaultView.Count > 0)
                        {
                            for (int t2r = dt2.DefaultView.Count - 1; t2r >= 0; t2r += -1)
                            {
                                dt2.DefaultView[t2r][ft2shbjzd] = (spcz ? true : false);
                            }
                        }
                        wcsl += 1;
                    }
                    else
                    {
                        MsgOxShow(czjg);
                    }
                    //更新状态值
                }
                DataTable udt2 = dt2.GetChanges(); //表二
                DataTable udt1 = dt1.GetChanges(); //表一
                if (KcDb.GetDtSaven(ft1, udt1, ft2, udt2, "", null, ft1sh, ft2shbjzd, ""))
                {
                    dt1.AcceptChanges();
                    dt2.AcceptChanges();
                }
                udt2 = null;
                udt1 = null;
                sftj = true;
                Djload();
                MsgXxShow("全部" + (spcz ? "" : "取消") + "审核" + "操作已经完成,本次共完成 " + wcsl.ToString().Trim() + " 张单据的处理!");
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                MsgExShow("全部" + (spcz ? "" : "取消") + "审核", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void Barhelp_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            RunHelpyy(this, fgnmc, pSFSJ);
        }
        private void Barpreview_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Doprintdj();
        }
        private void Barprint_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Doprintdj();
        }
        private void Barsh_itemclick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //审核单据
            try
            {
                if (dt1.Rows[dqdjh][ft1dj].ToString() != "")
                {
                    MsgOxShow("单据已经被登账,不能审核或取消审核");
                    return;
                }
                if (sfsp)
                {
                    if (dt1.Rows[dqdjh][ft1sh].ToString() != pDQYH)     //他人审核 
                    {
                        MsgOxShow("不能取消他人审核");
                        return;
                    }
                }
                string czsql = "select x9_djsp('" + pDQYH + "','" + pBJMC + "','" + fdjmc + "','" + dqoid + "','审核'," + (sfsp ? "false" : "true") + ")";
                string czjg = KcDb.DBString(czsql);
                if (czjg == pDQYH)
                {
                    dt1.Rows[dqdjh][ft1sh] = (sfsp ? "" : pDQYH);
                    if (dt2.DefaultView.Count > 0)
                    {
                        for (int t2r = dt2.DefaultView.Count - 1; t2r >= 0; t2r += -1)
                        {
                            dt2.DefaultView[t2r][ft2shbjzd] = (sfsp ? false : true);
                        }
                    }
                    DataTable udt2 = dt2.GetChanges(); //表二
                    DataTable udt1 = dt1.GetChanges(); //表一
                    if (KcDb.GetDtSaven(ft1, udt1, ft2, udt2, "", null, ft1sh, ft2shbjzd, ""))
                    {
                        dt1.AcceptChanges();
                        dt2.AcceptChanges();
                    }
                    udt2 = null;
                    udt1 = null;
                    sftj = true;
                    Djload();
                }
                else
                {
                    MsgOxShow(czjg);
                }
                KcDb.DBclose();
            }
            catch (Exception ex)
            {
                MsgExShow((sfsp ? "审核" : "取消" + "审核") + "单据[" + dqoid + "]", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void BarTJ_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Dttj();
        }
        private void BarZR_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            sfzr = true;
            Dtzr();
        }
        private void Btpg1_ItemClick(object sender, EventArgs e)
        {
            // 首张
            if (dqdjs > 0)
            {
                dqdjh = 0;
                Djload();
            }
            else
            {
                Fmxmclear(true);
                mtgv.OptionsBehavior.ReadOnly = true;
                Gvclear(ref mtgv);
                Barenabled();
            }
        }
        private void Btpg2_ItemClick(object sender, EventArgs e)
        {
            if (dqdjs > 0)
            {
                if (dqdjh > 0)
                {
                    dqdjh--;
                    Djload();
                }
            }
        }
        private void Btpg3_ItemClick(object sender, EventArgs e)
        {
            // 下一张
            if (dqdjs > 0)
            {
                if (dqdjh < dqdjs - 1)
                {
                    dqdjh++;
                    Djload();
                }
            }
        }
        private void Btpg4_ItemClick(object sender, EventArgs e)
        {
            if (dqdjs > 0)
            {
                dqdjh = dqdjs - 1;
                Djload();
            }
            else
            {
                Fmxmclear(true);
                mtgv.OptionsBehavior.ReadOnly = true;
                Gvclear(ref mtgv);
                Barenabled();
            }
        }
        private void Dj_cellvaluechanged(object sender, CellValueChangedEventArgs e)
        {
            mtgv.UpdateSummary();
        }
        private void Dj_focusedrowchanged(object sender, FocusedRowChangedEventArgs e)
        {
            if (savem || mtgv.FocusedRowHandle < 0 || adding) return;
            try
            {
                adding = true;
                dqmrow = mtgv.FocusedRowHandle;
                if (sfzj > 0 && !mtgv.OptionsBehavior.ReadOnly && xzbj &&
                    dqmrow == mtgv.RowCount - 1 && dqmrow < 256)
                {
                    DataRow nrow = dqdt2.NewRow();
                    dqdt2.Rows.Add(nrow);
                    mtgv.RefreshRow(mtgv.RowCount - 1);
                }
                Lczs.Text = $"[{dqdjh + 1}/{dt1.Rows.Count}张][{mtgv.FocusedRowHandle + 1}/{mtgv.RowCount}行]";
            }
            catch
            {
                // 忽略错误
            }
            finally
            {
                adding = false;
            }
        }
        private void Djbuttonedit_buttonclick(object sender, EventArgs e)
        {
            if (mtgv.OptionsBehavior.ReadOnly) return;
            ButtonEdit be = sender as ButtonEdit;
            FmSRCK fmck = new FmSRCK();
            {
                Gdbuttonedit_srck(ref fmck, this, ref mtgv, ref be, fgnbh, fgnmc, ft2, "", dqbmdh, false);
            }
            object bv = be.EditValue;
            be.EditValue = null;
            be.EditValue = bv;
        }
        private void Djbuttonedit_keydown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode != Keys.Enter || mtgv.OptionsBehavior.ReadOnly) return;
            ButtonEdit be = sender as ButtonEdit;
            FmSRCK fmck = new FmSRCK();
            {
                Gdbuttonedit_srck(ref fmck, this, ref mtgv, ref be, fgnbh, fgnmc, ft2, "", dqbmdh, true);
            }
            object bv = be.EditValue;
            be.EditValue = null;
            be.EditValue = bv;
        }
        private void Djload()
        {
            try
            {
                sfzj = 0;
                dqdjs = dt1.Rows.Count;
                loadfm = true;
                if (dqdjh < 0)
                {
                    Fmxmrw(true);
                    dt2.DefaultView.RowFilter = "false";
                    Lczs.Text = "0/0";
                    Lctz.Text = "填制:";
                    Lcdj.Text = "审核:";
                    Lcsh.Text = "签批:";
                }
                else
                {
                    Gvclear(ref mtgv);
                    Baroid.EditValue = dt1.Rows[dqdjh][ft1oid].ToString();
                    Fmxmload();
                    dt2.DefaultView.RowFilter = ft2oid + "='" + Baroid.EditValue.ToString() + "'";
                    dt2.DefaultView.RowStateFilter = (DataViewRowState.CurrentRows);
                    sfsp = dt1.Rows[dqdjh][ft1sh].ToString() != "";
                    sfdj = dt1.Rows[dqdjh][ft1dj].ToString() != "";
                    Lctz.Text = "填制:" + dt1.Rows[dqdjh][ft1tz].ToString();
                    Lcsh.Text = "审核:" + dt1.Rows[dqdjh][ft1sh].ToString();
                    Lcdj.Text = "签批:" + dt1.Rows[dqdjh][ft1dj].ToString();
                    if (dt2.DefaultView.Count > 0)
                    {
                        string gxstr = "";
                        string gxlost = "";
                        for (int c = 0; c < dtbmgx.Rows.Count; c++)
                        {
                            gxstr += "`" + dtbmgx.Rows[c]["gxmc"] + "`";
                        }
                        dqdt2.Rows.Clear();
                        dqdt2.AcceptChanges();
                        DataRow[] nrow;
                        DataRow nrow2;
                        string rybh = "";
                        string ryxm = "";
                        string gxmc;
                        double tjsl = 0;
                        int dqh = -1;
                        for (int r = 0; r < dt2.DefaultView.Count; r++)
                        {
                            if (rybh != dt2.DefaultView[r]["rybh"].ToString())
                            {
                                nrow = dqdt2.Select("rybh='" + dt2.DefaultView[r]["rybh"] + "'");
                                if (nrow.Length > 0)
                                {
                                    dqh = dqdt2.Rows.IndexOf(nrow[0]);
                                }
                                else
                                {
                                    nrow2 = dqdt2.NewRow();
                                    nrow2["rybh"] = dt2.DefaultView[r]["rybh"];
                                    nrow2["ryxm"] = dt2.DefaultView[r]["ryxm"];
                                    dqdt2.Rows.Add(nrow2);
                                    nrow = dqdt2.Select("rybh='" + dt2.DefaultView[r]["rybh"] + "'");
                                    if (nrow.Length > 0)
                                    {
                                        dqh = dqdt2.Rows.IndexOf(nrow[0]);
                                    }
                                }
                            }
                            rybh = dt2.DefaultView[r]["rybh"].ToString();
                            gxmc = dt2.DefaultView[r]["gxmc"].ToString();
                            if (gxstr.IndexOf("`" + gxmc + "`") > -1)
                            {
                                if (dqh >= 0)
                                {
                                    tjsl = Convert.ToDouble(dt2.DefaultView[r]["tjsl"]);
                                    if (tjsl != 0)
                                    {
                                        dqdt2.Rows[dqh][gxmc] = dt2.DefaultView[r]["tjsl"];
                                    }
                                }
                            }
                            else
                            {
                                if (gxlost == "")
                                {
                                    gxlost = gxmc;
                                }
                                else
                                {
                                    if (gxlost.IndexOf(gxmc) <= -1)
                                    {
                                        gxlost += "," + gxmc;
                                    }
                                }
                            }
                        }
                        dqdt2.AcceptChanges();
                        if (gxlost.Length > 0)
                        {
                            MsgXxShow("工序名称:" + gxlost + " 在当前工作中不存在!\r\n" +
                                "这些数据在数据库中依然存在,这将导致严重的数据错误,请删除后重新输入!\r\n" +
                                "文件导入数据时,需要区分工作中心。");
                        }
                        nrow = null;
                        nrow2 = null;
                    }
                    else
                    {
                        Dqdt2cs();
                        dqdt2.AcceptChanges();
                    }
                }
                mtgv.RefreshData();
                mtgv.OptionsBehavior.ReadOnly = true;
                if (dt1.Rows.Count > 0)
                {
                    if (mtgv.RowCount <= 0)
                    {
                        Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + dt1.Rows.Count.ToString().Trim() + "张][0/0行]";
                    }
                    else
                    {
                        Lczs.Text = "[" + (dqdjh + 1).ToString().Trim() + "/" + dt1.Rows.Count.ToString().Trim() + "张][" + (mtgv.FocusedRowHandle + 1).ToString().Trim() + "/" + mtgv.RowCount.ToString().Trim() + "行]";
                    }
                }
                dqoid = Baroid.EditValue.ToString();
                Barenabled();
                loadfm = false;
            }
            catch (Exception ex)
            {
                MsgExShow("加载单记录[" + dqoid + "]", ex.Message, ex.Source, ex.StackTrace);
            }
        }
        private void Djtab_selectedpagechanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
        {
            try
            {
                if (DJTab.TabPages.Count == 0 || DJTab.SelectedTabPage == null) return;
                if (DJTab.SelectedTabPage.Controls.Count <= 0) return;
                int pg = DJTab.SelectedTabPageIndex;
                if (firstedit?[pg] != null)
                    firstedit[pg].Focus();
            }
            catch (Exception ex)
            {
                MsgExShow("选项卡切换", ex.Message, ex.Source, ex.StackTrace);
            }
        }
    
    }
}
相关推荐
明月看潮生19 小时前
编程与数学 03-008 《看潮企业管理软件》项目开发 14 单据审批 6-2
erp·企业开发·项目实践·编程与数学·.net开发·c#编程
明月看潮生19 小时前
编程与数学 03-008 《看潮企业管理软件》项目开发 14 单据审批 6-5
erp·企业开发·项目实践·编程与数学·.net开发·c#编程
明月看潮生21 小时前
编程与数学 03-008 《看潮企业管理软件》项目开发 14 单据审批 6-6
erp·企业开发·项目实践·编程与数学·.net开发·c#编程
明月看潮生1 天前
编程与数学 03-008 《看潮企业管理软件》项目开发 14 单据审批 6-3
erp·企业开发·项目实践·编程与数学·.net开发·c#编程
kuankeTech7 天前
“数改智转”加速跑:外贸ERP助力钢铁智能工厂“提质增效”
大数据·人工智能·经验分享·软件开发·erp
Vicky-Min8 天前
NetSuite中保存Bill时遇到Overage的报错原因
oracle·erp
Henry-SAP8 天前
ERP(SAP) MRP 业务视角全局流程解析
人工智能·sap·软件需求·erp·sap pp
spencer_tseng10 天前
ERP CRM SCM MES PLM SRM WMS OMS HRMS
wms·crm·srm·erp·mes·plm·scm
明月看潮生17 天前
编程与数学 03-008 《看潮企业管理软件》项目开发 08 数据字典 3-2
erp·企业开发·项目实践·编程与数学·.net开发·c#编程