mehdiba3
یک شنبه 17 شهریور 1392, 13:14 عصر
سلام دوستای خوبم
یک سوال داشتم که شاید بدرد خیلیا بخوره جوابش
یک قسمت از برنامه ای که در حال نوشتن آن هستم پرداخت پول هستش. هر نفر باید فقط یک بار بتونه پول رو پرداخت کنه و اگه بار بعد با همون مشصات کسی خواست پول پرداخت کنه سیستم بهش باید پیغام خطا بده
ایده ای که به ذهن من رسید این بود که برنامه بره تو دیتابیس رو چک کنه یک فیلد flag تعریف کردم که null هستش. وقتی کاربر عملیات پرداخت رو انجام میده این فیلد flag =true بشه . و بار بعدی اگه اشتباهی همین مشخصات خواست عملیات پرداخت رو انجام بده ابتدا فیلد flag چک بشه اگه مخالف true بود ثبتش کنه و flag =trueبشه .
این نظر من بودش. برنامشم نوشتم ولی اصلا try نیمشه . یعنی مشکل اینجاست که من تو عملیات try catch یکم مشکل دارم.
میشه شما راهنماییم کنید چرا برنامه در مرحله try متوقف میشه و هیچ کاری انجام نمشه؟ شما ایده ای دیگر برای این کار دارید؟
اینم کدش هست:
private void shahriyeh()
{
try
{
string flag =" select flag from shahriyeh where flag<> true ";
var dr = bnk.exereader(flag);
if (dr.Read())
{
string str =
"insert into shahriyeh(scodemeli,cno,sno,price,date,flag) values(@scodemeli,@cno,@sno,@price,@date,'1')";
SqlConnection a =
new SqlConnection("data source=.; initial catalog=academy;integrated security=true");
a.Open();
SqlCommand b = new SqlCommand();
b.Connection = a;
b.CommandText = str;
b.Parameters.AddWithValue("@scodemeli", txtcod.Text);
b.Parameters.AddWithValue("@cno", cno.Text);
b.Parameters.AddWithValue("@sno", sno.Text);
b.Parameters.AddWithValue("@price", txtprice.Text);
b.Parameters.AddWithValue("@date", uc1.VDate);
b.ExecuteNonQuery();
a.Close();
MessageBox.Show("ثبت شد");
}
}
catch (Exception)
{
dateshahriye();
MessageBox.Show("در تاریخ" +" "+ lbldate.Text + "شهریه پرداخت شده است","خطا",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}
یک سوال داشتم که شاید بدرد خیلیا بخوره جوابش
یک قسمت از برنامه ای که در حال نوشتن آن هستم پرداخت پول هستش. هر نفر باید فقط یک بار بتونه پول رو پرداخت کنه و اگه بار بعد با همون مشصات کسی خواست پول پرداخت کنه سیستم بهش باید پیغام خطا بده
ایده ای که به ذهن من رسید این بود که برنامه بره تو دیتابیس رو چک کنه یک فیلد flag تعریف کردم که null هستش. وقتی کاربر عملیات پرداخت رو انجام میده این فیلد flag =true بشه . و بار بعدی اگه اشتباهی همین مشخصات خواست عملیات پرداخت رو انجام بده ابتدا فیلد flag چک بشه اگه مخالف true بود ثبتش کنه و flag =trueبشه .
این نظر من بودش. برنامشم نوشتم ولی اصلا try نیمشه . یعنی مشکل اینجاست که من تو عملیات try catch یکم مشکل دارم.
میشه شما راهنماییم کنید چرا برنامه در مرحله try متوقف میشه و هیچ کاری انجام نمشه؟ شما ایده ای دیگر برای این کار دارید؟
اینم کدش هست:
private void shahriyeh()
{
try
{
string flag =" select flag from shahriyeh where flag<> true ";
var dr = bnk.exereader(flag);
if (dr.Read())
{
string str =
"insert into shahriyeh(scodemeli,cno,sno,price,date,flag) values(@scodemeli,@cno,@sno,@price,@date,'1')";
SqlConnection a =
new SqlConnection("data source=.; initial catalog=academy;integrated security=true");
a.Open();
SqlCommand b = new SqlCommand();
b.Connection = a;
b.CommandText = str;
b.Parameters.AddWithValue("@scodemeli", txtcod.Text);
b.Parameters.AddWithValue("@cno", cno.Text);
b.Parameters.AddWithValue("@sno", sno.Text);
b.Parameters.AddWithValue("@price", txtprice.Text);
b.Parameters.AddWithValue("@date", uc1.VDate);
b.ExecuteNonQuery();
a.Close();
MessageBox.Show("ثبت شد");
}
}
catch (Exception)
{
dateshahriye();
MessageBox.Show("در تاریخ" +" "+ lbldate.Text + "شهریه پرداخت شده است","خطا",MessageBoxButtons.OK,MessageBoxIcon.Warning);
}
}