汽车管MES———C#窗口增删改

在查询窗口文已经提及过解决方案配置,创建布局窗口以及前后端搭建。这里我们再将CRUD功能模块补充完整,用YY00G020物料编码信息维护来展示。

一、窗口和系统页面展示

图1-1
图1-2

二、代码

 前端:

using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace YM
{
    public partial class FormYM00LG020 : EF.EFForm
    {
        #region 变量定义
        private string curr_part_name; //新增定义全局变量(分区代码): 
        private int totalPageCount = 0;//总页数
        private int currentPage = 0;//当前页
        #endregion

        private DataSet dt_ymac02 = new DataSet();
        private BindingSource ds_ymac02 = new BindingSource();
        public FormYM00LG020()
        {
            InitializeComponent();
        }

        #region Load事件
        private void FormYM00LG020_Load(object sender, EventArgs e)
        {
            curr_part_name = this.ef_args.formPartition;

            EF.Utility.SetGridColumn(new EF.EFDevGrid[] { this.efDevGrid1 }, new string[] { "YM00020_INQ" }, curr_part_name);
        
      
            String sqlStr = "SELECT STOCK_NO,STOCK_NAME FROM TYM00LG002 ORDER BY STOCK_NO ";
            EI.EIInfo outBlock = EF.Utility.ExecQueryPart(curr_part_name, sqlStr);
            YMUtility.DEV_Init_grid2(efDevGrid1, "1");
            this.efDevGrid1.ShowSelectionColumn = true;
            this.efDevGrid1.ShowAddCopyRowButton = true;

            dt_ymac02 = EF.Utility.GetCustomGridValue(efDevGrid1);
            dt_ymac02.Tables[0].TableName = "TYM00020";

            ds_ymac02.DataMember = "TYM00020";
            ds_ymac02.DataSource = dt_ymac02;
            efDevGrid1.DataSource = ds_ymac02;

            currentPage = 1;
            query_data(0, this.efDevGrid1.PageSize);
        } 
        #endregion

        #region F2查询事件
        private void FormYM00LG020_EF_DO_F2(object sender, EF.EF_Args e)
        {
            currentPage = 1;
            query_data(0, this.efDevGrid1.PageSize);
        }
        #endregion

        #region F3新增
        private void FormYM00LG020_EF_DO_F3(object sender, EF.EF_Args e)
        {
            gridView1.AddNewRow();
        }
        #endregion

        #region F4删除
        private void FormYM00LG020_EF_DO_F4(object sender, EF.EF_Args e)
        {
            if (this.gridView1.RowCount <= 0)
            {
                this.EFMsgInfo = "没有可删除的信息!";
                EF.EFMessageBox.Show(EFMsgInfo, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            this.gridView1.DeleteSelectedRows();
        }
        #endregion

        #region F5保存
        private void FormYM00LG020_EF_DO_F5(object sender, EF.EF_Args e)
        {
            EI.EIInfo inblock = new EI.EIInfo();

            // 增加子项信息块
            inblock.Tables.Add("TYM00020_ADD");
            inblock.Tables.Add("TYM00020_MODIFY");
            inblock.Tables.Add("TYM00020_DELETE");

            DataTable dt = new DataTable();

            dt = this.dt_ymac02.Tables["TYM00020"].GetChanges(DataRowState.Added);
            if (dt != null)
                inblock.Tables["TYM00020_ADD"].Merge(dt);
            else
                inblock.Tables["TYM00020_ADD"].Merge(this.dt_ymac02.Tables["TYM00020"].Clone());

            dt = this.dt_ymac02.Tables["TYM00020"].GetChanges(DataRowState.Modified);
            if (dt != null)
                inblock.Tables["TYM00020_MODIFY"].Merge(dt);
            else
                inblock.Tables["TYM00020_MODIFY"].Merge(this.dt_ymac02.Tables["TYM00020"].Clone());

            dt = this.dt_ymac02.Tables["TYM00020"].GetChanges(DataRowState.Deleted);
            if (dt != null)
            {
                dt.RejectChanges();
                inblock.Tables["TYM00020_DELETE"].Merge(dt);
            }
            else
                inblock.Tables["TYM00020_DELETE"].Merge(this.dt_ymac02.Tables["TYM00020"].Clone());

            EI.EIInfo outInfo = EI.EIManager.Instance.CallService(curr_part_name,"ym00lg020_sav", inblock);
            EI.EIInfo.eiinfo_sys s = outInfo.GetSys();   //获取返回信息s

            //设置返回信息
            if (s.flag == 0)
            {
                FormYM00LG020_EF_DO_F2(null,null);
                this.EFMsgInfo = string.Format("信息保存成功!");
            }
            else
            {
                this.EFSysInfo = s; //获取异常信息
                EF.EFMessageBox.Show(s.msg, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
        }
        #endregion

        #region 查询事件
        private void query_data(int recordFrom, int pageSize)
        {
            try
            {
                EI.EIInfo inBlock = new EI.EIInfo();

                inBlock.Tables[0].Columns.Add("ASMAT_NO");
                inBlock.Tables[0].Columns.Add("ASMAT_NAME");
                inBlock.Tables[0].Columns.Add("SPEC");
                inBlock.Tables[0].Columns.Add("TYPE_SPEC");
               
                inBlock.Tables[0].Rows.Add();
                inBlock.Tables[0].Rows[0]["ASMAT_NO"] = this.asmat_no.Text.Trim();
                inBlock.Tables[0].Rows[0]["ASMAT_NAME"] = this.asmat_name.Text.Trim();
                inBlock.Tables[0].Rows[0]["SPEC"] = this.spec.Text.Trim();
                inBlock.Tables[0].Rows[0]["TYPE_SPEC"] = this.type_spec.Text.Trim();
               
                //分页信息
                EF.DSUtility.PageInfoDataTable pageInfo = new EF.DSUtility.PageInfoDataTable();
                pageInfo.AddPageInfoRow(recordFrom, pageSize);
                inBlock.Tables.Add("PageInfo");
                inBlock.Tables["PageInfo"].Merge(pageInfo);

                //调用后台
                EI.EIInfo outBlock = EI.EIManager.Instance.CallService(curr_part_name, "ym00lg020_inq", inBlock);

                //设置返回信息
                if (outBlock.sys_info.flag != 0)
                {
                    this.EFMsgInfo = outBlock.sys_info.msg;
                    EF.EFMessageBox.Show(outBlock.sys_info.msg, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    //将信息压入指定的GRID,
                    EF.Utility.SetCustomGridValue(efDevGrid1, outBlock, false);

                    //设置分页显示信息
                    YMUtility.DEV_grid_RecordCountMessage(efDevGrid1, currentPage, outBlock);

                    //列宽自动调整。
                    this.gridView1.BestFitColumns();

                    this.EFMsgInfo = string.Format("查询到[{0}]条记录。", outBlock.Tables[0].Rows.Count);
                }
            }
            catch (Exception err)
            {
                EF.EFMessageBox.Show(err.Message, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
                this.EFArgs.buttonStatusHold = true;
                return;
            }
        }
        #endregion

        #region DevGrid事件
        private void efDevGrid1_EF_GridBar_First_Event(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
        {
            try
            {
                if (currentPage == 1)
                {
                    this.EFMsgInfo = "已经是第一页。";
                    return;
                }
                currentPage = 1;
                //查询
                query_data((currentPage - 1) * this.efDevGrid1.PageSize, this.efDevGrid1.PageSize);
            }
            catch (Exception ex)
            {
                EF.EFMessageBox.Show(ex.Message, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void efDevGrid1_EF_GridBar_Last_Event(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
        {
            try
            {
                //如果当前页不等于总页数 则查询
                if (currentPage != totalPageCount)
                {
                    //设置当前页
                    currentPage = totalPageCount;
                    //查询
                    query_data((currentPage - 1) * this.efDevGrid1.PageSize, this.efDevGrid1.PageSize);
                }
                else
                {
                    this.EFMsgInfo = "已是最后一页!";
                    return;
                }
            }
            catch (Exception ex)
            {
                EF.EFMessageBox.Show(ex.Message, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void efDevGrid1_EF_GridBar_NextPage_Event(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
        {
            try
            {
                //如果当前页不等于总页数 则查询
                if (currentPage != totalPageCount)
                {
                    //设置当前页
                    currentPage++;
                    //查询
                    query_data((currentPage - 1) * this.efDevGrid1.PageSize, this.efDevGrid1.PageSize);
                }
                else
                {
                    this.EFMsgInfo = "已是最后一页!";
                    return;
                }
            }
            catch (Exception ex)
            {
                EF.EFMessageBox.Show(ex.Message, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void efDevGrid1_EF_GridBar_PageTo_Event(object sender, EF.EFDevGrid.EFNavigatorButtonClickEventArgs e)
        {
            try
            {
                if (currentPage != e.PageTo || efDevGrid1.PageSize != e.PageSize)
                {
                    //设置当前页
                    currentPage = e.PageTo;

                    efDevGrid1.PageSize = e.PageSize;

                    //查询
                    query_data((currentPage - 1) * efDevGrid1.PageSize, efDevGrid1.PageSize);
                }
            }
            catch (Exception ex)
            {
                EF.EFMessageBox.Show(ex.Message, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void efDevGrid1_EF_GridBar_PrePage_Event(object sender, DevExpress.XtraEditors.NavigatorButtonClickEventArgs e)
        {
            try
            {
                if (currentPage <= 1)
                {
                    this.EFMsgInfo = "已经是第一页。";
                    return;
                }
                currentPage--;
                query_data((currentPage - 1) * this.efDevGrid1.PageSize, this.efDevGrid1.PageSize);
            }
            catch (Exception ex)
            {
                EF.EFMessageBox.Show(ex.Message, EF.EF_Args.epEname, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
        #endregion

        private void stock_no_R_EditValueChanged(object sender, EventArgs e)
        {

        }

    }
}

后端:

1.查询功能:

统一规范创建inq文件

#include "stdafx.h"

// Service 入口
BM2F_ENTERACE(ym00lg020_inq)

int f_ym00lg020_inq(EIClass * bcls_rec, EIClass * bcls_ret, CDbConnection * conn)
{
	/* 程序内部变量 */
	int doFlag = 0;
	int recordFrom = 0;	//起始页
	int pageSize = 0;	//每页记录数

	/* 业务变量 */
	int fetchRowCount = 0;
	int v_total_count = 0;
	CString asmat_no = "";
	CString asmat_name = "";
	CString spec = "";
	CString type_spec = "";

	//返回值
	int do_flag = 0;
	CString rpt_name;

	/* 数据库操作类定义 */
	CDbCommand cmd_inq(conn);
	CString sqlstr = " ";
	CString sqlstrCount = " ";
	CString sqlstrWhere = " ";

	try
	{
		// 获取前台传入参数 
		if (bcls_rec->Tables[0].Columns.Contains("ASMAT_NO"))
		{
			asmat_no = bcls_rec->Tables[0].Rows[0]["ASMAT_NO"].ToString().Trim();
			Log::Debug("", __FUNCTION__, "传入参数asmat_no = [{0}]", asmat_no);
		}
		if (bcls_rec->Tables[0].Columns.Contains("ASMAT_NAME"))
		{
			asmat_name = bcls_rec->Tables[0].Rows[0]["ASMAT_NAME"].ToString().Trim();
			Log::Debug("", __FUNCTION__, "传入参数asmat_name = [{0}]", asmat_name);
		}
		if (bcls_rec->Tables[0].Columns.Contains("SPEC"))
		{
			spec = bcls_rec->Tables[0].Rows[0]["SPEC"].ToString().Trim();
			Log::Debug("", __FUNCTION__, "传入参数spec = [{0}]", spec);
		}
		if (bcls_rec->Tables[0].Columns.Contains("TYPE_SPEC"))
		{
			type_spec = bcls_rec->Tables[0].Rows[0]["TYPE_SPEC"].ToString().Trim();
			Log::Debug("", __FUNCTION__, "传入参数type_spec = [{0}]", type_spec);
		}
		//获取分页参数
		if (!bcls_rec->Tables.Contains("PageInfo"))
		{
			recordFrom = 0;
			pageSize = 1;
		}
		else
		{
			if (bcls_rec->Tables[1].Columns.Contains("RecordFrom"))
			{
				recordFrom = (int)bcls_rec->Tables[1].Rows[0]["RecordFrom"];
				Log::Debug("", __FUNCTION__, "传入参数recordFrom = [{0}]", recordFrom);
			}
			if (bcls_rec->Tables[1].Columns.Contains("PageSize"))
			{
				pageSize = (int)bcls_rec->Tables[1].Rows[0]["PageSize"];
				Log::Debug("", __FUNCTION__, "传入参数pageSize = [{0}]", pageSize);
			}
		}
		string company_code = s.company_code;
		//查询数据
		CString sqlstr = "select t.* from tpabm10 t WHERE 1=1  ";
		if (asmat_no != "")
		{
			sqlstrWhere = sqlstrWhere + " AND t.asmat_no = @asmat_no";
		}
		if (asmat_name != "")
		{
			sqlstrWhere = sqlstrWhere + " AND t.asmat_name  = @asmat_name";
		}
		if (spec != "")
		{
			sqlstrWhere = sqlstrWhere + " AND t.spec = @spec";
		}
		if (type_spec != "")
		{
			sqlstrWhere = sqlstrWhere + " AND t.type_spec = @type_spec";
		}
		sqlstr = sqlstr + sqlstrWhere + " order by t.asmat_no asc ";
		cmd_inq.SetCommandText(sqlstr);
		cmd_inq.Parameters.Set("asmat_no", asmat_no);
		cmd_inq.Parameters.Set("asmat_name", asmat_name);
		cmd_inq.Parameters.Set("spec", spec);
		cmd_inq.Parameters.Set("type_spec", type_spec);
		Log::Trace("", __FUNCTION__, "sqlstr = [{0}]", sqlstr);
		cmd_inq.ExecuteQuery(bcls_ret->Tables[0], recordFrom, pageSize);  //0,-1:非翻页查询 
		cmd_inq.Close();

		switch (conn->DatabaseKind)
		{
		case DB_KIND_DB2:			// DB2 数据库(未开Oracle兼容)
		case DB_KIND_DB2_ORACLE:	// DB2 数据库(开Oracle兼容)
		case DB_KIND_MSSQL:			// MS SQL Server数据库
		case DB_KIND_ORACLE:		// Oracle 数据库
		default:					// 所有数据库适用,通用SQL语句
			sqlstrCount = "select COUNT(1) "
				" from ( " + sqlstr + " ) ";
		}
		v_total_count = 0;
		cmd_inq.SetCommandText(sqlstrCount);
		v_total_count = cmd_inq.ExecuteScalar().ToInt32();
		cmd_inq.Close();

		//<summary>
		//返回总记录数
		//</summary>
		bcls_ret->Tables.Add("PageInfo");
		bcls_ret->Tables["PageInfo"].Columns.Add(DT_DECIMAL, "TotalRecordCount");
		bcls_ret->Tables["PageInfo"].Rows.Add();
		bcls_ret->Tables["PageInfo"].Rows[0]["TotalRecordCount"] = v_total_count;
	}
	catch (CDbException& ex)
	{
		strcpy(s.msg, ex.GetMsg());
		s.flag = ex.GetCode();
		do_flag = -1;
	}
	return do_flag;
}
2.增删改功能:

创建sav文件并且实现功能。

#include "stdafx.h" 

// Service 入口
BM2F_ENTERACE(ym00lg020_sav)

int f_ym00lg020_sav(EIClass * bcls_rec, EIClass * bcls_ret, CDbConnection * conn)
{
	CDataTable t_temp;
	int doFlag = 0;
	CString sqlstr = "";
	CString prod_seq_no = "";
	CString dateNow = CDateTime::Now().ToString("yyyyMMddHHmmss");
	CDecimal num = 0;
	int v_count = 0;
	CDbCommand cmd(conn);
	CString origin_stock_type = "";
	CString stock_type = "";
	try
	{
		CModel tpabm10("TPABM10");
		CModel tpabm10_chk("TPABM10");

		// 若传入删除块有记录,则根据传入记录删除
		/// </summary>
		for (int i = 0; i < bcls_rec->Tables["TYM00020_DELETE"].Rows.get_Count(); i++)
		{
			tpabm10.MergeFrom(bcls_rec->Tables["TYM00020_DELETE"].Rows[i]);
			tpabm10.Delete("ASMAT_NO");
		}

		/// <summary>
		// 若传入修改块有记录,则根据传入记录修改
		/// </summary>
		for (int i = 0; i < bcls_rec->Tables["TYM00020_MODIFY"].Rows.get_Count(); i++)
		{
			tpabm10.MergeFrom(bcls_rec->Tables["TYM00020_MODIFY"].Rows[i]);

			if (tpabm10["ASMAT_NO"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入辅料编码!");
				return -1;
			}
			if (tpabm10["ASMAT_NAME"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入辅料名称!");
				return -1;
			}
			if (tpabm10["SPEC"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入规格!");
				return -1;
			}
			if (tpabm10["TEXTURE"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入材质!");
				return -1;
			}
			if (tpabm10["TYPE_SPEC"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入型号!");
				return -1;
			}
			if (tpabm10["UNIT"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入单位!");
				return -1;
			}
			if (tpabm10["ASSIST_UNIT"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入辅助单位!");
				return -1;
			}
			if (tpabm10["PIECE_MAN"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入按件管理!");
				return -1;
			}
			if (tpabm10["MAX_STOCK"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入最大库存!");
				return -1;
			}
			if (tpabm10["SUPPLIER_CODE"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入供应商代码!");
				return -1;
			}
			if (tpabm10["SUPPLIER_NAME"].ToString().Trim() == "")
			{
				s.flag = -1;
				strcpy(s.msg, " 请输入供应商名称!");
				return -1;
			}

			tpabm10.Update("*", "ASMAT_NO");
		}
			
			/// <summary>um
			// 若传入新增块有记录,则根据传入记录新增
			/// </summary>
			for (int i = 0; i < bcls_rec->Tables["TYM00020_ADD"].Rows.get_Count(); i++)
			{

				Log::Debug("", __FUNCTION__, "ASMAT_NO1 =[{0}]", tpabm10["ASMAT_NO"].ToString());
				tpabm10.MergeFrom(bcls_rec->Tables["TYM00020_ADD"].Rows[i]);
				if (tpabm10["ASMAT_NO"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入辅料编码!");
					return -1;
				}
				if (tpabm10["ASMAT_NAME"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入辅料名称!");
					return -1;
				}
				if (tpabm10["SPEC"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入规格!");
					return -1;
				}
				if (tpabm10["TEXTURE"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入材质!");
					return -1;
				}
				if (tpabm10["TYPE_SPEC"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入型号!");
					return -1;
				}
				if (tpabm10["UNIT"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入单位!");
					return -1;
				}
				if (tpabm10["ASSIST_UNIT"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入辅助单位!");
					return -1;
				}
				if (tpabm10["PIECE_MAN"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入按件管理!");
					return -1;
				}
				if (tpabm10["MAX_STOCK"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入最大库存!");
					return -1;
				}
				if (tpabm10["SUPPLIER_CODE"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, " 请输入供应商代码!");
					return -1;
				}
				if (tpabm10["SUPPLIER_NAME"].ToString().Trim() == "")
				{
					s.flag = -1;
					strcpy(s.msg, "请输入供应商名称!");
					return -1;
				}
				Log::Debug("", __FUNCTION__, "ASMAT_NO1 =[{0}]", tpabm10["ASMAT_NO"].ToString());
				//prod_seq_no = f_get_recId();//自动生成事件号
				//tpabm10["REC_ID"] = prod_seq_no;
				//tpabm10["REC_CREATE_TIME"] = dateNow;
				//tpabm10["REC_CREATOR"] = s.userid;
				//tpabm10["COMPANY_CODE"] = s.company_code;
				//tpabm10["COMPANY_CNAME"] = s.company_name;
				tpabm10.TrimOrBlank();
				tpabm10.Insert();
				Log::Debug("", __FUNCTION__, "ASMAT_NO1 =[{0}]", tpabm10["ASMAT_NO"].ToString());
			}

			Log::Trace("", "", "-----程序执行完成------");
		}
	
		catch (CDbException& ex)
		{
			CFormattable arguments[] = { ex.GetCode() };
			CMessageFormat::Format(s.msg, "数据库处理出错,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;
		}
		catch (CException& ex)
		{
			strcpy(s.msg, ex.GetMsg());
			s.flag = ex.GetCode();
			doFlag = -1;
		}
		return doFlag;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值