Exemplo n.º 1
0
        private void InsertRecProc(string TblName, List <string> strFieldList, List <List <string> > strRecList)
        {
            if (strRecList.Count <= 0)
            {
                return;
            }

            ArrayList SqlCmdList = new ArrayList();

            for (int i = 0; i < strRecList.Count; i++)
            {
                string strSqlCmd = "Insert Into " + TblName + "(";

                for (int k = 0; k < strFieldList.Count - 1; k++)
                {
                    strSqlCmd += strFieldList[k] + ",";
                }
                strSqlCmd += strFieldList[strFieldList.Count - 1] + ") Values (";

                for (int k = 0; k < strFieldList.Count - 1; k++)
                {
                    strSqlCmd += "'" + strRecList[i][k].ToString() + "'" + ", ";
                }
                strSqlCmd += "'" + strRecList[i][strFieldList.Count - 1].ToString() + "')";

                SqlCmdList.Add(strSqlCmd);
            }

            TSqlDbClass.MultiSqlTranProc(TGlobalVar.sSqlConn, SqlCmdList);
        }
Exemplo n.º 2
0
        private void ItemTypeInit()
        {
            string[] TmpItemType = { "BOOL", "BYTE", "WORD", "DWORD", "INT", "DINT", "REAL", "CHAR", "STRING" };

            ItemTypeCboBox.Items.Clear();
            for (int k = 0; k < TmpItemType.Length; k++)
            {
                ItemTypeCboBox.Items.Add(TmpItemType[k]);
            }

            //************************************添加自定义类型**********************************
            string strSql = "Select * From sysobjects Where Type='U' and Name='" + "CustomItemTbl" + "'";

            if (TSqlDbClass.IsTblExist(ParCfg_DgViewPtr.sSqlConn, strSql) == true)
            {
                DataTable CustomItemTbl = TSqlDbClass.RetnTblBySqlCmd(ParCfg_DgViewPtr.sSqlConn, "Select * From CustomItemTbl");
                for (int k = 0; k < CustomItemTbl.Rows.Count; k++)
                {
                    ItemTypeCboBox.Items.Add(CustomItemTbl.Rows[k]["CustomItemName"].ToString());
                }
            }
            //************************************************************************************

            ItemTypeCboBox.SelectedIndex = 4;
        }
