You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

623 lines
24 KiB

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.Sql;
using System.Data.SqlClient;
using ManagementSystem.Utility;
namespace ManagementSystem
{
public partial class AccountingSubjectMaintain : Form
{
//程式內共用物件
string strFrmStatus = ""; //表單狀態
string strActiveUserID = ""; //取得登入作用的使用者帳號
string strAccountingBookID = ""; //取得作用中的帳本
SqlConnection sqlConn = UtilityClass.GetConn(MainForm.strAccountingBookID);
SqlCommand sqlCmd = new SqlCommand();
string strPKey = ""; //程式內的Key值
public AccountingSubjectMaintain()
{
InitializeComponent();
}
#region 自定義程式
private void SetupStatus() //畫面載入設定
{
try
{
strActiveUserID = MainForm.strActiveUserID;
strAccountingBookID = MainForm.strAccountingBookID;
if (MainForm.strKey == "")
{
//設定Toolbar初始狀態
tsbAdd.Enabled = false;
tsbSave.Enabled = false;
tsbDelete.Enabled = false;
}
//設定畫面初始狀態
CleanForm();
CleanToolbar();
LockForm();
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private string CheckForm() //確認畫面必填欄位
{
string strResult = "";
if (txtAccountingSubID.Text.Trim() == "")
{
strResult = "請輸入科目編號";
txtAccountingSubID.Focus();
}
if (txtAccountingSubName.Text.Trim() == "")
{
strResult = "請輸入會計科目";
txtAccountingSubName.Focus();
}
if (cbAccountingClass.SelectedValue.ToString().Trim() == "")
{
strResult = "請選擇會計類別";
cbAccountingClass.Focus();
}
if (cbDCClass.SelectedValue.ToString().Trim() == "")
{
strResult = "請選擇借/貸方類別";
cbDCClass.Focus();
}
if (strFrmStatus.ToUpper() == "ADD")
{
string strCHKSQL = "Select AccountingSubID From OTB_FNC_AccountingSubjects Where AccountingBookID = '" + strAccountingBookID + "' And AccountingSubID ='" + txtAccountingSubID.Text.Trim() + "'";
if (UtilityClass.IsExist(strCHKSQL))
{
strResult = "存在重覆科目資料";
txtAccountingSubID.Focus();
}
}
return strResult;
}
private void CleanForm() //清除畫面
{
//設定科目類別
cbAccountingClass.DataSource = UtilityClass.GetSystemArgument("ACCClass", "zh-TW").Tables["Arguments"];
cbAccountingClass.DisplayMember = "ArgumentValue";
cbAccountingClass.ValueMember = "ArgumentID";
//設定借/貸方類別
cbDCClass.DataSource = UtilityClass.GetSystemArgument("DCClass", "zh-TW").Tables["Arguments"];
cbDCClass.DisplayMember = "ArgumentValue";
cbDCClass.ValueMember = "ArgumentID";
//清除GridView
string strSQL = "Select AccountingSubID, AccountingSubName From OTB_FNC_AccountingSubjects Where AccountingBookID = '" + strAccountingBookID + "' Order by AccountingSubID";
dgvAccountingSubjects.DataSource = UtilityClass.GetSQLResult(strSQL).Tables["Result"];
//清除畫面資料
txtAccountingSubID.Text = "";
txtAccountingSubName.Text = "";
cbAccountingClass.SelectedIndex = -1;
cbDCClass.SelectedIndex = -1;
cbToCarry.Checked = false;
Application.DoEvents();
}
private void LockForm() //限制唯讀物件
{
txtAccountingSubID.ReadOnly = true;
txtAccountingSubName.ReadOnly = true;
cbDCClass.Enabled = false;
cbAccountingClass.Enabled = false;
cbToCarry.Enabled = false;
}
private void UnLockForm() //解除限制唯讀物件
{
txtAccountingSubID.ReadOnly = false;
txtAccountingSubName.ReadOnly = false;
cbDCClass.Enabled = true;
cbAccountingClass.Enabled = true;
cbToCarry.Enabled = true;
}
private void CleanToolbar() //清除工具列
{
//設定Toolbar狀態
tsbSearch.Enabled = true;
tsbSearch.Visible = true;
tsbAdd.Enabled = true;
tsbAdd.Visible = true;
tsbEdit.Enabled = true;
tsbEdit.Visible = true;
tsbDelete.Enabled = true;
tsbDelete.Visible = true;
tsbSave.Visible = false;
tsbOK.Visible = false;
tsbCancel.Visible = false;
}
private void StatusChange(string strStatus) //變更主畫面狀態
{
switch (strStatus.ToUpper())
{
case "NONE":
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "";
strFrmStatus = "";
CleanForm();
CleanToolbar();
dgvAccountingSubjects.ReadOnly = false;
break;
case "SEARCH":
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "搜尋";
strFrmStatus = "SEARCH";
break;
case "ADD":
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "新增";
strFrmStatus = "ADD";
break;
case "MODIFY":
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "修改";
strFrmStatus = "MODIFY";
break;
case "DEL":
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "刪除";
strFrmStatus = "DEL";
break;
}
}
private void GetAccountData(string strAccountingSubID) //取得會計科目資料
{
//排除空值
if (strAccountingSubID.Trim() == "")
{
return;
}
if (strAccountingSubID == null)
{
return;
}
strPKey = strAccountingSubID;
StringBuilder strSQL = new StringBuilder("");
strSQL.Append("Select * ");
strSQL.Append("From OTB_FNC_AccountingSubjects ");
strSQL.Append("Where AccountingBookID = '" + strAccountingBookID + "' And AccountingSubID = '" + strPKey + "'");
//進行查詢
DataTable dtTemp = (DataTable)UtilityClass.GetSQLResult(strSQL.ToString()).Tables["Result"];
//進行資料顯示
txtAccountingSubID.Text = dtTemp.Rows[0]["AccountingSubID"].ToString();
txtAccountingSubName.Text = dtTemp.Rows[0]["AccountingSubName"].ToString();
txtMemo.Text = dtTemp.Rows[0]["Memo"].ToString();
cbAccountingClass.SelectedValue = dtTemp.Rows[0]["AccountingClass"].ToString();
cbDCClass.SelectedValue = dtTemp.Rows[0]["DCClass"].ToString();
cbToCarry.Checked = (dtTemp.Rows[0]["ToCarry"].ToString() == "Y");
((MainForm)ParentForm).SsStatus.Items["tsslModifyUser"].Text = dtTemp.Rows[0]["ModifyUser"].ToString().Trim();
((MainForm)ParentForm).SsStatus.Items["tsslModifyDate"].Text = dtTemp.Rows[0]["ModifyDate"].ToString().Trim();
}
private void SaveEven() //儲存事件
{
try
{
switch (strFrmStatus.ToString())
{
case "ADD": //新增
StringBuilder sbADDSQL = new StringBuilder();
sbADDSQL.Append("Insert Into OTB_FNC_AccountingSubjects(AccountingBookID,AccountingSubID,AccountingClass,DCClass,AccountingSubName,ToCarry,CreateDate,CreateUser,ModifyDate,ModifyUser,Memo) ");
sbADDSQL.Append("Values(@AccountingBookID,@AccountingSubID,@AccountingClass,@DCClass,@AccountingSubName,@ToCarry,Getdate(),@CreateUser,Getdate(),@ModifyUser,@Memo)");
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
//添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.CommandText = sbADDSQL.ToString();
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@AccountingBookID",strAccountingBookID),
new SqlParameter("@AccountingSubID",txtAccountingSubID.Text.Trim()),
new SqlParameter("@AccountingSubName",txtAccountingSubName.Text.Trim()),
new SqlParameter("@AccountingClass",cbAccountingClass.SelectedValue.ToString()),
new SqlParameter("@DCClass",cbDCClass.SelectedValue.ToString()),
new SqlParameter("@ToCarry",cbToCarry.Checked ? "Y" : "N"),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID),
new SqlParameter("@Memo",txtMemo.Text.ToString()),
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
break;
case "MODIFY": //修改
StringBuilder sbMDFSQL = new StringBuilder();
sbMDFSQL.Append("Update OTB_FNC_AccountingSubjects Set ");
sbMDFSQL.Append("AccountingClass = @AccountingClass, ");
sbMDFSQL.Append("DCClass = @DCClass, ");
sbMDFSQL.Append("AccountingSubName = @AccountingSubName, ");
sbMDFSQL.Append("ToCarry = @ToCarry, ");
sbMDFSQL.Append("ModifyDate = GetDate(), ");
sbMDFSQL.Append("ModifyUser = @ModifyUser, ");
sbMDFSQL.Append("Memo = @Memo ");
sbMDFSQL.Append("Where AccountingBookID = @AccountingBookID And AccountingSubID = @AccountingSubID");
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
//添加參數
sqlAdapter.UpdateCommand = new SqlCommand();
sqlAdapter.UpdateCommand.Connection = sqlConn;
sqlAdapter.UpdateCommand.CommandText = sbMDFSQL.ToString();
sqlAdapter.UpdateCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@AccountingBookID",strAccountingBookID),
new SqlParameter("@AccountingSubID",txtAccountingSubID.Text.Trim()),
new SqlParameter("@AccountingSubName",txtAccountingSubName.Text.Trim()),
new SqlParameter("@AccountingClass",cbAccountingClass.SelectedValue.ToString()),
new SqlParameter("@ToCarry",cbToCarry.Checked ? "Y" : "N"),
new SqlParameter("@DCClass",cbDCClass.SelectedValue.ToString()),
new SqlParameter("@ModifyUser",strActiveUserID),
new SqlParameter("@Memo",txtMemo.Text.ToString()),
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.UpdateCommand.ExecuteNonQuery();
}
break;
}
MessageBox.Show("儲存成功", "提示");
StatusChange("None");
LockForm();
}
catch (Exception ex)
{
MessageBox.Show("儲存失敗", "提示");
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void DelEven() //刪除事件
{
StringBuilder sbSQL = new StringBuilder();
try
{
//執行Delete命令
//執行命令
sbSQL.Append("Delete OTB_FNC_AccountingSubjects Where AccountingBookID = @AccountingBookID And AccountingSubID = @AccountingSubID");
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
//添加參數
sqlAdapter.DeleteCommand = new SqlCommand();
sqlAdapter.DeleteCommand.Connection = sqlConn;
sqlAdapter.DeleteCommand.CommandText = sbSQL.ToString();
sqlAdapter.DeleteCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@AccountingBookID",strAccountingBookID),
new SqlParameter("@AccountingSubID",txtAccountingSubID.Text.Trim()),
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.DeleteCommand.ExecuteNonQuery();
}
StatusChange("NONE");
}
catch (Exception ex)
{
MessageBox.Show("刪除錯誤","錯誤");
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void AddEven() //新增事件
{
try
{
//本功能無新增功能
}
catch (Exception ex)
{
throw ex;
}
}
private void GoEvent() //執行事件
{
try
{
StringBuilder strSQL = new StringBuilder("");
switch (strFrmStatus.ToString())
{
case "SEARCH": //搜尋
strSQL.Append("Select * ");
strSQL.Append("From OTB_FNC_AccountingSubjects ");
strSQL.Append("Where AccountingBookID = '" + strAccountingBookID + "' ");
if (txtAccountingSubID.Text.Trim() != "") //科目編號
{
strSQL.Append("And AccountingSubID like '" + txtAccountingSubID.Text.Trim() + "' ");
}
if (txtAccountingSubName.Text.Trim() != "") //會計稱名科目
{
strSQL.Append("And AccountingSubName like '" + txtAccountingSubName.Text.Trim() + "' ");
}
if (cbAccountingClass.SelectedValue != null) //會計科目類別
{
if (cbAccountingClass.SelectedValue.ToString().Trim() != "")
{
strSQL.Append("And AccountingClass = '" + cbAccountingClass.SelectedValue.ToString() + "' ");
}
}
if (cbDCClass.SelectedValue != null) //借貸方類別
{
if (cbDCClass.SelectedValue.ToString() != "")
{
strSQL.Append("And DCClass = '" + cbDCClass.SelectedValue.ToString() + "' ");
}
}
if (cbToCarry.Checked) //是否結轉
{
if (cbDCClass.SelectedValue.ToString() != "")
{
strSQL.Append("And ToCarry = 'Y' ");
}
}
//進行查詢
dgvAccountingSubjects.DataSource = UtilityClass.GetSQLResult(strSQL.ToString()).Tables[0];
break;
}
LockForm();
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
#endregion
#region 事件觸發及問題處理
private void AccountingSubjectMaintain_Load(object sender, EventArgs e)
{
SetupStatus(); //設定畫面狀態
}
private void tsbSearch_Click(object sender, EventArgs e)
{
try
{
//設定Toolbar狀態
CleanToolbar();
tsbSearch.Visible = false;
tsbAdd.Enabled = false;
tsbEdit.Enabled = false;
tsbDelete.Enabled = false;
tsbOK.Visible = true;
tsbCancel.Visible = true;
//開放查詢條件
UnLockForm();
//設定畫面物件狀態
txtAccountingSubID.Text = "";
txtAccountingSubName.Text = "";
txtMemo.Text = "";
cbToCarry.Checked = false;
cbAccountingClass.SelectedIndex = -1;
cbDCClass.SelectedIndex = -1;
StatusChange("Search");
}
catch (Exception ex)
{
MessageBox.Show("查詢錯誤", "提示");
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void dgvAccountingSubject_CellEnter(object sender, DataGridViewCellEventArgs e)
{
string strAccountingSubID = (string)dgvAccountingSubjects.CurrentRow.Cells["cAccountingSubID"].Value;
if (!string.IsNullOrEmpty(strAccountingSubID))
{
GetAccountData(strAccountingSubID); //顯示該科目的值到畫面上
}
}
private void tsbAdd_Click(object sender, EventArgs e)
{
try
{
CleanToolbar();
tsbSearch.Enabled = false;
tsbAdd.Visible = false;
tsbEdit.Enabled = false;
tsbDelete.Enabled = false;
tsbSave.Visible = true;
tsbCancel.Visible = true;
CleanForm();
UnLockForm();
txtAccountingSubID.Focus();
StatusChange("ADD");
dgvAccountingSubjects.ReadOnly = true;
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void tsbEdit_Click(object sender, EventArgs e)
{
try
{
if (strPKey == "")
{
MessageBox.Show("請先選擇資料", "提示");
return;
}
CleanToolbar();
tsbSearch.Enabled = false;
tsbAdd.Enabled = false;
tsbEdit.Visible = false;
tsbDelete.Enabled = false;
tsbSave.Visible = true;
tsbCancel.Visible = true;
UnLockForm();
txtAccountingSubID.ReadOnly = true;
txtAccountingSubName.Focus();
StatusChange("Modify");
dgvAccountingSubjects.ReadOnly = true;
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void tsbDelete_Click(object sender, EventArgs e)
{
try
{
if (MessageBox.Show("請問您確定要刪除本資料?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
this.DelEven();
}
}
catch (Exception ex)
{
MessageBox.Show("刪除錯誤!", "錯誤");
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void tsbSave_Click(object sender, EventArgs e)
{
try
{
string strMessage = CheckForm();
if (strMessage == "")
{
this.SaveEven();
GetAccountData(strPKey);
}
else
{
MessageBox.Show(strMessage, "提示");
}
}
catch (Exception ex)
{
MessageBox.Show("儲存錯誤!", "錯誤");
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void tsbOK_Click(object sender, EventArgs e)
{
try
{
GoEvent();
//還原Toolbar狀態
tsbSearch.Enabled = true;
tsbOK.Visible = false;
tsbCancel.Visible = false;
//關閉查詢條件
LockForm();
CleanToolbar();
}
catch (Exception ex)
{
MessageBox.Show("發生錯誤", "錯誤");
ErrorHandler.WriteErrorLog("AccountingSubjectMaintain.cs", ex);
}
}
private void tsbCancel_Click(object sender, EventArgs e)
{
CleanForm();
CleanToolbar();
LockForm();
StatusChange("None");
}
private void tsbExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void tsbClean_Click(object sender, EventArgs e)
{
CleanForm();
}
private void cbAccountingClass_SelectedIndexChanged(object sender, EventArgs e)
{
if (cbAccountingClass.SelectedValue != null)
{
if (cbAccountingClass.SelectedValue.ToString() == "E" | cbAccountingClass.SelectedValue.ToString() == "L")
{
cbDCClass.SelectedValue = "C";
}
else
{
cbDCClass.SelectedValue = "D";
}
}
}
#endregion
}
}