四表开发实现四表联查

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DE
{
    public partial class FormDEMOWHD2 : EF.EFForm
    {
        public FormDEMOWHD2()
        {
            InitializeComponent();
        }

        private void FormDEMOWHD2_Load(object sender, EventArgs e)
        {
            EF.Utility.SetGridColumn(new EF.EFDevGrid[] { efDevGrid1 }, new string[] { "TDESCRNREG_INQ" }, "MESTL");
            EF.Utility.SetGridColumn(new EF.EFDevGrid[] { efDevGrid2 }, new string[] { "TDEBUTTREG_INQ" }, "MESTL");
            EF.Utility.SetGridColumn(new EF.EFDevGrid[] { efDevGrid3 }, new string[] { "TDEDEPREG1_INQ" }, "MESTL");
            EF.Utility.SetGridColumn(new EF.EFDevGrid[] { efDevGrid4 }, new string[] { "TDEEMPLOYYEE_INQ" }, "MESTL");
        }
        void query()
        {
            EI.EIInfo inBlock = new EI.EIInfo();
            inBlock.Tables[0].Columns.Add("FORMNAME");
            inBlock.Tables[0].Columns.Add("REC_CREATE_TIME");
            inBlock.Tables[0].Columns.Add("DEP_ID"); //添加查询字段
            inBlock.Tables[0].Rows.Add(efDevTextEdit1.Text.Trim(),efDevTextEdit2.Text.Trim(),efDevTextEdit3.Text.Trim());//获取画面输入框中的内容,即查询的字段的具体内容
            EI.EIInfo outBlock = EI.EIManager.Instance.CallService("MESTL", "deWHDD01_inq", inBlock);
            if (outBlock.sys_info.flag != 0)
            {
                EF.EFMessageBox.Show(outBlock.sys_info.msg);
                this.EFArgs.buttonStatusHold = true;
                return;
            }
            EF.Utility.SetCustomGridValue(efDevGrid1, outBlock);//将查询到的数据显示
            this.EFMsgInfo = "查询成功";
        }
        void Selected()
        {
            EI.Logger.Info("我的前台测试日志");
            EI.EIInfo inBlock = new EI.EIInfo();
            inBlock.Tables[0].Columns.Add("REC_ID");
            inBlock.Tables[0].Rows.Add(this.gridView1.GetFocusedRowCellValue("REC_ID"));
            EI.EIInfo outBlock = EI.EITuxedo.CallService("deWHDD02_inq", inBlock);
            if (outBlock.sys_info.flag < 0)
            {
                EF.EFMessageBox.Show(outBlock.sys_info.msg);
                this.EFMsgInfo = "查询失败";
                return;
            }
            EF.Utility.SetCustomGridValue(efDevGrid2, outBlock);

        }
        void Selected2()
        {
            EI.Logger.Info("我的前台测试日志");
            EI.EIInfo inBlock = new EI.EIInfo();
            inBlock.Tables[0].Columns.Add("REC_ID");
            inBlock.Tables[0].Rows.Add(this.gridView1.GetFocusedRowCellValue("REC_ID"));
            EI.EIInfo outBlock = EI.EITuxedo.CallService("deWHDD03_inq", inBlock);
            if (outBlock.sys_info.flag < 0)
            {
                EF.EFMessageBox.Show(outBlock.sys_info.msg);
                this.EFMsgInfo = "查询失败";
                return;
            }
            EF.Utility.SetCustomGridValue(efDevGrid3, outBlock);
        }
        void Selected3()
        {
            EI.Logger.Info("我的前台测试日志");
            EI.EIInfo inBlock = new EI.EIInfo();
            inBlock.Tables[0].Columns.Add("DEP_ID");
            inBlock.Tables[0].Rows.Add(this.gridView1.GetFocusedRowCellValue("DEP_ID"));
            EI.EIInfo outBlock = EI.EITuxedo.CallService("deWHDD04_inq", inBlock);
            if (outBlock.sys_info.flag < 0)
            {
                EF.EFMessageBox.Show(outBlock.sys_info.msg);
                this.EFMsgInfo = "查询失败";
                return;
            }
            EF.Utility.SetCustomGridValue(efDevGrid4, outBlock);
        }

        private void efDevGrid1_Click(object sender, EventArgs e)
        {
            Selected();
            Selected2();
            Selected3();//单机事件,点击主表,获取子表对应内容
        }

        private void FormDEMOWHD2_EF_DO_F2(object sender, EF.EF_Args e)
        {
            this.Cursor = Cursors.WaitCursor;
            query();
            Selected();
            Selected2();
            Selected3();
            this.Cursor = Cursors.Default; //封装查询操作
        }

        void ef_pre_do(EF.EFDevGrid grid)
        {
            grid.SetAllColumnEditable(true);
            grid.IsUseCustomPageBar = true;
            grid.ShowAddCopyRowButton = true;
            grid.ShowAddRowButton = true;
            grid.ShowDeleteRowButton = true;
            grid.ShowSelectionColumn = true;
            query();
            Selected();
            Selected2();
            Selected3();  //显示维护按钮

            this.gridView1.Columns[4].OptionsColumn.AllowEdit = false;
            this.gridView2.Columns[0].OptionsColumn.AllowEdit = false;
            this.gridView3.Columns[0].OptionsColumn.AllowEdit = false;  //设置为不可编辑在维护时有些数据是固定的需要锁定字段不让更改

        }

        void ef_cancel_do(EF.EFDevGrid grid)
        {
            grid.SetAllColumnEditableWithoutSelection(false);
            grid.IsUseCustomPageBar = false;
            grid.ShowSelectionColumn = false;
            Selected();
            Selected2();
            Selected3();  //维护取消操作
        }

        void ef_do(EF.EFDevGrid grid, string tableName, string serviceName)
        {
            //维护操作
            EI.EIInfo inBlock = new EI.EIInfo();
            DataTable dt = grid.DataSource as DataTable; //从画面获取信息
            DataTable dtAdded = dt.GetChanges(DataRowState.Added);
            if (dtAdded != null)
            {
                dtAdded.TableName = "ADD";
                inBlock.Tables.Add(dtAdded);
            }
            DataTable dtUpd = dt.GetChanges(DataRowState.Modified);
            if (dtUpd != null)
            {
                dtUpd.TableName = "UPD";
                inBlock.Tables.Add(dtUpd);
            }
            DataTable dtDel = dt.GetChanges(DataRowState.Deleted);
            if (dtDel != null)
            {
                dtDel.RejectChanges();
                dtDel.TableName = "DEL";
                inBlock.Tables.Add(dtDel);
            }
            EI.EIInfo outBlock = EI.EITuxedo.CallService(serviceName, inBlock);
            this.EFMsgInfo = outBlock.sys_info.msg + "\n" + outBlock.sys_info.sysmsg;
            if (outBlock.sys_info.flag < 0)
            {
                MessageBox.Show(this.EFMsgInfo);
            }
        }

        private void FormDEMOWHD2_EF_CANCEL_DO_F3(object sender, EF.EF_Args e)
        {
            ef_cancel_do(this.efDevGrid1);
            ef_cancel_do(this.efDevGrid2);
            ef_cancel_do(this.efDevGrid3);
            ef_cancel_do(this.efDevGrid4);  //调用维护取消操作
        }

        private void FormDEMOWHD2_EF_DO_F3(object sender, EF.EF_Args e)
        {
            ef_do(this.efDevGrid1, "TDESCRNREG", "deWHDD01_save");
            ef_do(this.efDevGrid2, "TDEBUTTREG", "deWHDD02_save");
            ef_do(this.efDevGrid3, "TDEDEPREG", "deWHDD03_save");
            ef_do(this.efDevGrid4, "TDEEMPLOYYEE", "deWHDD04_save"); //调用维护操作
            this.efDevGrid1.SetAllColumnEditableWithoutSelection(false);
            this.efDevGrid1.ShowSelectionColumn = false;
            this.efDevGrid1.IsUseCustomPageBar = false;

            this.efDevGrid2.SetAllColumnEditableWithoutSelection(false);
            this.efDevGrid2.ShowSelectionColumn = false;
            this.efDevGrid2.IsUseCustomPageBar = false;

            this.efDevGrid3.SetAllColumnEditableWithoutSelection(false);
            this.efDevGrid3.ShowSelectionColumn = false;
            this.efDevGrid3.IsUseCustomPageBar = false;


            this.efDevGrid4.SetAllColumnEditableWithoutSelection(false);
            this.efDevGrid4.ShowSelectionColumn = false;
            this.efDevGrid4.IsUseCustomPageBar = false;
            //维护确认之后数据保存,维护按钮消失
        }

        private void FormDEMOWHD2_EF_PRE_DO_F3(object sender, EF.EF_Args e)
        {
            ef_pre_do(this.efDevGrid1);
            ef_pre_do(this.efDevGrid2);
            ef_pre_do(this.efDevGrid3);
            ef_pre_do(this.efDevGrid4);
        }

        private void gridView2_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            String fname = this.gridView1.GetFocusedRowCellValue("REC_ID").ToString();
            this.gridView2.SetRowCellValue(e.RowHandle, this.gridView2.Columns["REC_ID"], fname);
            //gridView2中的子表自动新增一行,并且REC_ID字段与主表中的REC_ID相对应
        }

        private void gridView3_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            String fname = this.gridView1.GetFocusedRowCellValue("REC_ID").ToString();
            this.gridView3.SetRowCellValue(e.RowHandle, this.gridView1.Columns["REC_ID"], fname);

            fname = this.gridView1.GetFocusedRowCellValue("DEP_ID").ToString();
            this.gridView3.SetRowCellValue(e.RowHandle, this.gridView1.Columns["DEP_ID"], fname);
            //gridView3中的子表自动新增一行,并且子表中的REC_ID字段和DEP_ID字段分别和主表中的REC_ID、gridView2中子表
            //中的DEP_ID字段对应
        }

        private void gridView4_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
        {
            String fname = this.gridView3.GetFocusedRowCellValue("DEP_ID").ToString();
            this.gridView4.SetRowCellValue(e.RowHandle, this.gridView3.Columns["DEP_ID"], fname);
            //gridView4中的子表自动新增一行,子表中的DEP_ID字段和gridView3中子表的DEP_ID相对应
        }
    }
}

