首页 > 其他 > 详细

页面最基本的crud写法

时间:2021-03-16 11:36:45      阅读:34      评论:0      收藏:0      [点我收藏+]

记录一下通过映射来完成静态表页面的增删改查功能

1.页面的查询

    #region 自定义函数-查询方法

        private void Query()
        {
            try
            {   //数据块接收前台传入的参数
                EI.EIInfo inBlock = new EI.EIInfo();
                EI.EIInfo outBlock = new EI.EIInfo();


                //分页使用参数  
                inBlock.Tables[0].Columns.Add("LG_ST");
                inBlock.Tables[0].Columns.Add("ST_NO");
                //查询使用参数
                inBlock.Tables[0].Rows.Add();
                inBlock.Tables[0].Rows[0]["LG_ST"] = this.lg_st.Text.Trim();
                inBlock.Tables[0].Rows[0]["ST_NO"] = this.st_no.Text.Trim();

                //调用调用后台程序pmommahr71_inq
                outBlock = EI.EIManager.Instance.CallService("MA1RM", "pmommahr71_inq", inBlock);
                if (outBlock.sys_info.flag < 0)
                {
                    this.EFMsgInfo = outBlock.sys_info.msg + "\n" + outBlock.sys_info.sysmsg;
                }
                else
                {
                    this.EFMsgInfo = "查询成功!";
                }
                EF.Utility.SetCustomGridValue(efDevGrid1, outBlock);//绑定查询数据
                this.gridView1.BestFitColumns();

            }
            catch (Exception e)
            {

                this.EFMsgInfo = e.Message;
            }

        }

        #endregion
//数据库变量
    CDbCommand cmd(conn);

    try
    {

        st_no = bcls_rec->Tables[0].Rows[0]["ST_NO"].ToString().Trim();
        lg_st = bcls_rec->Tables[0].Rows[0]["LG_ST"].ToString().Trim();
        Log::Trace("", "", "st_no=[{0}]", st_no);
        Log::Trace("", "", "lg_st=[{0}]", lg_st);

        sqlwhere = " WHERE 1=1 ";

        if (st_no.GetLength() > 0)
        {
            sqlwhere += " AND ST_NO=‘" + st_no + "";
        }
        if (lg_st.GetLength() > 0)
        {
            sqlwhere += " AND LG_ST=‘" + lg_st + "";
        }
        sqlstr = "SELECT * FROM PMOMMA.TPMOMMA71 " + sqlwhere;
        cmd.SetCommandText(sqlstr);
        cmd.ExecuteQuery(bcls_ret->Tables[0]);
        cmd.Close();
        Log::Trace("", "", "sqlstr=[{0}]", sqlstr);


        strcpy(s.msg, _RES("PMOMS0000311")/*查询成功!*/);
    }
    catch (CDbException& ex)
    {
        CFormattable arguments[] = { ex.GetCode(), ex.GetMsg() };
        CMessageFormat::Format(s.msg, _RES("GCRSS0000021")/*信息读取失败。*/, arguments, 1);
        CString str = sqlstr + "\r\n" + ex.GetMsg();
        strncpy(s.sysmsg, (const char*)str, sizeof(s.sysmsg) - 1);
        s.flag = -1;
        doFlag = -1;
    }
    catch (CApplicationException& ex)
    {
        s.flag = ex.GetCode();
        doFlag = -1;
    }
    catch (CException& ex)
    {
        strcpy(s.msg, ex.GetMsg());
        s.flag = ex.GetCode();
        doFlag = -1;
    }
    return doFlag;
}

2.页面新增

