ممنون از راهنماييتون
يه سوال بدستور commitالان با وجود بروز خطاهم اجرا ميشه اين مشكلي نداره؟؟
وقتي خطا وجود داره بازهم تو سطر commitهمون eception رو ميده(This SqlTransaction has completed; it is no longer usable
)
و وقتي كه خطا وجود نداره فقط مقادير سطر اول درست درج ميشه تو ديتابيس البته من كدم يه اررور داشت كه دستورات رو به صورت زير تغيير دادم.
//
//
objcon.Open();
sqltran1 = objcon.BeginTransaction();
try
{
objcom.Transaction = sqltran1;
foreach (DataGridViewRow rows in dataGridView1.Rows)
{
if (rows.Cells[1].Value != null)
{
string serial = rows.Cells[2].Value.ToString();
objcom.CommandText = "select count(*) from goods where serial like '" + serial + "'";
//objcon.Open();
maxcode = objcom.ExecuteScalar();
n = (int)maxcode;
if (n == 0)//kala dar anbar mojod nist
{
objcom.CommandText = "insert into goods values('" + cod + "','" + typ + "','" + model + "','" + p_buy + "','" + p_sale + "','" + serial + "','" + total + "','" + b_date + "','" + g_date + "')" +
"insert into buy_factors values('" + cod + "','" + typ + "','" + model + "','" + serial + "','" + seller + "','" + total + "','" + p_buy + "','" + tarikh + "')" +
"insert into tasvie values('" + code + "','" + mablagh + "','" + takh + "','" + par + "','" + sod + "','" + baghi + "')";
}
else//kala dar anbar vojod dard
{
objcom.CommandText = "select tedad from goods where serial like '" + serial + "'";
maxcode = objcom.ExecuteScalar();
n = (int)maxcode;
objcom.CommandText = "update goods set tedad='" + tedad + "' where serial like '" + serial + "'" +
"insert into tasvie values('" + cod + "','" + mablagh + "','" + takh + "','" + par + "','" + sod + "','" + baghi + "')" +
"insert into buy_factors values('" + cod + "','" + typ + "','" + model + "','" + serial + "','" + seller + "','" + total + "','" + p_buy + "','" + tarikh + "')";
// objcom.Parameters.AddWithValue("@tedad", n + Int32.Parse(rows.Cells[3].Value.ToString()));
}
total = Int32.Parse(rows.Cells[3].Value.ToString());
cod = Int32.Parse(cod_factor.Text);
typ = rows.Cells[0].Value.ToString();
model = rows.Cells[1].Value.ToString();
p_buy = Int32.Parse(rows.Cells[4].Value.ToString());
p_sale = Int32.Parse(rows.Cells[5].Value.ToString());
b_date = bdate_txt.Text;
g_date = rows.Cells[6].Value.ToString();
seller = seller_txt.Text;
par = Int32.Parse(par_txt.Text);
takh = Int32.Parse(takhfif_txt.Text);
mablagh = Int32.Parse(jam_txt.Text);
baghi = Int32.Parse(baghi_txt.Text);
sod = Int32.Parse(baghi_txt.Text);
tarikh = bdate_txt.Text;
try
{
objcom.ExecuteNonQuery();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
// sqltran1.Rollback();
// break;
}
}
}
sqltran1.Commit();
objcon.Close();
//
if (checkBox3.Checked)//
{
objcom.CommandText = "insert into pay_naghdi ('" + cod + "','" + naghd + "','" + tarikh + "','" + seller + "')";
cod = Int32.Parse(cod_factor.Text);
naghd = Int32.Parse(naghd_txt.Text);
tarikh = bdate_txt.Text;
seller = seller_txt.Text;
objcon.Open();
try
{
// sqltran3 = objcon.BeginTransaction();
objcom.Transaction = sqltran3;
objcom.ExecuteNonQuery();
// sqltran3.Commit();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
// sqltran3.Rollback();
}
objcon.Close();
}
if (checkBox2.Checked)//
{
foreach (DataGridViewRow item in dataGridView2.Rows)
{
if (item.Cells[0].Value != null)
{
objcom.CommandText = "insert into pay_chek ('" + cod + "','" + bname + "','" + brnch + "','" + mablagh + "','" + sname + "','" + serial_ch + "','" + sarresid + "','" + state + "','" + seller + "','" + g_name + "')";
cod = Int32.Parse(cod_factor.Text);
bname = item.Cells[0].Value.ToString();
brnch = item.Cells[1].Value.ToString();
sname = item.Cells[2].Value.ToString();
mablagh = Int32.Parse(item.Cells[3].Value.ToString());
serial_ch = Int32.Parse(item.Cells[4].Value.ToString());
sarresid = item.Cells[5].Value.ToString();
state = "";
seller = seller_txt.Text;
g_name = "";
objcon.Open();
//sqltran2 = objcon.BeginTransaction();
try
{
objcom.Transaction = sqltran2;
objcom.ExecuteNonQuery();
// sqltran2.Commit();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
// sqltran2.Rollback();
}
objcon.Close();
}
}
}//if naghdi
sqltran1.Commit();
}
catch (SqlException SqlExceptionErr)
{
MessageBox.Show(SqlExceptionErr.Message);
sqltran1.Rollback();
break;
}
كليه اين دستورات يا بايد تو ديتابيس درست درج بشن يا هيچ كدوم انجام نشن
كمك كنيد لطفا