主表查询(通过FORMNAME、DEP_ID、REC_ID查询)

try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "FORMNAME:{0}", bcls_rec->Tables[0].Rows[0]["FORMNAME"].ToString());
	 //Log::Trace("", "", "REC_CREATE_TIME:{0}", bcls_rec->Tables[0].Rows[0]["REC_CREATE_TIME"].ToString());
	 CString sql = ("select * from TDESCRNREG WHERE FORMNAME LIKE @FORMNAME || '%' AND REC_CREATE_TIME LIKE @REC_CREATE_TIME || '%' AND DEP_ID LIKE @DEP_ID || '%' AND 1=1");
	 Log::Trace("", "", "CModel查询", "sql:{0}", sql);
	 Db::QueryTable(sql, bcls_rec->Tables[0].Rows[0], bcls_ret->Tables[0]);
	 bcls_ret->Tables[0].set_TableName("TDESCRNREG");
 }

子表1查询(通过REC_ID查询)

 try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "FORMNAME:{0}", bcls_rec->Tables[0].Rows[0]["REC_ID"].ToString());
	 CString fname = bcls_rec->Tables[0].Rows[0]["REC_ID"].ToString();
	 CString sql = ("select * from TDEBUTTREG WHERE REC_ID = '" + fname + "'AND 1=1 ");
	 Log::Trace("", "", "CModel查询", "sql:{0}", sql);
	 Db::QueryTable(sql, bcls_rec->Tables[0].Rows[0], bcls_ret->Tables[0]);
	 bcls_ret->Tables[0].set_TableName("TDEBUTTREG");
 }