新增有三个操作预处理以及处理和取消

 #region F3 新增

        private void FormPMOMMAHR71_EF_PRE_DO_F3(object sender, EF.EF_Args e)
        {
            //去掉画面上没变过值的数据
            for (int i = 0; i < gridView1.DataRowCount; i++)
            {
                if (gridView1.GetDataRow(i).RowState == DataRowState.Unchanged)
                {
                    this.efDevGrid1.SetSelectedColumnChecked(i, false);
                }
            }

            //完成操作
            int rowCount = this.efDevGrid1.GetSelectedDataRow().Rows.Count;

            if (rowCount <= 0)
            {
                this.EFMsgInfo = "没有需要新增的记录!";
                this.ef_args.buttonStatusHold = true;
                return;
            }

            this.EFMsgInfo = "将新增" + rowCount.ToString() + "条记录,请确认或取消操作。";

        }

        private void FormPMOMMAHR71_EF_DO_F3(object sender, EF.EF_Args e)
        {

            EI.EIInfo inInfo = new EI.EIInfo();
            inInfo.Tables[0].Merge(this.efDevGrid1.GetSelectedDataRow());

            EI.EIInfo outInfo = EI.EIManager.Instance.CallService("MA1RM", "pmommahr71_ins", inInfo);

            /* 获取程序处理信息,提示 */
            this.EFMsgInfo = outInfo.sys_info.msg;
            /* 处理失败则 返回提示信息 */
            if (outInfo.sys_info.flag < 0)
            {
                this.EFMsgInfo = outInfo.sys_info.msg + "\n" + outInfo.sys_info.sysmsg;
                this.ef_args.buttonStatusHold = true;
                return;
            }
            //调用查询函数刷新画面
            Query();
        }

        private void FormPMOMMAHR71_EF_CANCEL_DO_F3(object sender, EF.EF_Args e)
        {
            Query();
        }
        #endregion

后台插入数据时需要将用户id以及事创建时间进行记录

    CTracer log(__FUNCTION__);
    int doFlag = 0;
    CString sqlstr = " ";
    //定义变量--取系统当前时间
    CString datetimeNow = CDateTime::Now().ToString("yyyyMMddHHmmss");
    CString v_curr_time = "";
    try
    {
        /*实体类定义*/
        CTPMOMMA71 tpmomma71_inf(conn);
        sqlstr = "INSERT PMOMMA.TPMOMMA71";
        int count = bcls_rec->Tables[0].Rows.get_Count();
        for (int i = 0; i < count; i++)
        {

            /*获取当前时间*/
            CString sql_time = "SELECT SUBSTR(TO_CHAR(current timestamp,‘yyyymmddhh24missff6‘),1,20) \
                                                                                                                                                                                                                                                                                                                        FROM sysibm.sysdummy1 ";
            sqlstr = sql_time;
            CDbCommand cmd_time(sql_time, conn);
            cmd_time.ExecuteReader();
            if (cmd_time.Read())
            {
                v_curr_time = cmd_time.GetString(1);
            }
            cmd_time.Close();
            Log::Trace("", "", "v_curr_time=[{0}]", v_curr_time);

            //重置表结构变量
            tpmomma71_inf.Reset();
            tpmomma71_inf.TrimOrBlank();
            // 取得单行传入信息 
            tpmomma71_inf.MergeFrom(bcls_rec->Tables[0].Rows[i]);
            tpmomma71_inf.TC_SEQ_NO = v_curr_time;
            tpmomma71_inf.REC_CREATOR = s.userid;
            tpmomma71_inf.REC_CREATE_TIME = datetimeNow;
            tpmomma71_inf.REC_REVISOR = s.userid;
            tpmomma71_inf.REC_REVISE_TIME = datetimeNow;

            //新增记录
            tpmomma71_inf.Insert();
        }
        CFormattable arguments[] = { count };
        CMessageFormat::Format(s.msg, _RES("PMOMS0000339")/*共新增了[{0}]条记录!*/, arguments, 1);
    }
    catch (CDbException& ex)  //捕获数据库操作异常
    {
        CFormattable arguments[] = { ex.GetCode() };
        CMessageFormat::Format(s.msg, _RES("GCRSS0000006")/*数据库处理出错,sqlcode = [{0}]。请联系系统维护人员。*/, arguments, 1);
        CString str = sqlstr + "\r\n" + ex.GetMsg();
        strncpy(s.sysmsg, (const char *)str, sizeof(s.sysmsg) - 1);
        s.flag = -1;
        doFlag = -1;      //数据库异常时返回-1,事务将被回滚
    }
    catch (CApplicationException& ex)  //捕获应用错误
    {
        s.flag = ex.GetCode();
        doFlag = -1;
    }
    catch (CException& ex)
    {
        strncpy(s.msg, (const char *)ex.GetMsg(), sizeof(s.msg) - 1);
        s.flag = ex.GetCode();
        doFlag = -1;
    }

    return doFlag;
}

 

