|
|
|
ขอความกรุณาด้วยครับ เรื่องการเปรียบเทียบข้อมูลระหว่าง Datatable |
|
|
|
|
|
|
|
เอาใส่ datatable
วนลูป
เช็คเงื่อนไข ข้อ 1 กับ ข้อ 2
*** การบ้าน ใครให้โค้ด ขอให้จู้ดๆ
|
|
|
|
|
Date :
2010-12-27 08:44:46 |
By :
ตังค์แมน |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับคุณตังค์แมน
ผมลองทำตามที่คุณตังค์แมนให้แนวทางประกอบกับคำถามอาทิตย์ที่แล้ว
แต่ติดตรงเงื่อนไงนึงครับ คือ
ผมไม่ต้องการให้ Table 1 ถูกนับ ต้องการนับ จำนวน Table 2 ครับ
ถ้ามีแนวทาง ช่วยแนะแนวด้วยครับ
Code (C#)
DataTable data2 = new DataTable();
data2.Columns.Add(new DataColumn("num",typeof(string)));
data2.Columns.Add(new DataColumn("name", typeof(string)));
data2.Columns.Add(new DataColumn("sum", typeof(int)));
dt.Merge(dtfcd);
dt.AcceptChanges();
DataView view = new DataView();
view = dt.DefaultView;
view.Sort = view.Table.Columns[0].ColumnName;
dt = view.ToTable();
int data = 0;
int count = 0;
int previous = 1;
string name = "";
string sum = "";
foreach (DataRow dr in dt.Rows)
{
data = int.Parse(dr[0].ToString());
name = dr[1].ToString();
if(previous == null)
{
count = 1;
}
else if (previous != data)
{
DataRow drnew = data2.NewRow();
drnew["num"] = previous.ToString();
drnew["name"] = name;
drnew["sum"] = count;
data2.Rows.Add(drnew);
count = 1;
}
else if (previous == data)
{
count++;
}
previous = data;
}
dataGridView1.DataSource = data2;
ส่วนตัวนี้เป็นโค๊ดที่ผมเขียนขึ้น แล้วงง กะโค๊ดตัวเองมาก ช่วยให้คำแนะนำด้วยครับ ขอบคุณมากครับ
Code (C#)
int i = 0;
int datafcd = int.Parse(dtfcd.Rows[i][2].ToString());
string branchca = "";
string branchcaprevious = "";
int printca = 0;
int countfcd = 0;
int datapreviousfcd = 0;
int datapreviousfcd2 = 0;
foreach (DataRow dr2 in data2.Rows)
{
datapreviousfcd = int.Parse(dr2[0].ToString());
datapreviousfcd2 = int.Parse(dr2[0].ToString());
branchca = dr2[1].ToString();
printca = int.Parse(dr2[2].ToString());
if (datapreviousfcd == null)
{
countfcd = 0;
}
else if (datapreviousfcd != datafcd)
{
DataRow dr3 = data3.NewRow();
dr3["Branch_ID"] = datapreviousfcd.ToString("0##");
dr3["Branch_Name"] = branchcaprevious;
dr3["Print"] = printca;
double sumoutsource = printca * 0.85;
string outsource = sumoutsource.ToString("#,##0.00");
dr3["Outsource"] = outsource;
double sumposttage = printca * 11;
string posttage = sumposttage.ToString("#,##0.00");
dr3["Posttage"] = posttage;
dr3["PrintFCD"] = countfcd;
data3.Rows.Add(dr3);
countfcd = 1;
}
else if (datapreviousfcd == datafcd)
{
countfcd++;
}
i++;
datapreviousfcd = datapreviousfcd2;
branchcaprevious = branchca;
}
dataGridView1.DataSource = data3;
แนวคิดตามโค๊ดที่ผมเขียน คือการเอา ตารางทั้งสองตารางมาเปรียบเทียบกันเลย แต่ผมติดตรงเงื่อนไขด้านต้นที่กล่าวไว้
เขียนยังไง ก้อไม่ออกซักที ช่วยให้คำแนะนำผมทีครับ
|
|
|
|
|
Date :
2010-12-27 15:43:19 |
By :
noompd |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โค๊ดล่าสุดครับ
Code (C#)
DataTable data2 = new DataTable();
data2.Columns.Add(new DataColumn("num",typeof(string)));
data2.Columns.Add(new DataColumn("name", typeof(string)));
data2.Columns.Add(new DataColumn("sum", typeof(int)));
int i = 0;
int count = 0;
int table1 = 1;
int table2 = 0;
int current = 0;
foreach (DataRow dr in dt.Rows )
{
current = int.Parse(dr[0].ToString());
table2 = int.Parse(dtfcd.Rows[i][0].ToString());
if (table1 == null)
{
count = 1;
}
else if (table1 != table2)
{
DataRow drnew = data2.NewRow();
drnew["num"] = table1;
drnew["sum"] = count;
data2.Rows.Add(drnew);
count = 0;
i++;
}
else if (table1 == table2)
{
count++;
i++;
}
table1 = current;
i = 0;
}
dataGridView1.DataSource = data2;
ปัญหาที่พบตอนนี้ผม ไม่สามารถเขียนโค๊ดให้ เปรียบเทียบระหว่าง datatable ได้ครับ
ใครมีวิธีดี ๆ ช่วยให้คำแนะนำผมด้วยนะครับ
|
|
|
|
|
Date :
2010-12-28 10:45:04 |
By :
noompd |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|