Exemplo n.º 3
0
        //************************************************************************************************

        #region 标签同步
        /// <summary>
        /// 整个组标签同步读
        /// </summary>
        /// <param name="sGroupName"></param>
        /// <param name="itemsV"></param>
        public object[] SyncReadItemsGroup(string sGroupName, OPCDATASOURCE OpcDataSrc) //缓存,设备
        {
            object[] TmpItemsVal = null;

            if (pOpcSrv.CheckOpcGroupExist(sGroupName) == true)
            {
                //根据组名获取相应组标签表
                string    OpcItemTblName = "OpcItemTbl_" + sGroupName;
                DataTable dt             = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From " + OpcItemTblName);
                if (dt != null)
                {
                    int[] ItemsIndex = new int[dt.Rows.Count];
                    for (int k = 0; k < dt.Rows.Count; k++)
                    {
                        ItemsIndex[k] = k;
                    }

                    // OPCDATASOURCE.OPC_DS_CACHE, OPCDATASOURCE.OPC_DS_DEVICE
                    TmpItemsVal = pOpcSrv.SyncReadItems(sGroupName, ItemsIndex, OpcDataSrc);
                }
            }
            else
            {
                MessageBox.Show(sGroupName + "组没有创建!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                TmpItemsVal = null;
            }

            return(TmpItemsVal);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 创建OPC组对象
        /// </summary>
        /// <param name="sGroupName"></param>
        public bool CreateOpcGroup(string sGroupName, bool Active)
        {
            bool bRet = false;

            DataTable OpcGroupTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From OpcGroupTbl where OpcGroupName = '" + sGroupName + "'");
            DataRow   dr          = OpcGroupTbl.Rows[0];

            if (dr != null)
            {
                string sGroupMode      = dr["OpcGroupMode"].ToString();
                int    dwReqUpdateRate = Convert.ToInt32(dr["ReqUpdateRate"].ToString());

                //根据组名获取相应组标签表 "OpcItemTbl_" + sOpcGroupName
                string OpcItemTblName = "OpcItemTbl_" + sGroupName;

                DataTable TmpItemTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From " + OpcItemTblName);
                if (TmpItemTbl != null)
                {
                    GetGroupItemInfo(TmpItemTbl); //根据组标签表获取标签信息
                    bRet = pOpcSrv.CreateOpcGroup(sGroupName, Active, sGroupMode, dwReqUpdateRate, ItemNameList, PlcConnList, dBlockList, ItemTypeList, ItemAddrList, InitValList, CommentList);
                }
                //else
                //{
                //    bRet = false;
                //    MessageBox.Show(sGroupName + "组对应的标签表没有记录,请检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                //}
            }
            //else
            //{
            //    bRet = false;
            //    MessageBox.Show(sGroupName + "组名不存在,请检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            //}

            return(bRet);
        }
Exemplo n.º 5
0
        private void TableStructParInit()
        {
            string[] sFieldName = { "ButtItemName", "BitInfo_0", "BitInfo_1", "BitInfo_2", "BitInfo_3", "BitInfo_4", "BitInfo_5", "BitInfo_6", "BitInfo_7" };
            string[] sDataType  = { "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar" };
            int[]    iMaxLen    = { 32, 16, 16, 16, 24, 16, 16, 16, 16 };
            string[] sAllowNull = { "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null" };

            ParCfg_DgViewPtr.TableParProc(sFieldName, sDataType, iMaxLen, sAllowNull);  //表结构参数初始化

            //**************************************************************************************************************************************************
            Control[] cItemCon = { ItemCon_0, ItemCon_1, ItemCon_2, ItemCon_3, ItemCon_4, ItemCon_5, ItemCon_6, ItemCon_7, ItemCon_8 };
            string[]  sConType = { "ComboBox", "TextBox", "TextBox", "TextBox", "TextBox", "TextBox", "TextBox", "TextBox", "TextBox" };

            ParCfg_DgViewPtr.DgViewParProc(ParCfg_DgView, sFieldCap, cItemCon, sConType, btnRecAdd, btnRecModi, btnRecUp, btnRecDel, btnRecDn);

            //**************************************************************************************************************************************************
            Label[] ItemLblPtr = { ItemLbl_0, ItemLbl_1, ItemLbl_2, ItemLbl_3, ItemLbl_4, ItemLbl_5, ItemLbl_6, ItemLbl_7, ItemLbl_8 };
            for (int k = 0; k < sFieldCap.Length; k++)
            {
                ItemLblPtr[k].Text = sFieldCap[k];
            }

            //**********************************************************************************************************************************
            DataTable ButtDebugTbl = TSqlDbClass.RetnTblBySqlCmd(ParCfg_DgViewPtr.sSqlConn, "Select * From OpcItemTbl_" + "DebugButtPar");

            if (ButtDebugTbl != null && ButtDebugTbl.Rows.Count > 0)
            {
                for (int k = 0; k < ButtDebugTbl.Rows.Count; k++)
                {
                    ItemCon_0.Items.Add(ButtDebugTbl.Rows[k]["ItemName"].ToString());
                }

                ItemCon_0.SelectedIndex = 0;
            }
        }
Exemplo n.º 6
0
        private void DelOutDateRec()
        {
            DateTime Start     = DateTime.Now.AddDays(1 - TGlobalVar.AlarmRecDelDays);
            string   StartDt   = Start.ToString("yyyy-MM-dd") + " 00:00:00";
            string   SqlCmdStr = "Delete From AlarmRecTbl Where Convert(varchar(24),信息时间) < '" + StartDt + "'";

            TSqlDbClass.ExecuteNonQuerySql(TGlobalVar.sSqlConn, SqlCmdStr);
        }
Exemplo n.º 7
0
        private void DelOutDateRec()
        {
            string StartDt = DateTime.Now.AddDays(1 - TGlobalVar.AlarmRecDelDays).ToShortDateString() + " 00:00:00";

            string SqlCmdStr = "Delete From TestRecTbl Where Convert(DateTime,测量时间) < '" + Convert.ToDateTime(StartDt) + "'";

            TSqlDbClass.ExecuteNonQuerySql(TGlobalVar.sSqlConn, SqlCmdStr);
        }
Exemplo n.º 8
0
        private void SqlQueryProc(string StartDt, string EndDt)
        {
            if (Convert.ToDateTime(StartDt) <= Convert.ToDateTime(EndDt))
            {
                string    SqlCmd = string.Format("Select * From AlarmRecTbl Where Convert(varchar(24),信息时间) Between '{0}' And '{1}' Order By Convert(varchar(24),信息时间) Desc", StartDt, EndDt);
                DataTable TmpTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, SqlCmd);

                AlarmRec_DgView.DataSource = TmpTbl;
            }
            else
            {
                MessageBox.Show("起始时间不允许大于终止时间,请调整!");
            }
        }
Exemplo n.º 9
0
        private void SqlQueryProc(DateTime StartDt, DateTime EndDt)
        {
            if (StartDt <= EndDt)
            {
                string    SqlCmd = string.Format("Select * From AlarmRecTbl Where Convert(DateTime,信息时间) Between '{0}' And '{1}' Order By Convert(DateTime,信息时间) Desc", Convert.ToDateTime(StartDt.ToShortDateString() + " 00:00:00"), Convert.ToDateTime(EndDt.ToShortDateString() + " 23:59:59"));
                DataTable TmpTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, SqlCmd);

                AlarmRec_DgView.DataSource = TmpTbl;
            }
            else
            {
                MessageBox.Show("起始时间不允许大于终止时间,请调整!");
            }
        }