3.页面修改

 #region F4 修改

        private void FormPMOMMAHR71_EF_PRE_DO_F4(object sender, EF.EF_Args e)
        {

            //去掉画面上新增的数据
            int count = 0;
            for (int i = 0; i < gridView1.DataRowCount + count; i++)
            {
                if (gridView1.GetDataRow(i - count).RowState == DataRowState.Added ||
                    gridView1.GetDataRow(i - count).RowState == DataRowState.Detached)
                {
                    gridView1.SetRowCellValue(i - count, this.efDevGrid1.SelectionColumn, false);
                    gridView1.GetDataRow(i - count).RejectChanges();
                    count++;
                }
            }

            //去掉画面上没变过值的数据
            for (int i = 0; i < gridView1.DataRowCount; i++)
            {
                if (gridView1.GetDataRow(i).RowState == DataRowState.Unchanged)
                {
                    gridView1.SetRowCellValue(i, this.efDevGrid1.SelectionColumn, false);

                }
            }

            //完成操作
            int rowCount = this.efDevGrid1.GetSelectedDataRow().Rows.Count;

            if (rowCount <= 0)
            {
                this.EFMsgInfo = "没有需要修改的记录!";
                this.ef_args.buttonStatusHold = true;
                return;
            }

            this.EFMsgInfo = "将修改" + rowCount.ToString() + "条记录,请确认或取消操作。";
        }
        private void FormPMOMMAHR71_EF_DO_F4(object sender, EF.EF_Args e)
        {
            EI.EIInfo inInfo = new EI.EIInfo();
            inInfo.Tables[0].Merge(this.efDevGrid1.GetSelectedDataRow());

            EI.EIInfo outInfo = EI.EIManager.Instance.CallService("MA1RM", "pmommahr71_upd", inInfo);
            /* 获取程序处理信息,提示 */
            this.EFMsgInfo = outInfo.sys_info.msg;

            /* 处理失败则 返回提示信息 */
            if (outInfo.sys_info.flag < 0)
            {
                this.EFMsgInfo = outInfo.sys_info.msg + "\n" + outInfo.sys_info.sysmsg;
                this.ef_args.buttonStatusHold = true;
                return;
            }

            //调用查询函数刷新画面
            Query();
        }

        private void FormPMOMMAHR71_EF_CANCEL_DO_F4(object sender, EF.EF_Args e)
        {
            Query();
        }
        #endregion

后台

CTracer log(__FUNCTION__);
    int doFlag = 0;
    CString sqlstr = " ";
    try
    {
        CTPMOMMA71 tpmomma71_inf(conn);
        sqlstr = "UPDATE TPMOMMA71 ";
        int count = bcls_rec->Tables[0].Rows.get_Count();
        for (int i = 0; i < count; i++)
        {
            tpmomma71_inf.Reset();
            tpmomma71_inf.TrimOrBlank();
            tpmomma71_inf.MergeFrom(bcls_rec->Tables[0].Rows[i]);
            tpmomma71_inf.REC_REVISE_TIME = s.datetime;
            tpmomma71_inf.REC_REVISOR = s.userid;

            int rowAffected = tpmomma71_inf.Update("REC_REVISOR,REC_REVISE_TIME,ST_NO,LG_ST,HOTSND_L,HCR_DECIDE,HDR_DECIDE,"
                "CHARGE_DIV,HAND_CLEAR_FLAG,FLAME_CLEAN,COOL_TIME,CARRY_SEND_DIV,REMARK,HOTCHG_CHG_1,HOTCHG_CHG_2,HOTCHG_CHG_3", "TC_SEQ_NO");
            Log::Trace("", "", "影响行数=[{0}]", rowAffected);
            if (rowAffected < 0)
            {
                strcpy(s.msg, "修改失败");
                s.flag = -1;
                return -1;
            }
        }
    }
    catch (CDbException& ex)
    {
        CFormattable arguments[] = { ex.GetCode(), ex.GetMsg() };
        CMessageFormat::Format(s.msg, "Database Error,sqlcode=[{0}],sqlmsg=[{1}]", arguments, 2);
        CString str = sqlstr + "\r\n" + ex.GetMsg();
        strncpy(s.sysmsg, (const char*)str, sizeof(s.sysmsg) - 1);
        s.flag = -1;
        doFlag = -1;
    }
    catch (CApplicationException& ex)
    {
        s.flag = ex.GetCode();
        doFlag = -1;
    }

