/// <summary>
        /// 增加通知单作废记录
        /// </summary>
        /// <param name="MODELINFORMCANCELRECORD"></param>
        /// <returns></returns>
        public bool Insert(MODELINFORMCANCELRECORD MODELINFORMCANCELRECORD)
        {
            StringBuilder str = new StringBuilder();

            str.Append("INSERT INTO INFORMCANCELRECORD(INFORMCANCELID,INFORMNO,READMETERRECORDID,OPERATORID,OPERATORNAME,OPERATORDATETIME,CANCELREASON,MEMO)" +
                       " VALUES(@INFORMCANCELID,@INFORMNO,@READMETERRECORDID,@OPERATORID,@OPERATORNAME,@OPERATORDATETIME,@CANCELREASON,@MEMO)");

            SqlParameter[] para =
            {
                new SqlParameter("@INFORMCANCELID",    SqlDbType.VarChar,    50),
                new SqlParameter("@INFORMNO",          SqlDbType.VarChar,    50),
                new SqlParameter("@READMETERRECORDID", SqlDbType.VarChar,    50),
                new SqlParameter("@OPERATORID",        SqlDbType.VarChar,    50),
                new SqlParameter("@OPERATORNAME",      SqlDbType.VarChar,    50),
                new SqlParameter("@OPERATORDATETIME",  SqlDbType.DateTime),
                new SqlParameter("@CANCELREASON",      SqlDbType.VarChar,   200),
                new SqlParameter("@MEMO",              SqlDbType.VarChar, 50)
            };

            para[0].Value = MODELINFORMCANCELRECORD.INFORMCANCELID;
            para[1].Value = MODELINFORMCANCELRECORD.INFORMNO;
            para[2].Value = MODELINFORMCANCELRECORD.READMETERRECORDID;
            para[3].Value = MODELINFORMCANCELRECORD.OPERATORID;
            para[4].Value = MODELINFORMCANCELRECORD.OPERATORNAME;
            para[5].Value = MODELINFORMCANCELRECORD.OPERATORDATETIME;
            para[6].Value = MODELINFORMCANCELRECORD.CANCELREASON;
            para[7].Value = MODELINFORMCANCELRECORD.MEMO;

            if (DBUtility.DbHelperSQL.ExecuteSql(str.ToString(), para) > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        private void btCancel_Click(object sender, EventArgs e)
        {
            //获取连打起始号及终止号
            int intStartRow = 0, intEndRow = dgList.Rows.Count - 1;

            if (!Information.IsNumeric(txtStartRow.Text))
            {
                mes.Show("请输入连打起始行号!");
                txtStartRow.Focus();
                return;
            }
            else
            {
                if (Convert.ToInt32(txtStartRow.Text) < 1)
                {
                    mes.Show("连打起始行号不能小于1!");
                    txtStartRow.Focus();
                    return;
                }
                intStartRow = Convert.ToInt32(txtStartRow.Text);
            }
            if (Information.IsNumeric(txtEndRow.Text))
            {
                if (Convert.ToInt32(txtStartRow.Text) > Convert.ToInt32(txtEndRow.Text))
                {
                    mes.Show("连打起始行号不能大于终止行号!");
                    txtEndRow.Focus();
                    return;
                }
                if (Convert.ToInt32(txtEndRow.Text) < dgList.Rows.Count)
                {
                    intEndRow = Convert.ToInt32(txtEndRow.Text);
                }
            }
            if (txtMemo.Text.Trim() == "")
            {
                mes.Show("请输入作废原因!");
                txtMemo.Focus();
                return;
            }
            if (mes.ShowQ("确定要作废第 " + intStartRow.ToString() + " 至第 " + intEndRow.ToString() + " 行的通知单信息吗?") != DialogResult.OK)
            {
                return;
            }
            for (int i = intEndRow - 1; i >= intStartRow - 1; i--)
            {
                //获取抄表记录ID
                string strreadMeterRecordId = "";

                object objreadMeterRecordId = dtUserList.Rows[i]["readMeterRecordId"];
                if (objreadMeterRecordId != null && objreadMeterRecordId != DBNull.Value)
                {
                    strreadMeterRecordId = objreadMeterRecordId.ToString();
                    MODELINFORMCANCELRECORD MODELINFORMCANCELRECORD = new MODELINFORMCANCELRECORD();

                    MODELINFORMCANCELRECORD.INFORMCANCELID    = GETTABLEID.GetTableID("", "INFORMCANCELRECORD");
                    MODELINFORMCANCELRECORD.READMETERRECORDID = strreadMeterRecordId;

                    object objInformNO = dtUserList.Rows[i]["INFORMNO"];
                    if (objInformNO != null && objInformNO != DBNull.Value)
                    {
                        MODELINFORMCANCELRECORD.INFORMNO = objInformNO.ToString();
                    }

                    MODELINFORMCANCELRECORD.OPERATORID = strLogID;

                    MODELINFORMCANCELRECORD.OPERATORNAME = strUserName;

                    MODELINFORMCANCELRECORD.CANCELREASON     = txtMemo.Text;
                    MODELINFORMCANCELRECORD.OPERATORDATETIME = mes.GetDatetimeNow();

                    if (BLLINFORMCANCELRECORD.Insert(MODELINFORMCANCELRECORD))
                    {
                        if (BLLreadMeterRecord.UpdateCancelInformNO(strreadMeterRecordId))
                        {
                            dtUserList.Rows.Remove(dtUserList.Rows[i]);
                        }
                        else
                        {
                            //回滚通知单作废记录表
                            BLLINFORMCANCELRECORD.Delete(MODELINFORMCANCELRECORD.INFORMCANCELID);
                        }
                    }
                    else
                    {
                        mes.Show("第'" + (i + 1).ToString() + "行通知单作废失败,请重试!");
                        return;
                    }
                }
                else
                {
                    mes.Show("第'" + (i + 1).ToString() + "行抄表ID获取失败,无法执行打印操作!");
                    return;
                }
            }
        }