子表2查询(通过REC_ID查询)

 try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	Log::Trace("", "", "FORMNAME:{0}", bcls_rec->Tables[0].Rows[0]["REC_ID"].ToString());
	 CString fname = bcls_rec->Tables[0].Rows[0]["REC_ID"].ToString();
	 CString sql = ("select * from TDEDEPREG WHERE REC_ID = '" + fname + "'AND 1=1 ");
	 Log::Trace("", "", "CModel查询", "sql:{0}", sql);
	 Db::QueryTable(sql, bcls_rec->Tables[0].Rows[0], bcls_ret->Tables[0]);
	 bcls_ret->Tables[0].set_TableName("TDEDEPREG");
 }

子表3查询(通过DEP_ID查询)

try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "FORMNAME:{0}", bcls_rec->Tables[0].Rows[0]["DEP_ID"].ToString());
	 CString fname = bcls_rec->Tables[0].Rows[0]["DEP_ID"].ToString();
	 CString sql = ("select * from TDEEMPLOYYEE WHERE DEP_ID = '" + fname + "'AND 1=1 ");
	 Log::Trace("", "", "CModel查询", "sql:{0}", sql);
	 Db::QueryTable(sql, bcls_rec->Tables[0].Rows[0], bcls_ret->Tables[0]);
	 bcls_ret->Tables[0].set_TableName("TDEEMPLOYYEE");
 }

