生産計画一覧のソースコードです。検索部分など、部品化されていることがわかると思います。ソースがシンプルだと、不具合も出にくく、追加も割と楽に行えます。

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;

using USystem.CmnFunc;
using USystem.DBAccess;
using USystem.UControl;

using USystem.USerializeData;
using USystem.SysRBLogic;
using USystem.SysTableDefine;
using USystem.USubSystem;

using UerpSystem.UerpRBLogic;
using UerpSystem.UerpBLogic;
using UerpSystem.UerpTableDefine;
using UerpSystem.UerpControl;


namespace UerpSystem.UerpSubSystem
{
	public partial class Form生産計画一覧 : FormDBList
	{
		#region コンストラクタ

		//****************************************************************//
		/// <summary>コンストラクタ</summary>
		//****************************************************************//
		public Form生産計画一覧()
		{
			InitializeComponent();
		}

		#endregion

		#region 検索

		//****************************************************************//
		/// <summary>検索条件 追加</summary>
		//****************************************************************//
		protected override WhereUnit AddCondition()
		{
			WhereUnit unit = new WhereUnit();

			// 拠点を入れる。
			unit.AddWhere(Def手配計画.拠点CD, CmnInfo.拠点CD);

			if (!cb自動作成.Checked){
				// unit.AddWhere(Def手配計画.階層, 1);
				unit.AddWhere(Def手配計画.Flg自動生成, YesNoFlag.No);
			}

			if (!cb完了.Checked){
				unit.AddWhere(Def生産計画.Kind状態, Def生産計画.Kind状態_完了, FieldCompType.Less); 
			}

			if (!cb月間.Checked){
				unit.AddWhere(Def生産計画.Flg月間入力, YesNoFlag.No); 
			}

			return unit;
		}

		//****************************************************************//
		/// <summary>親子関係のタブページ</summary>
		//****************************************************************//
		protected override void CreateConditionByTabPage(SqlCmd cmd)
		{
			if (tabCondition.SelectedTab == tp親子) {

				WhereUnit unit = new WhereUnit();

				Dr生産計画 row生産計画 = Dt生産計画.GetRecord(eu生産計画.TextCD);

				if (row生産計画 != null) {
					// 親
					unit.AddWhere(Def生産計画.生産計画No, eu生産計画.TextCD);
					// 子供
					unit.AddWhere(Def手配計画.最上位手配No, row生産計画.手配計画No, FieldCompType.Equal, UnionType.OR);

					cmd.AddWhere(unit);

					cmd.ClearOrderBy();
					cmd.AddOrderBy(Def手配計画.階層);
				}
			}
		}

		#endregion

		#region override関数

		//****************************************************************//
		/// <summary>編集フォーム渡し</summary>
		//****************************************************************//
		protected override IEntryFormLinkList SetEntryForm(EntryMode mode = EntryMode.None)
		{
			Form生産計画入力 dlg = new Form生産計画入力();
			dlg.ListConnect = true;

			return (IEntryFormLinkList)(new Form生産計画入力());
		}

		#endregion

		#region サブメニュー

		#region 強制完了

		//****************************************************************//
		/// <summary>強制完了	ボタン押下イベント</summary>
		//****************************************************************//
		private void tsb強制完了_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Multi("生産計画", OnClick強制完了);			
		}

		//****************************************************************//
		/// <summary>強制完了処理</summary>
		//****************************************************************//
		private void OnClick強制完了()
		{
			_run完了(true, true);
		}

		#endregion

		#region 完了解除

