记录一下通过映射来完成静态表页面的增删改查功能
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
原文:https://www.cnblogs.com/yjy1412/p/14541884.html