维护后台:

主表维护:

try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "service deWHDD01_save begin");
	 CModel tdemo01 = CModel("TDESCRNREG");
	 if (bcls_rec->AtBlkName("ADD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["ADD"].Rows.get_Count(); i++)
		 {
			 tdemo01.Reset();
			 tdemo01.MergeFrom(bcls_rec->Tables["ADD"].Rows[i]);
			 tdemo01.Insert();
		 }
		 Log::Trace("", "", "新增了{0}条数据", bcls_rec->Tables["ADD"].Rows.get_Count());
	 }
	 if (bcls_rec->AtBlkName("UPD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["UPD"].Rows.get_Count(); i++)
		 {
			 tdemo01.Reset();
			 tdemo01.MergeFrom(bcls_rec->Tables["UPD"].Rows[i]);
			 tdemo01.Update("REC_ID");
		 }
		 Log::Trace("", "", "修改了{0}条数据", bcls_rec->Tables["UPD"].Rows.get_Count());
	 }
	 if (bcls_rec->AtBlkName("DEL") > 0)
	 {
		
		 for (int i = 0; i < bcls_rec->Tables["DEL"].Rows.get_Count(); i++)
		 {
			 tdemo01.Reset();
			 tdemo01.MergeFrom(bcls_rec->Tables["DEL"].Rows[i]);
			 tdemo01.Delete("REC_ID");
		 }
		 Log::Trace("", "", "删除了{0}条数据", bcls_rec->Tables["DEL"].Rows.get_Count());
	 }
 }

子表1维护

 try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "service deWHDD02_save begin");
	 CModel tdemo02 = CModel("TDEBUTTREG");
	 if (bcls_rec->AtBlkName("ADD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["ADD"].Rows.get_Count(); i++)
		 {
			 tdemo02.Reset();
			 tdemo02.MergeFrom(bcls_rec->Tables["ADD"].Rows[i]);
			 tdemo02.Insert();
		 }
		 Log::Trace("", "", "新增了{0}条数据", bcls_rec->Tables["ADD"].Rows.get_Count());
	 }
	if (bcls_rec->AtBlkName("UPD") > 0)
	{
		for (int i = 0; i < bcls_rec->Tables["UPD"].Rows.get_Count(); i++)
		{
			tdemo02.Reset();
			tdemo02.MergeFrom(bcls_rec->Tables["UPD"].Rows[i]);
			tdemo02.Update("REC_ID");
		}
		Log::Trace("", "", "修改了{0}条数据", bcls_rec->Tables["UPD"].Rows.get_Count());
	}
	if (bcls_rec->AtBlkName("DEL") > 0)
	{
		for (int i = 0; i < bcls_rec->Tables["DEL"].Rows.get_Count(); i++)
		{
			tdemo02.Reset();
			tdemo02.MergeFrom(bcls_rec->Tables["DEL"].Rows[i]);
			tdemo02.Delete("REC_ID");
		}
		Log::Trace("", "", "删除了{0}条数据", bcls_rec->Tables["DEL"].Rows.get_Count());
	}

 }