		//****************************************************************//
		/// <summary>完了解除	ボタン押下イベント</summary>
		//****************************************************************//
		private void tsb完了解除_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Multi("生産計画", OnClick完了解除);			
		}

		//****************************************************************//
		/// <summary>強制完了処理</summary>
		//****************************************************************//
		private void OnClick完了解除()
		{
			_run完了(false, true);
		}

		#endregion

		#region 完了共通

		//****************************************************************//
		/// <summary>完了解除処理</summary>
		/// 
		/// <param name="b完了">完了フラグ</param>
		/// <param name="b強制">強制フラグ</param>
		//****************************************************************//
		private void _run完了(bool b完了, bool b強制 = true)
		{
			var	errors	= new DBErrors();

			// 確認メッセージ表示
			var msg	= "";

			if (b完了){
				var sb = new StringBuilder();
				sb.AppendLine("生産計画の強制完了処理を行います");
				sb.AppendLine("仕掛かっていない計画は削除され、仕掛かっているものは強制完了されます。");
				sb.AppendLine("よろしいですか?");

				msg = sb.ToString();
			}
			else {
				msg = "生産計画の完了解除処理を行います。\nよろしいですか?";
			}

			if (Msg.YesNoMsgBox(msg) != DialogResult.Yes){
				return;
			}

			// 選択されたものをマージ
			var ds生産 = new DataSet();

			// Sei_VF_生産計画一覧 → Sei_生産計画 に変更する。
			foreach (DataRow row in m_rowsSelect){
				
				var no			= DBA.GetValueString(row, Def生産計画.生産計画No);
				var row生産計画 = Dt生産計画.GetRecord(no);

				if (row生産計画 != null){					
					// 生産計画をマージしていく。
					CmnUtility.Merge(ds生産, row生産計画);
				}			
			}

			errors.Add ( BLogicBase.Create<RBL_生産>().Run生産完了(ds生産, b完了, CmnInfo.UserID) );

			// エラー処理
			if (errors.HasError){
				Msg.ErrMsgBox(errors);
			}
			else {
				Msg.OKMsgBox();
			}
		}

		#endregion

		#region 再展開

		//****************************************************************//
		/// <summary>再展開	ボタン押下イベント</summary>
		//****************************************************************//
		private void tsb再展開_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick再展開);
		}

		//****************************************************************//
		/// <summary>再展開処理</summary>
		//****************************************************************//
		private void OnClick再展開()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);
			var tehNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.手配計画No);

			Form工程展開 dlg = new Form工程展開(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region 生産工程構成

		//****************************************************************//
		/// <summary>生産工程構成	ボタン押下イベント</summary>
		//****************************************************************//
		private void tsb生産工程構成_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick生産工程構成);
		}

		//****************************************************************//
		/// <summary>生産工程構成</summary>
		//****************************************************************//
		private void OnClick生産工程構成()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form生産工程構成(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region 生産部品構成

		//****************************************************************//
		/// <summary>s生産	ボタン押下イベント</summary>
		//****************************************************************//
		private void tsb生産部品構成_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick生産部品構成);
		}

		//****************************************************************//
		/// <summary>生産部品構成</summary>
		//****************************************************************//
		private void OnClick生産部品構成()
		{
			// 生産計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form生産部品構成(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region 工程表

		//****************************************************************//
		/// <summary>工程表クリック処理</summary>
		//****************************************************************//
		private void tsb工程表_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick工程表);

		}

		//****************************************************************//
		/// <summary>工程表</summary>
		//****************************************************************//
		private void OnClick工程表()
		{
			// 生産計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new FormView生産工程表(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region 展開削除処理

		//****************************************************************//
		/// <summary>展開削除処理</summary>
		//****************************************************************//
		private void tsb展開削除_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Multi("生産計画", OnClick展開削除);
		}

		//****************************************************************//
		/// <summary>展開削除</summary>
		//****************************************************************//
		private void OnClick展開削除()
		{
			var listSeiNo = new List<string>();
			foreach(DataRow row生産計画 in m_rowsSelect){
				listSeiNo.Add( DBA.GetValueString(row生産計画, Def生産計画.生産計画No));
			}

			if (listSeiNo.Count > 0){
				var dlg = new Form工程展開結果削除(listSeiNo);
				dlg.ShowDialog();
				dlg.Dispose();
			}

			// 再読込み
			RefreshSelectRows();
		}

		#endregion

		#region 工程計画

		//****************************************************************//
		/// <summary>工程計画一覧起動</summary>
		//****************************************************************//
		private void tsb工程計画_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick工程計画一覧);
		}

		//****************************************************************//
		/// <summary>工程計画一覧</summary>
		//****************************************************************//
		private void OnClick工程計画一覧()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form工程計画一覧(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region 所要計画

		//****************************************************************//
		/// <summary>所要計画一覧起動</summary>
		//****************************************************************//
		private void tsb所要計画_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick所要計画一覧);
		}

		//****************************************************************//
		/// <summary>所要計画一覧</summary>
		//****************************************************************//
		private void OnClick所要計画一覧()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form所要計画一覧(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region 支給計画

		//****************************************************************//
		/// <summary>所要計画一覧起動</summary>
		//****************************************************************//
		private void tsb支給計画_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick支給計画一覧);
		}

		//****************************************************************//
		/// <summary>支給計画一覧</summary>
		//****************************************************************//
		private void OnClick支給計画一覧()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form支給計画一覧(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#region コピー

		//****************************************************************//
		/// <summary>生産計画のコピー</summary>
		//****************************************************************//
		private void tsbCopy_Click(object sender, EventArgs e) {
			ClickSubMenu_Single("生産計画", OnClickCopy);
		}

		//****************************************************************//
		/// <summary>生産計画のコピー</summary>
		//****************************************************************//
		private void OnClickCopy()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form生産計画入力();
			dlg.CopySeiNo = seiNo;

			IEntryFormLinkList entry = (IEntryFormLinkList)dlg;
			OnClickEntry(entry);
		}

		#endregion

		#region 展開情報

		//****************************************************************//
		/// <summary>展開情報クリック処理</summary>
		//****************************************************************//
		private void tsb展開情報_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick展開情報);
		}

		//****************************************************************//
		/// <summary>展開情報クリック処理</summary>
		//****************************************************************//
		private void OnClick展開情報()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new FormView生産展開情報(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}



		#endregion

		#region 紐付解除

		//****************************************************************//
		/// <summary>紐付解除処理</summary>
		//****************************************************************//
		private void tsb紐付解除_Click(object sender, EventArgs e)
		{
			ClickSubMenu_Single("生産計画", OnClick紐付解除);
		}

		//****************************************************************//
		/// <summary>生産計画の紐付解除</summary>
		//****************************************************************//
		private void OnClick紐付解除()
		{
			// 生産計画No 手配計画Noの取得
			var seiNo = DBA.GetValueString(m_rowsSelect[0], Def生産計画.生産計画No);

			var dlg = new Form生産紐付解除(seiNo);
			dlg.ShowDialog();
			dlg.Dispose();
		}

		#endregion

		#endregion

	}
}

この記事が気に入ったら
フォローしよう

最新情報をお届けします

おすすめの記事