Exemplo n.º 10
0
        //************************************************************************************************************
        //*********************************************获取OPC组的标签名**********************************************
        //************************************************************************************************************
        public List <string> GetOpcGroupItemName(string GroupName)
        {
            List <string> lstItemName = null;

            DataTable dt = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From " + "OpcItemTbl_" + GroupName);

            if (dt != null && dt.Rows.Count >= 1)
            {
                lstItemName = new List <string>();
                for (int k = 0; k < dt.Rows.Count; k++)
                {
                    lstItemName.Add(dt.Rows[k]["ItemName"].ToString());
                }
            }

            return(lstItemName);
        }
Exemplo n.º 11
0
        private void frmReadItems_Load(object sender, EventArgs e)
        {
            cmbOpcGroupName.Items.Clear();

            System.Data.DataTable OpcGroupTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From OpcGroupTbl");
            if (OpcGroupTbl != null && OpcGroupTbl.Rows.Count >= 1)
            {
                for (int k = 0; k < OpcGroupTbl.Rows.Count; k++)
                {
                    string OpcGroupName = OpcGroupTbl.Rows[k]["OpcGroupName"].ToString(); //产品名
                    cmbOpcGroupName.Items.Add(OpcGroupName);
                }
            }
            else
            {
                MessageBox.Show("提示:Opc组参数未配置。。。");
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// 同步写组标签初始值
        /// </summary>
        /// <param name="sGroupName"></param>
        /// <param name="itemsIdx"></param>
        /// <param name="itemsVal"></param>
        public bool SyncWrtInitVal(string sGroupName)
        {
            bool bRet = false;

            if (pOpcSrv.CheckOpcGroupExist(sGroupName) == true)
            {
                int[]    itemsIdx = null;
                object[] itemsVal = null;

                //先读取标签组
                string    OpcItemTblName = "OpcItemTbl_" + sGroupName;
                DataTable GroupItemsTbl  = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From " + OpcItemTblName);
                if (GroupItemsTbl != null)
                {
                    if (GroupItemsTbl.Rows.Count >= 1)
                    {
                        itemsIdx = new int[GroupItemsTbl.Rows.Count];
                        itemsVal = new object[GroupItemsTbl.Rows.Count];

                        for (int k = 0; k < GroupItemsTbl.Rows.Count; k++)
                        {
                            DataRow dr = GroupItemsTbl.Rows[k];

                            itemsIdx[k] = k;
                            itemsVal[k] = Convert.ToDecimal(dr["InitVal"]);
                        }

                        bRet = pOpcSrv.SyncWriteItems(sGroupName, itemsIdx, itemsVal);
                    }
                    else
                    {
                        MessageBox.Show(sGroupName + "组记录为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
            }
            else
            {
                MessageBox.Show(sGroupName + "组未创建!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }

            return(bRet);
        }
Exemplo n.º 13
0
        private void OnForm_Load(object sender, EventArgs e)
        {
            if (TSqlDbClass.IsDataBaseExist(TGlobalVar.sMasterSqlConn, TGlobalVar.sDataBase) == false) //数据库不存在则创建数据库
            {
                TSqlDbClass.CreateServerDb(TGlobalVar.sMasterSqlConn, Application.StartupPath, TGlobalVar.sDataBase);
            }

            //************************************************************
            ItemCon_1.SelectedIndex = 0; //Opc组模式

            ParCfg_DgViewPtr = new DgVBindClass(TGlobalVar.sDataBase, TGlobalVar.sSqlConn, TGlobalVar.sMasterSqlConn, this);
            TableStructParInit();

            //******************************************************************
            if (ParCfg_DgViewPtr.TableBindToDgV("OpcGroupTbl") == false)
            {
                MessageBox.Show("数据表创建失败,请检查!");
                Close();
            }
        }
Exemplo n.º 14
0
        private void OnForm_Load(object sender, EventArgs e)
        {
            //*********************************************************************************
            ParCfg_DgViewPtr = new DgVBindClass(TGlobalVar.sDataBase, TGlobalVar.sSqlConn, TGlobalVar.sMasterSqlConn, this);
            ParCfg_TblStructInit();

            //******************************************Opc组名*********************************
            OpcGroupNameCboBox.SelectedIndex = -1;
            DataTable OpcGroupNameTbl = TSqlDbClass.RetnTblBySqlCmd(ParCfg_DgViewPtr.sSqlConn, "Select * From OpcGroupTbl");

            if (OpcGroupNameTbl.Rows.Count >= 1)
            {
                for (int k = 0; k < OpcGroupNameTbl.Rows.Count; k++)
                {
                    OpcGroupNameCboBox.Items.Add(OpcGroupNameTbl.Rows[k]["OpcGroupName"].ToString());
                }

                OpcGroupNameCboBox.SelectedIndex = 0; //触发
            }
            //*********************************************************************************
        }
Exemplo n.º 15
0
        private void TableStructParInit()
        {
            string[] sFieldName = { "AlarmItem", "AlarmType", "AlarmInfo" };
            string[] sDataType  = { "Varchar", "Varchar", "Varchar" };
            int[]    iMaxLen    = { 16, 8, 64 };
            string[] sAllowNull = { "Not Null", "Not Null", "Not Null" };

            ParCfg_DgViewPtr.TableParProc(sFieldName, sDataType, iMaxLen, sAllowNull);  //表结构参数初始化

            //**************************************************************************************************************************************************
            Control[] cItemCon = { ItemCon_0, ItemCon_1, ItemCon_2 };
            string[]  sConType = { "ComboBox", "ComboBox", "TextBox" };

            ParCfg_DgViewPtr.DgViewParProc(ParCfg_DgView, sFieldCap, cItemCon, sConType, btnRecAdd, btnRecModi, btnRecUp, btnRecDel, btnRecDn);

            //**************************************************************************************************************************************************
            Label[] ItemLblPtr = { ItemLbl_0, ItemLbl_1, ItemLbl_2 };
            for (int k = 0; k < sFieldCap.Length; k++)
            {
                ItemLblPtr[k].Text = sFieldCap[k];
            }

            CommentCboBox.Items.Clear();
            DataTable AlarmItemTbl = TSqlDbClass.RetnTblBySqlCmd(ParCfg_DgViewPtr.sSqlConn, "Select * From OpcItemTbl_" + "AlarmMsgPar");

            if (AlarmItemTbl != null && AlarmItemTbl.Rows.Count > 0)
            {
                for (int k = 0; k < AlarmItemTbl.Rows.Count; k++)
                {
                    ItemCon_0.Items.Add(AlarmItemTbl.Rows[k]["ItemName"].ToString());
                    CommentCboBox.Items.Add(AlarmItemTbl.Rows[k]["Comment"].ToString());
                }

                ItemCon_0.SelectedIndex = 0;
            }

            ItemCon_1.SelectedIndex = 0;
        }
Exemplo n.º 16
0
        private void frmTestRecView_Load(object sender, EventArgs e)
        {
            DelOutDateRec();
            DgViewInit(TestRecDgView);
            ProdNameCmoBox.Enabled = false;

            DataTable ProdNameTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From ProdNameTbl");

            if (ProdNameTbl != null && ProdNameTbl.Rows.Count >= 1) //产品表存在
            {
                for (int k = 0; k < ProdNameTbl.Rows.Count; k++)
                {
                    string prodName = ProdNameTbl.Rows[k]["ProdName"].ToString();
                    ProdNameCmoBox.Items.Add(prodName);
                }

                if (ProdNameCmoBox.Items.Count >= 1)
                {
                    ProdNameCmoBox.Enabled       = true;
                    ProdNameCmoBox.SelectedIndex = 0;
                }
            }
        }
Exemplo n.º 17
0
        private void QueryBtn_Click(object sender, EventArgs e)
        {
            string StartDt = StartDtPicker.Value.ToShortDateString() + " 00:00:00";;
            string EndDt   = EndDtPicker.Value.ToShortDateString() + " 23:59:59";;

            if (Convert.ToDateTime(StartDt) <= Convert.ToDateTime(EndDt))
            {
                string SqlCmd = null;

                SqlCmd = string.Format("Select * From TestRecTbl Where Convert(DateTime,测量时间) Between '{0}' And '{1}' Order By Convert(DateTime,测量时间) Desc", Convert.ToDateTime(StartDt), Convert.ToDateTime(EndDt));
                if (ProdNameChk.Checked == true && ProdNameCmoBox.Text != "")
                {
                    SqlCmd = string.Format("Select * From TestRecTbl Where 产品型号 = '{0}', Convert(DateTime,测量时间) Between '{1}' And '{2}' Order By Convert(DateTime,测量时间) Desc", ProdNameCmoBox.Text, Convert.ToDateTime(StartDt), Convert.ToDateTime(EndDt));
                }

                DataTable TmpTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, SqlCmd);
                TestRecDgView.DataSource = TmpTbl;
            }
            else
            {
                MessageBox.Show("起始时间不允许大于终止时间, 请调整!");
            }
        }
Exemplo n.º 18
0
        private void OnForm_Load(object sender, EventArgs e)
        {
            pPlcSrv = TPlcSrv.GetInstance();
            //pPlcSrv.CreateOpcGroup(ButtDebugGroupName, false );

            //************************************************************************
            DataTable ButtDebugGroupTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From OpcItemTbl_" + ButtDebugGroupName);

            if (ButtDebugGroupTbl == null || ButtDebugGroupTbl.Rows.Count <= 0)
            {
                MessageBox.Show("调试按钮标签未配置,请退出检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            ButtDebugInfoTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From ButtDebugInfoTbl");
            if (ButtDebugInfoTbl == null || ButtDebugGroupTbl.Rows.Count <= 0)
            {
                MessageBox.Show("调试按钮信息未配置,请退出检查!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            //************************************************************************
            CtrlButtList = new List <List <Button> >(RowsNumPerPage);
            for (int k = 0; k < RowsNumPerPage; k++)
            {
                CtrlButtList.Add(null); CtrlButtList[k] = new List <Button>();
            }

            for (int k = 0; k < RowsNumPerPage; k++) //每页的按钮行数
            {
                for (int i = 0; i < 8; i++)          //每行的按钮数
                {
                    Button tmpButt = (Button)findButtCon(this, "Butt" + k.ToString() + "_Bit" + i.ToString());
                    CtrlButtList[k].Add(tmpButt);

                    CtrlButtList[k][i].BackColor = Color.WhiteSmoke;
                    CtrlButtList[k][i].TabIndex  = k * 8 + i;
                }
            }

            PanelList    = new Panel[]  { ButtPanel_0, ButtPanel_1, ButtPanel_2, ButtPanel_3 };
            InfoButtList = new Button[] { InfoButt_0, InfoButt_1, InfoButt_2, InfoButt_3 };      //中间的提示按钮

            //模拟鼠标动作的8个按钮
            MouseCtrlList = new Button[] { Butt0_Bit6, Butt0_Bit7, Butt1_Bit6, Butt1_Bit7, Butt2_Bit6, Butt2_Bit7, Butt3_Bit6, Butt3_Bit7 };
            for (int k = 0; k < MouseCtrlList.Length; k++)
            {
                MouseCtrlList[k].MouseUp   += new MouseEventHandler(this.DebugButt_MouseUp);
                MouseCtrlList[k].MouseDown += new MouseEventHandler(this.DebugButt_MouseDown);
            }

            //读取位配置组行数数,排出在标签配置行记录中的序数
            DebugButtItemID = new List <int>(); DebugButtItemID.Clear(); //相应Debug按钮组在OPC组中的序号
            for (int k = 0; k < ButtDebugInfoTbl.Rows.Count; k++)
            {
                string strItemName = ButtDebugInfoTbl.Rows[k]["ButtItemName"].ToString();

                int ItemID = retnItemNameID(ButtDebugGroupTbl, strItemName);
                DebugButtItemID.Add(ItemID);
            }

            //当前页码
            PageIdx = 0;
            RefeshButtInfo(PageIdx, ButtDebugInfoTbl.Rows.Count);

            ButtStatusTimer.Enabled = true;
        }
Exemplo n.º 19
0
        private DataTable RetnExtItemsTbl(DataTable dt)
        {
            try
            {
                int    n      = -1;
                int    offset = 0; //偏移量。
                int    ItemNum;
                string InitItemAddr, ItemAddr;

                DataTable tmpdt = new DataTable(); //需要先定义表结构
                DataRow   tmpdr = null;

                string[] ColName = { "ItemName", "PlcConn", "dBlock", "ItemType", "ItemAddr", "InitVal", "Comment" };
                for (int k = 0; k < ColName.Length; k++)
                {
                    tmpdt.Columns.Add(new DataColumn(ColName[k], typeof(System.String)));
                }

                for (int i = 0; i < dt.Rows.Count; i++)                               //OPC标签组记录行数
                {
                    ItemNum      = Convert.ToInt32(dt.Rows[i]["ItemNum"]);            //当前类型标签数量
                    InitItemAddr = dt.Rows[i]["ItemAddr"].ToString();                 //初始标签地址

                    if (CustomItemTypeChk(dt.Rows[i]["ItemType"].ToString()) == true) //定制类型判别
                    {
                        string    CustItemTypeTblName = "CustomItemTbl_" + dt.Rows[i]["ItemType"].ToString();
                        DataTable Customdt            = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From " + CustItemTypeTblName); //自定义标签类型表

                        if (Customdt != null && Customdt.Rows.Count > 0)
                        {
                            offset = RetnCustomOffset(Customdt);                          //定制标签偏置值
                            for (int j = 0; j < ItemNum; j++)                             //当前类型标签数量
                            {
                                for (int k = 0; k < Customdt.Rows.Count; k++)             //自定义标签类型表的行数
                                {
                                    n     = -1;
                                    tmpdr = tmpdt.NewRow();

                                    n++; tmpdr[n] = Customdt.Rows[k]["ItemName"];

                                    n++; tmpdr[n] = dt.Rows[i]["PlcConn"];
                                    n++; tmpdr[n] = dt.Rows[i]["dBlock"];

                                    n++; tmpdr[n] = Customdt.Rows[k]["ItemType"];
                                    Decimal TmpItemAddr = Convert.ToDecimal(InitItemAddr) + Convert.ToDecimal(Customdt.Rows[k]["ItemAddr"].ToString()) + offset * j;
                                    n++; tmpdr[n] = TmpItemAddr.ToString();               //标签地址

                                    n++; tmpdr[n] = dt.Rows[i]["InitVal"];
                                    n++; tmpdr[n] = dt.Rows[i]["Comment"];

                                    tmpdt.Rows.Add(tmpdr);
                                }
                            }
                        }
                    }
                    else  //标准标签类型行 "ItemName", "PlcConn", "dBlock", "ItemType", "ItemAddr", "ItemNum", "InitVal", "Comment"
                    {
                        ItemAddr = InitItemAddr;
                        for (int k = 0; k < ItemNum; k++)  //标签类型数量
                        {
                            n     = -1;
                            tmpdr = tmpdt.NewRow();

                            n++; tmpdr[n] = dt.Rows[i]["ItemName"];
                            n++; tmpdr[n] = dt.Rows[i]["PlcConn"];
                            n++; tmpdr[n] = dt.Rows[i]["dBlock"];
                            n++; tmpdr[n] = dt.Rows[i]["ItemType"];
                            n++; tmpdr[n] = ItemAddr;
                            n++; tmpdr[n] = dt.Rows[i]["InitVal"];
                            n++; tmpdr[n] = dt.Rows[i]["Comment"];

                            tmpdt.Rows.Add(tmpdr);
                            ItemAddr = ResetOctalToString(Convert.ToDecimal(ItemAddr), dt.Rows[i]["ItemType"].ToString());
                        }
                    }
                }

                return(tmpdt);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error :" + ex.ToString());
                return(null);
            }
        }
Exemplo n.º 20
0
        private void buttOk_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtXlsFileName.Text != "" && txtXlsForm.Text.Trim() != "" && cmbOpcGroupName.Text != "")
                {
                    int iStartRow = (int)neStartRow.Value, iEndRow = (int)neEndRow.Value;
                    int iStartCol = (int)neStartCol.Value, iEndCol = (int)neEndCol.Value;

                    ExcelAppClass MyExcelApp = new ExcelAppClass();
                    MyExcelApp.OpenExistFile(strXlsFileName);
                    MyExcelApp.App.Visible = false;

                    //int usedRows = MyExcelApp.GetSheet(txtXlsForm.Text).UsedRange.Rows.Count;
                    //int usedCols = MyExcelApp.GetSheet(txtXlsForm.Text).UsedRange.Columns.Count;

                    //******************************************检查数据表是否存在,不存在创建**************************************
                    string sTableName = "OpcItemTbl_" + cmbOpcGroupName.Text;

                    string[] sFieldName = { "ItemName", "PlcConn", "dBlock", "ItemType", "ItemAddr", "ItemNum", "InitVal", "Comment" };
                    string[] sDataType  = { "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar", "Varchar" };
                    int[]    iMaxLen    = { 24, 24, 16, 24, 48, 12, 16, 32 };
                    string[] sAllowNull = { "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null", "Not Null" };

                    if (TSqlDbClass.CreateTableByDateTime(TGlobalVar.sSqlConn, sTableName, sFieldName, sDataType, iMaxLen, sAllowNull) == false)
                    {
                        MessageBox.Show("数据表创建失败,请检查!", "警告");
                        return;
                    }

                    //**************************************************************************************************************
                    DateTime dtColTime = DateTime.Now;
                    List <List <string> > strRecBufPtr = new List <List <string> >();

                    if (buttKeepAdd.Checked == true)
                    {
                        System.Data.DataTable DataRecTbl = TSqlDbClass.RetnTblBySqlCmd(TGlobalVar.sSqlConn, "Select * From " + sTableName);
                        if (DataRecTbl != null && DataRecTbl.Rows.Count >= 1)
                        {
                            for (int k = 0; k < DataRecTbl.Rows.Count; k++)
                            {
                                List <string> strRecBuf = new List <string>();

                                strRecBuf.Add(dtColTime.ToString("yyyy-mm-dd hh:mm:ss:fff"));
                                for (int j = 0; j < sFieldName.Length; j++)
                                {
                                    string strFieldVal = DataRecTbl.Rows[k][sFieldName[j]].ToString();
                                    strRecBuf.Add(strFieldVal);
                                }
                                strRecBufPtr.Add(strRecBuf);

                                dtColTime = dtColTime.AddMilliseconds(1);
                            }
                        }
                    }

                    //*****************************************************************************************************
                    TSqlDbClass.ExecuteNonQuerySql(TGlobalVar.sSqlConn, "Delete From " + sTableName);
                    for (int i = 0; i <= iEndRow - iStartRow; i++)
                    {
                        List <string> strRecBuf = new List <string>();
                        strRecBuf.Add(dtColTime.ToString("yyyy-mm-dd hh:mm:ss:fff"));

                        for (int j = 0; j <= iEndCol - iStartCol; j++)
                        {
                            Range TmpRng = (Range)MyExcelApp.GetSheet(txtXlsForm.Text).Cells[i + iStartRow, j + iStartCol];
                            strRecBuf.Add(Convert.ToString(TmpRng.Value2));
                        }
                        strRecBufPtr.Add(strRecBuf);

                        dtColTime = dtColTime.AddMilliseconds(1);
                    }

                    List <string> strFieldList = new List <string>();
                    strFieldList.Add("ID_DateTime");
                    for (int k = 0; k < sFieldName.Length; k++)
                    {
                        strFieldList.Add(sFieldName[k]);
                    }

                    InsertRecProc(sTableName, strFieldList, strRecBufPtr);

                    MyExcelApp.Close();
                }
                else
                {
                    MessageBox.Show("Opc组名或Excel表单名没填写, 请检查!", "提示");
                }
            }

            catch (Exception ex)
            {
                throw ex;
            }
        }