子表2维护

 try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "service deWHDD03_save begin");
	 CModel tdemo03 = CModel("TDEDEPREG");
	 if (bcls_rec->AtBlkName("ADD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["ADD"].Rows.get_Count(); i++)
		 {
			 tdemo03.Reset();
			 tdemo03.MergeFrom(bcls_rec->Tables["ADD"].Rows[i]);
			 tdemo03.Insert();
		 }
		 Log::Trace("", "", "新增了{0}条数据", bcls_rec->Tables["ADD"].Rows.get_Count());
	 }
	 if (bcls_rec->AtBlkName("UPD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["UPD"].Rows.get_Count(); i++)
		 {
			 tdemo03.Reset();
			 tdemo03.MergeFrom(bcls_rec->Tables["UPD"].Rows[i]);
			 tdemo03.Update("DEP_ID");
		 }
		 Log::Trace("", "", "修改了{0}条数据", bcls_rec->Tables["UPD"].Rows.get_Count());
	 }
	 if (bcls_rec->AtBlkName("DEL") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["DEL"].Rows.get_Count(); i++)
		 {
			 tdemo03.Reset();
			 tdemo03.MergeFrom(bcls_rec->Tables["DEL"].Rows[i]);
			 tdemo03.Delete("DEP_ID");

		 }
		 Log::Trace("", "", "删除了{0}条数据", bcls_rec->Tables["DEL"].Rows.get_Count());
	 }
 }

子表3维护

try
 {
  // -----Begin IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
  // -----End IPLAT4C::IPLAT4CServiceCompositeStatementObj()----- //
	 Log::Trace("", "", "service deWHDD02_save begin");
	 CModel tdemo04 = CModel("TDEEMPLOYYEE");
	 if (bcls_rec->AtBlkName("ADD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["ADD"].Rows.get_Count(); i++)
		 {
			 tdemo04.Reset();
			 tdemo04.MergeFrom(bcls_rec->Tables["ADD"].Rows[i]);
			 tdemo04.Insert();
		 }
		 Log::Trace("", "", "新增了{0}条数据", bcls_rec->Tables["ADD"].Rows.get_Count());
	 }
	 if (bcls_rec->AtBlkName("UPD") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["UPD"].Rows.get_Count(); i++)
		 {
			 tdemo04.Reset();
			 tdemo04.MergeFrom(bcls_rec->Tables["UPD"].Rows[i]);
			 tdemo04.Update("DEP_ID");
		 }
		 Log::Trace("", "", "修改了{0}条数据", bcls_rec->Tables["UPD"].Rows.get_Count());
	 }
	 if (bcls_rec->AtBlkName("DEL") > 0)
	 {
		 for (int i = 0; i < bcls_rec->Tables["DEL"].Rows.get_Count(); i++)
		 {
			 tdemo04.Reset();
			 tdemo04.MergeFrom(bcls_rec->Tables["DEL"].Rows[i]);
			 tdemo04.Delete("DEP_ID");
		 }
		 Log::Trace("", "", "删除了{0}条数据", bcls_rec->Tables["DEL"].Rows.get_Count());
	 }
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值