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.
498 lines
20 KiB
498 lines
20 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;
|
|
using System.Data.SqlClient;
|
|
using ManagementSystem.Utility;
|
|
|
|
namespace ManagementSystem
|
|
{
|
|
public partial class AccountBook : Form
|
|
{
|
|
//程式內共用物件
|
|
string strFrmStatus = ""; //表單狀態
|
|
string strActiveUserID = ""; //取得登入作用的使用者帳號
|
|
SqlConnection sqlConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["SQLConn"].ToString());
|
|
SqlCommand sqlCmd = new SqlCommand();
|
|
DataSet sdInsurance = new System.Data.DataSet();
|
|
string strPKey = ""; //程式內的Key值
|
|
string strKey = ""; //程式內加密的Key值
|
|
int intStartCount = 0;
|
|
|
|
public AccountBook()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#region 自定義程式
|
|
private void SetupStatus() //畫面載入設定
|
|
{
|
|
try
|
|
{
|
|
strActiveUserID = MainForm.strActiveUserID;
|
|
strKey = MainForm.strKey;
|
|
|
|
if (MainForm.strKey == "")
|
|
{
|
|
//設定Toolbar初始狀態
|
|
tsbAdd.Enabled = false;
|
|
tsbSave.Enabled = false;
|
|
tsbDelete.Enabled = false;
|
|
}
|
|
|
|
//設定畫面初始狀態
|
|
StatusChange("NONE");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
private void CleanForm() //清除畫面
|
|
{
|
|
//設定畫面物件狀態
|
|
//清除GridView
|
|
string strSQL = "Select GUIDCode,InsuranceLevel,InsuranceAmountStart,InsuranceAmountEnd,C_LaborProtection,S_LaborProtection,C_HealthInsuranceAmount,S_HealthInsuranceAmount,RetirementAmount From OTB_HR_Insurance Order By InsuranceLevel";
|
|
sdInsurance =UtilityClass.GetSQLResult(strSQL);
|
|
dgvDataMaintain.DataSource = sdInsurance.Tables["Result"];
|
|
Application.DoEvents();
|
|
|
|
}
|
|
|
|
private void CleanToolbar() //清除工具列
|
|
{
|
|
//設定Toolbar狀態
|
|
tsbSearch.Visible = false;
|
|
tsbAdd.Visible = true;
|
|
tsbEdit.Visible = true;
|
|
tsbDelete.Visible = true;
|
|
tsbSave.Visible = false;
|
|
tsbOK.Visible = false;
|
|
tsbCancel.Visible = false;
|
|
}
|
|
|
|
private void UnLockForm() //解除限制唯讀物件
|
|
{
|
|
dgvDataMaintain.Columns["GUIDCODE"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["InsuranceLevel"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["InsuranceAmountStart"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["InsuranceAmountEnd"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["C_LaborProtection"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["S_LaborProtection"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["C_HealthInsuranceAmount"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["S_HealthInsuranceAmount"].ReadOnly = false;
|
|
dgvDataMaintain.Columns["RetirementAmount"].ReadOnly = false;
|
|
}
|
|
|
|
private void LockForm() //限制唯讀物件
|
|
{
|
|
dgvDataMaintain.AllowUserToAddRows = false;
|
|
dgvDataMaintain.Columns["DelColumn"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["GUIDCODE"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["InsuranceLevel"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["InsuranceAmountStart"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["InsuranceAmountEnd"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["C_LaborProtection"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["S_LaborProtection"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["C_HealthInsuranceAmount"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["S_HealthInsuranceAmount"].ReadOnly = true;
|
|
dgvDataMaintain.Columns["RetirementAmount"].ReadOnly = true;
|
|
|
|
}
|
|
|
|
private void StatusChange(string strStatus) //變更主畫面狀態
|
|
{
|
|
switch (strStatus.ToUpper())
|
|
{
|
|
case "NONE":
|
|
CleanForm();
|
|
CleanToolbar();
|
|
LockForm();
|
|
dgvDataMaintain.AllowUserToAddRows = false;
|
|
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "";
|
|
strFrmStatus = "";
|
|
intStartCount = dgvDataMaintain.Rows.Count;
|
|
break;
|
|
case "SEARCH":
|
|
UnLockForm();
|
|
dgvDataMaintain.DataSource = null;
|
|
Application.DoEvents();
|
|
tsbSearch.Visible = false;
|
|
tsbOK.Visible = true;
|
|
tsbCancel.Visible = true;
|
|
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "搜尋";
|
|
strFrmStatus = "SEARCH";
|
|
break;
|
|
case "ADD":
|
|
UnLockForm();
|
|
dgvDataMaintain.AllowUserToAddRows = true;
|
|
tsbAdd.Visible = false;
|
|
tsbSave.Visible = true;
|
|
tsbCancel.Visible = true;
|
|
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "新增";
|
|
strFrmStatus = "ADD";
|
|
break;
|
|
case "MODIFY":
|
|
UnLockForm();
|
|
tsbEdit.Visible = false;
|
|
tsbSave.Visible = true;
|
|
tsbCancel.Visible = true;
|
|
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "修改";
|
|
strFrmStatus = "MODIFY";
|
|
break;
|
|
case "DEL":
|
|
dgvDataMaintain.Columns["DelColumn"].ReadOnly = false;
|
|
tsbOK.Visible = true;
|
|
tsbCancel.Visible = true;
|
|
tsbDelete.Visible = false;
|
|
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "刪除";
|
|
strFrmStatus = "DEL";
|
|
break;
|
|
}
|
|
|
|
}
|
|
|
|
private bool CheckDel() //確認是否有資料被勾選刪除
|
|
{
|
|
foreach (DataGridViewRow row in dgvDataMaintain.Rows)
|
|
{
|
|
DataGridViewCheckBoxCell Delcell = (DataGridViewCheckBoxCell)row.Cells["DelColumn"]; //刪除狀態列
|
|
DataGridViewTextBoxCell Keycell = (DataGridViewTextBoxCell)row.Cells["GUIDCode"]; //需刪除的Key值
|
|
if (Delcell.Value != null)
|
|
{
|
|
if (Delcell.Value == Delcell.TrueValue)
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
private void DelEven() //刪除事件
|
|
{
|
|
try
|
|
{
|
|
string strDelItem = "";
|
|
if (CheckDel())
|
|
{
|
|
if (MessageBox.Show("請問您確定要刪除本資料?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
foreach (DataGridViewRow row in dgvDataMaintain.Rows)
|
|
{
|
|
DataGridViewCheckBoxCell Delcell = (DataGridViewCheckBoxCell)row.Cells["DelColumn"]; //刪除狀態列
|
|
DataGridViewTextBoxCell Keycell = (DataGridViewTextBoxCell)row.Cells["GUIDCode"]; //需刪除的Key值
|
|
if (Delcell.Value != null)
|
|
{
|
|
if (Delcell.Value == Delcell.TrueValue)
|
|
{
|
|
if (strDelItem == "")
|
|
{ strDelItem = "'" + Keycell.Value.ToString() + "'"; }
|
|
else
|
|
{ strDelItem += ",'" + Keycell.Value.ToString() + "'"; }
|
|
}
|
|
}
|
|
}
|
|
string strDelSQL = string.Format("Delete OTB_HR_Insurance Where GUIDCode in ({0})", strDelItem);
|
|
|
|
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConn"].ToString();
|
|
using (SqlConnection sqlConn = new SqlConnection(strConn))
|
|
{
|
|
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
|
|
{
|
|
//添加參數
|
|
sqlAdapter.DeleteCommand = new SqlCommand();
|
|
sqlAdapter.DeleteCommand.Connection = sqlConn;
|
|
sqlAdapter.DeleteCommand.CommandText = strDelSQL.ToString();
|
|
|
|
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
|
|
{
|
|
sqlConn.Open();
|
|
}
|
|
|
|
sqlAdapter.DeleteCommand.ExecuteNonQuery();
|
|
MessageBox.Show("資料刪除失敗", "提示");
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//未選取要刪除的資料
|
|
MessageBox.Show("請先選取欲刪除的資料", "提示");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
private void AddEven() //新增事件
|
|
{
|
|
try
|
|
{
|
|
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConn"].ToString();
|
|
int intDataCount = dgvDataMaintain.Rows.Count - 1;
|
|
StringBuilder strSQL = new StringBuilder();
|
|
for (int intCount = intStartCount; intCount < intDataCount; intCount++)
|
|
{
|
|
strSQL.Append("Insert Into OTB_HR_Insurance(GUIDCode,InsuranceLevel,InsuranceAmountStart,InsuranceAmountEnd,C_LaborProtection,S_LaborProtection,C_HealthInsuranceAmount,S_HealthInsuranceAmount,RetirementAmount,CreateDate,CreateUser,ModifyDate,ModifyUser)");
|
|
strSQL.Append("Values (NEWID(),");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["InsuranceLevel"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["InsuranceAmountStart"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["InsuranceAmountEnd"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["C_LaborProtection"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["S_LaborProtection"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["C_HealthInsuranceAmount"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["S_HealthInsuranceAmount"].Value.ToString() + ",");
|
|
strSQL.Append(dgvDataMaintain.Rows[intCount].Cells["RetirementAmount"].Value.ToString() + ",");
|
|
strSQL.Append("Getdate(),'" + strActiveUserID + "',Getdate(),'" + strActiveUserID + "') ");
|
|
}
|
|
|
|
using (SqlConnection sqlConn = new SqlConnection(strConn))
|
|
{
|
|
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
|
|
{
|
|
//添加參數
|
|
sqlAdapter.InsertCommand = new SqlCommand();
|
|
sqlAdapter.InsertCommand.Connection = sqlConn;
|
|
sqlAdapter.InsertCommand.CommandText = strSQL.ToString();
|
|
|
|
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
|
|
{
|
|
sqlConn.Open();
|
|
}
|
|
|
|
sqlAdapter.InsertCommand.ExecuteNonQuery();
|
|
MessageBox.Show("資料新增成功", "提示");
|
|
StatusChange("NONE");
|
|
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("資料新增失敗", "提示");
|
|
throw ex;
|
|
}
|
|
|
|
}
|
|
|
|
private void EditEven() //修改事件
|
|
{
|
|
try
|
|
{
|
|
//宣告物件
|
|
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConn"].ToString();
|
|
StringBuilder sbSQL = new StringBuilder();
|
|
|
|
foreach (DataGridViewRow row in dgvDataMaintain.Rows)
|
|
{
|
|
DataGridViewCheckBoxCell Updcell = (DataGridViewCheckBoxCell)row.Cells["UPDColumn"]; //修改狀態列
|
|
DataGridViewTextBoxCell Keycell = (DataGridViewTextBoxCell)row.Cells["GUIDCode"]; //需修改的Key值
|
|
if (Updcell.Value != null)
|
|
{
|
|
if (Updcell.Value == Updcell.TrueValue)
|
|
{
|
|
sbSQL.Append(" Update OTB_HR_Insurance Set ");
|
|
sbSQL.Append(" InsuranceLevel = " + row.Cells["InsuranceLevel"].Value.ToString());
|
|
sbSQL.Append(" ,InsuranceAmountStart = " + row.Cells["InsuranceAmountStart"].Value.ToString());
|
|
sbSQL.Append(" ,InsuranceAmountEnd = " + row.Cells["InsuranceAmountEnd"].Value.ToString());
|
|
sbSQL.Append(" ,C_LaborProtection = " + row.Cells["C_LaborProtection"].Value.ToString());
|
|
sbSQL.Append(" ,S_LaborProtection = " + row.Cells["S_LaborProtection"].Value.ToString());
|
|
sbSQL.Append(" ,C_HealthInsuranceAmount = " + row.Cells["C_HealthInsuranceAmount"].Value.ToString());
|
|
sbSQL.Append(" ,S_HealthInsuranceAmount = " + row.Cells["S_HealthInsuranceAmount"].Value.ToString());
|
|
sbSQL.Append(" ,RetirementAmount = " + row.Cells["RetirementAmount"].Value.ToString());
|
|
sbSQL.Append(" ,ModifyDate = Getdate(), ModifyUser ='" + strActiveUserID + "'");
|
|
sbSQL.Append(" Where GUIDCode ='" + Keycell.Value.ToString() + "'");
|
|
}
|
|
}
|
|
}
|
|
|
|
using (SqlConnection sqlConn = new SqlConnection(strConn))
|
|
{
|
|
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
|
|
{
|
|
//添加參數
|
|
sqlAdapter.UpdateCommand = new SqlCommand();
|
|
sqlAdapter.UpdateCommand.Connection = sqlConn;
|
|
sqlAdapter.UpdateCommand.CommandText = sbSQL.ToString();
|
|
|
|
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
|
|
{
|
|
sqlConn.Open();
|
|
}
|
|
|
|
sqlAdapter.UpdateCommand.ExecuteNonQuery();
|
|
StatusChange("NONE");
|
|
|
|
}
|
|
}
|
|
MessageBox.Show("資料修改成功", "提示");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("資料修改失敗", "提示");
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
private void ShowUpdateDate(string strGUID) // 呈現最新修改人
|
|
{
|
|
//排除空值
|
|
if (strGUID.Trim() == "")
|
|
{
|
|
return;
|
|
}
|
|
if (strGUID == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
strPKey = strGUID;
|
|
|
|
string strConn = System.Configuration.ConfigurationManager.ConnectionStrings["SQLConn"].ToString();
|
|
string strSQL = "Select ModifyDate, ModifyUser From OTB_HR_Insurance Where GUIDCode = '" + strPKey + "'";
|
|
|
|
using (SqlConnection sqlConn = new SqlConnection(strConn))
|
|
{
|
|
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
|
|
{
|
|
//添加參數
|
|
sqlAdapter.SelectCommand = new SqlCommand();
|
|
sqlAdapter.SelectCommand.Connection = sqlConn;
|
|
sqlAdapter.SelectCommand.CommandText = strSQL;
|
|
|
|
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
|
|
{
|
|
sqlConn.Open();
|
|
}
|
|
|
|
//進行查詢
|
|
DataTable dtTemp = UtilityClass.GetSQLResult(strSQL).Tables["Result"];
|
|
((MainForm)ParentForm).SsStatus.Items["tsslModifyUser"].Text = dtTemp.Rows[0]["ModifyUser"].ToString().Trim();
|
|
((MainForm)ParentForm).SsStatus.Items["tsslModifyDate"].Text = dtTemp.Rows[0]["ModifyDate"].ToString().Trim();
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 事件觸發及問題處理
|
|
private void InsuranceMaintain_Load(object sender, EventArgs e)
|
|
{
|
|
SetupStatus();
|
|
}
|
|
|
|
private void tsbEdit_Click(object sender, EventArgs e)
|
|
{
|
|
StatusChange("NONE");
|
|
StatusChange("MODIFY");
|
|
}
|
|
|
|
private void tsbCancel_Click(object sender, EventArgs e)
|
|
{
|
|
StatusChange("NONE");
|
|
}
|
|
|
|
private void tsbAdd_Click(object sender, EventArgs e)
|
|
{
|
|
StatusChange("NONE");
|
|
StatusChange("ADD");
|
|
}
|
|
|
|
private void tsbDelete_Click(object sender, EventArgs e)
|
|
{
|
|
StatusChange("DEL");
|
|
}
|
|
|
|
private void tsbOK_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
StringBuilder strSQL = new StringBuilder("");
|
|
switch (strFrmStatus.ToString())
|
|
{
|
|
case "DEL": //刪除
|
|
DelEven();
|
|
StatusChange("NONE");
|
|
break;
|
|
}
|
|
LockForm();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
private void tsbSearch_Click(object sender, EventArgs e)
|
|
{
|
|
StatusChange("SEARCH");
|
|
}
|
|
|
|
private void tsbSave_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
StringBuilder strSQL = new StringBuilder("");
|
|
switch (strFrmStatus.ToString())
|
|
{
|
|
case "ADD": //新增
|
|
AddEven();
|
|
break;
|
|
|
|
case "MODIFY": //修改
|
|
EditEven();
|
|
break;
|
|
}
|
|
LockForm();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
private void dgvDataMaintain_CellClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
ShowUpdateDate(dgvDataMaintain.CurrentRow.Cells["GUIDCode"].Value.ToString()); //顯示最新修改資料
|
|
}
|
|
|
|
private void dgvDataMaintain_CellEnter(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
ShowUpdateDate(dgvDataMaintain.CurrentRow.Cells["GUIDCode"].Value.ToString()); //顯示最新修改資料
|
|
}
|
|
|
|
private void tsbExit_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void dgvDataMaintain_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (dgvDataMaintain.CurrentRow != null)
|
|
{
|
|
DataGridViewCheckBoxCell UPDcell = (DataGridViewCheckBoxCell)dgvDataMaintain.CurrentRow.Cells["UPDColumn"]; //被修改的Key值
|
|
UPDcell.Value = UPDcell.TrueValue;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|