|
|
|
กำหนดเงื่อนไขไว้แล้วแต่ทำไม การวน loop รอบแรกถึงหลุดเงื่อนไข แนะนำทีครับ ขอบคุณครับ |
|
|
|
|
|
|
|
จากโค๊ดที่ผมเขียนได้ผลลัพธ์ตามภาพนี้
Code (C#)
protected void Button3_Click(object sender, EventArgs e)
{
RadioButton RG1 = null;
if (RadioButton1.Checked == true)
{
RG1 = RadioButton1;
SqlTransaction tr = objConn.BeginTransaction();
SqlCommand cmd = objConn.CreateCommand();
int levelseq = 1;
try
{
cmd.CommandType = CommandType.Text;
cmd.Transaction = tr;
for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
{
string typeCarbinet = "1";
string typeDrawer = "2";
string typeFiles = "3";
string typeBinder = "4";
string chkCabinet = GridView1.Rows[i].Cells[4].Text.Trim();
string chkDrawer = GridView1.Rows[i].Cells[5].Text.Trim();
string chkFiles = GridView1.Rows[i].Cells[6].Text.Trim();
string chkBinder = GridView1.Rows[i].Cells[7].Text.Trim();
if (i >= 0)
{
bool testchk = false;
for (int c = 0; c < i; c++) //###Check Cabinet###
if (GridView1.Rows[i].Cells[4].Text.Trim() == GridView1.Rows[c].Cells[4].Text.Trim())
{
testchk = true;
}
if (testchk == false)
{
cmd.CommandText = "Insert Into DIP_LEVEL2(LEVEL_SEQ,LEVEL_TYPE,LEVEL_NAME)" + " values ('" + levelseq + "','" + typeCarbinet + "','" + chkCabinet + "')";
cmd.ExecuteNonQuery();
levelseq++;
}
}
if (i >= 0)
{
bool testchk = false;
for (int d = 0; d < i; d++) //###Check Drawer###
if (GridView1.Rows[i].Cells[5].Text.Trim() == GridView1.Rows[d].Cells[5].Text.Trim())
{
testchk = true;
}
if (testchk == false)
{
cmd.CommandText = "Insert Into DIP_LEVEL2(LEVEL_SEQ,LEVEL_TYPE,LEVEL_NAME)" + " values ('" + levelseq + "','" + typeDrawer + "','" + chkDrawer + "')";
cmd.ExecuteNonQuery();
levelseq++;
}
}
if (i >= 0)
{
bool testchk = false;
for (int f = 0; f < i; f++) //###Check Files###
if (GridView1.Rows[i].Cells[6].Text.Trim() == GridView1.Rows[f].Cells[6].Text.Trim() && GridView1.Rows[i].Cells[6].Text.Trim() == GridView1.Rows[f].Cells[6].Text.Trim())
{
testchk = true;
}
if (testchk == false)
{
cmd.CommandText = "Insert Into DIP_LEVEL2(LEVEL_SEQ,LEVEL_TYPE,LEVEL_NAME)" + " values ('" + levelseq + "','" + typeFiles + "','" + chkFiles + "')";
cmd.ExecuteNonQuery();
levelseq++;
}
}
if (i >= 0)
{
bool testchk = false;
for (int b = 0; b < i; b++) //###Check Binder###
if (GridView1.Rows[i].Cells[7].Text.Trim() == GridView1.Rows.Cells[7].Text.Trim())
{
testchk = true;
}
if (testchk == false)
{
if(GridView1.Rows[i].Cells[7].Text.Trim() != "") //เช็คเงื่อนไขว่าต้องไม่เป็นค่าว่างถึงจะทำ
{
cmd.CommandText = "Insert Into DIP_LEVEL2(LEVEL_SEQ,LEVEL_TYPE,LEVEL_NAME)" + " values ('" + levelseq + "','" + typeBinder + "','" + chkBinder + "')";
cmd.ExecuteNonQuery();
levelseq++;
}
}
}
}
tr.Commit();
Label4.Text = "บันทึกข้อมูลเรียบร้อย";
}
catch (SqlException ex)
{
tr.Rollback();
Label2.Text = "Error - TRANSACTION ROLLED BACK\n" + ex.Message;
}
catch (Exception ex)
{
tr.Rollback();
Label2.Text = "System Error\n" + ex.Message;
}
finally
{
objConn.Close();
tr.Dispose();
}
}
ผมสงสัยว่าจากโค๊ดที่ผมเขียนในบรรทัดที่"048"ได้กำหนดเงื่อนไขไว้แล้วว่าต้องไม่เป็นค่าว่างถึงจะ insert db แล้วทุกๆแถวก็เข้าเงื่อนไข แต่ทำไมแถวแรก( i=0 )ถึง insert db ละครับ ผมงงครับ รบกวนท่านผู้รู้แนะนำทีครับ ผมพลาดตรงไหนไปรึปล่าวครับ ขอบคุณครับ
Tag : .NET, Ms SQL Server 2008, Web (ASP.NET), C#, Windows
|
ประวัติการแก้ไข 2013-01-04 13:59:54 2013-01-04 14:01:00 2013-01-04 14:04:23 2013-01-04 14:05:11 2013-01-04 14:05:23
|
|
|
|
|
Date :
2013-01-04 13:59:08 |
By :
SponG_Gy |
View :
1061 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองเปลี่ยนรุปแบบคำถามใหม่ครับ ดูแล้ว if ซับซ้อน ไล่ยากหน่อยครับ
|
|
|
|
|
Date :
2013-01-07 17:25:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ พี่วิน ผมลองแก้ๆได้แล้วครับ ขอบคุณที่แนะนำครับ
|
|
|
|
|
Date :
2013-01-08 11:42:12 |
By :
SponG_Gy |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|