4.删除

 #region F5 删除

        private void FormPMOMMAHR71_EF_PRE_DO_F5(object sender, EF.EF_Args e)
        {
            //去掉画面上新增的数据
            int count = 0;
            for (int i = 0; i < gridView1.DataRowCount + count; i++)
            {

                if (gridView1.GetDataRow(i - count).RowState == DataRowState.Added ||
                    gridView1.GetDataRow(i - count).RowState == DataRowState.Detached)
                {
                    gridView1.SetRowCellValue(i - count, this.efDevGrid1.SelectionColumn, false);
                    gridView1.GetDataRow(i - count).RejectChanges();
                    count++;
                }
            }

            int rowCount = this.efDevGrid1.GetSelectedDataRow().Rows.Count;

            if (rowCount <= 0)
            {
                this.EFMsgInfo = "没有需要删除的记录!";
                this.ef_args.buttonStatusHold = true;
                return;
            }

            this.EFMsgInfo = "将删除" + rowCount.ToString() + "条记录,请确认或取消操作。";
        }
        private void FormPMOMMAHR71_EF_DO_F5(object sender, EF.EF_Args e)
        {
            EI.EIInfo inBlock = new EI.EIInfo();

            inBlock.Tables[0].Merge(this.efDevGrid1.GetSelectedDataRow());

            EI.EIInfo outInfo = EI.EIManager.Instance.CallService("MA1RM", "pmommahr71_del", inBlock);

            /* 获取程序处理信息,提示 */
            this.EFMsgInfo = outInfo.sys_info.msg;

            /* 处理失败则 返回提示信息 */
            if (outInfo.sys_info.flag < 0)
            {
                this.EFMsgInfo = outInfo.sys_info.msg + "\n" + outInfo.sys_info.sysmsg;
                this.ef_args.buttonStatusHold = true;
                return;
            }

            //调用查询函数刷新画面
            Query();

        }
        private void FormPMOMMAHR71_EF_CANCEL_DO_F5(object sender, EF.EF_Args e)
        {
            Query();
        }
        #endregion
CTracer log(__FUNCTION__);
    int doFlag = 0;
    CString sqlstr = " ";
    try
    {
        /*实体类定义*/
        CTPMOMMA71 tpmomma71_inf(conn);

        //记录总条数
        int count = bcls_rec->Tables[0].Rows.get_Count();
        sqlstr = "DELETE PMOMMA.TPMOMMA71";
        //循环处理
        for (int i = 0; i < count; i++)
        {
            //取得单行传入信息 
            tpmomma71_inf.Reset();
            tpmomma71_inf.MergeFrom(bcls_rec->Tables[0].Rows[i]);
            tpmomma71_inf.TrimOrBlank();

            //根据传入信息删除记录
            tpmomma71_inf.Delete();
        }

        CFormattable arguments[] = { count };
        CMessageFormat::Format(s.msg, _RES("PMOMS0000341")/*共删除了[{0}]条记录*/, arguments, 1);


    }

 

 

 #region F5 删除
        private void FormPMOMMAHR71_EF_PRE_DO_F5(object sender, EF.EF_Args e)        {            //去掉画面上新增的数据            int count = 0;            for (int i = 0; i < gridView1.DataRowCount + count; i++)            {
                if (gridView1.GetDataRow(i - count).RowState == DataRowState.Added ||                    gridView1.GetDataRow(i - count).RowState == DataRowState.Detached)                {                    gridView1.SetRowCellValue(i - count, this.efDevGrid1.SelectionColumn, false);                    gridView1.GetDataRow(i - count).RejectChanges();                    count++;                }            }
            int rowCount = this.efDevGrid1.GetSelectedDataRow().Rows.Count;
            if (rowCount <= 0)            {                this.EFMsgInfo = "没有需要删除的记录!";                this.ef_args.buttonStatusHold = true;                return;            }
            this.EFMsgInfo = "将删除" + rowCount.ToString() + "条记录,请确认或取消操作。";        }        private void FormPMOMMAHR71_EF_DO_F5(object sender, EF.EF_Args e)        {            EI.EIInfo inBlock = new EI.EIInfo();
            inBlock.Tables[0].Merge(this.efDevGrid1.GetSelectedDataRow());
            EI.EIInfo outInfo = EI.EIManager.Instance.CallService("MA1RM", "pmommahr71_del", inBlock);
            /* 获取程序处理信息,提示 */            this.EFMsgInfo = outInfo.sys_info.msg;
            /* 处理失败则 返回提示信息 */            if (outInfo.sys_info.flag < 0)            {                this.EFMsgInfo = outInfo.sys_info.msg + "\n" + outInfo.sys_info.sysmsg;                this.ef_args.buttonStatusHold = true;                return;            }
            //调用查询函数刷新画面            Query();
        }        private void FormPMOMMAHR71_EF_CANCEL_DO_F5(object sender, EF.EF_Args e)        {            Query();        }        #endregion

页面最基本的crud写法

原文:https://www.cnblogs.com/yjy1412/p/14541884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!