標籤:des io ar os 使用 for 資料 on cti
private void FormLug_Load(object sender, EventArgs e)
{
FieldListLug.Clear();//欄位清除
DI = double.Parse(tbDn.Text);//DI等於tbdn中的值 把值強制轉化成DOUBLE型
string TypeName = "Y_SUPPORT_LUG_4712_3_2007_TYPE";//定義查詢表名
string where = string.Format("DnX < {0} and DnD > {0}", DI);//定義查詢條件
//where = "DnX < " + DI.ToString() + " and DnD > " + DI.ToString();
FieldListLug.Add("TypeC");//要查詢的列
tbType = GetAccessData(TypeName, FieldListLug, where);//獲得查詢出來的表
TypeList = tbType.AsEnumerable()
.Select(p => p.Field<string>("TypeC")).Distinct().ToList();//將表變成列
cbType.Items.AddRange(TypeList.ToArray());//變成列加入控制項中
//cbType.SelectedIndex = 0;
}
private void tbDn_TextChanged(object sender, EventArgs e)
{
#region 解除事務
this.tbDn.HideSelectionChanged -= new System.EventHandler(this.tbDn_TextChanged);
this.cbType.SelectedIndexChanged -= new System.EventHandler(this.cbType_SelectedIndexChanged);
this.cbNum.SelectedIndexChanged -= new System.EventHandler(this.cbNum_SelectedIndexChanged);
#endregion
#region 增加事務
this.tbDn.HideSelectionChanged += new System.EventHandler(this.tbDn_TextChanged);
this.cbType.SelectedIndexChanged += new System.EventHandler(this.cbType_SelectedIndexChanged);
this.cbNum.SelectedIndexChanged += new System.EventHandler(this.cbNum_SelectedIndexChanged);
TopPlateList.Clear();
#endregion
}
private void cbType_SelectedIndexChanged(object sender, EventArgs e)//CBTYPE裡面資料變化時產生的操作
{
cbbHasCover.Enabled = true;//預設CHACKBOX初始時為可以改變
FieldListLug.Clear();//清除耳座欄位列表
string TypeName = "Y_SUPPORT_LUG_4712_3_2007_TYPE";//定義尋找表名的字串
string where = string.Format("DnX < {0} and DnD > {0} and TypeC = ‘{1}‘"
, DI, cbType.Text);//定義尋找條件字串
FieldListLug.Add("HasCover");//將需要的列的欄位加入欄位列 可以加入多個
tbTopPlate = GetAccessData(TypeName, FieldListLug,
where);//查詢表 使用查詢語句將表名 條件 欄位列加入獲得頂板表
TopPlateList = tbTopPlate.AsEnumerable()
.Select(p => p.Field<bool>("HasCover")).Distinct().ToList();//將獲得的表變成列 p.Field<>中類型要保持一致,Distinct()將重複的去除
if (TopPlateList.Count == 1)//如果TopPlateList中只有一個資料 則始終不能改變
{
if (TopPlateList[0])//擷取列中第一個資料 因為是一個BOOL型的列 如果第一個資料是TURE則有蓋板並且成立
{
cbbHasCover.Checked = true;//選擇有蓋板
cbbHasCover.Enabled = false;//並且不能改變
}
else//如果沒有
{
cbbHasCover.Checked = false;//選擇無蓋板
cbbHasCover.Enabled = false;//也不能改變
}
}
}
private void cbbHasCover_CheckedChanged(object sender, EventArgs e)
{
FieldListLug.Clear();//繼續清除欄位
string TypeName = "Y_SUPPORT_LUG_4712_3_2007_TYPE";//定義尋找表名的字串
string where = string.Format("DnX < {0} and DnD > {0} and TypeC = ‘{1}‘ and HasCover = {2}",
DI, cbType.Text, cbbHasCover.Checked);//定義尋找條件字串
FieldListLug.Add("LugNumber");//將需要的列的欄位加入欄位列 可以加入多個
tbNum = GetAccessData
(TypeName, FieldListLug, where);//查詢表 使用查詢語句將表名 條件 欄位列加入 獲得頂板表
NumList = tbNum.AsEnumerable()
.Select(p => p.Field<int>
("LugNumber").ToString()).Distinct().ToList();//.ToString()將查詢結果變成字元型,
//如果上面list定義成字元型就要轉化成字元型 如果是int型與前面一致則不需要.前面int則是資料表中類型
cbNum.Items.AddRange(NumList.ToArray());//將資料列轉化成數組然後加入cbnum中,只接受數組
}
private void cbNum_SelectedIndexChanged(object sender, EventArgs e)
{
FieldListLug.Clear();//繼續清除欄位
if (cbType.Text == A)//選擇了A
{
// string killedString = "";
// killedString = "q1,q2,DnX,DnD";
string TypeName = "Y_SUPPORT_LUG_4712_3_2007_A";//查詢表A
string where = string.Format("LugNumber = {0} ",
cbNum.Text);//定義查詢條件
tbValue = GetAccessData(TypeName, null, where);//查出需要的表
}
else if (cbType.Text == B)//選擇B
{
string TypeName = "Y_SUPPORT_LUG_4712_3_2007_B";
string where = string.Format("LugNumber = {0} ",
cbNum.Text);
tbValue = GetAccessData(TypeName, null, where);
}
else if (cbType.Text == C)//選擇C
{
string TypeName = "Y_SUPPORT_LUG_4712_3_2007_C";
string where = string.Format("LugNumber = {0} ",
cbNum.Text);
tbValue = GetAccessData(TypeName, null, where);
}
}
當From表單中資料變化時,使用代碼擷取資料庫中的資料然後加入combobox中並且從資料庫中取得最後的結果