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