PDA

View Full Version : سوال: اجرا شدن یه شرط در صورتی که غلط است



fool66
شنبه 14 اردیبهشت 1392, 11:55 صبح
سلام دوستان توی کد پایین وقتی توی برنامه میزارم همش شرط دوم برقرار میشه هیچ وقت شرط اول درست نمیشه
try
{
SqlDataAdapter da1 = new SqlDataAdapter("SELECT * FROM Obverse WHERE Oid=@P12", con1);
da1.SelectCommand.Parameters.Clear();
da1.SelectCommand.Parameters.AddWithValue("@p12", Oid);
DataTable dt = new DataTable();
dt.Clear();
da1.Fill(dt);
DataRow yt = dt.Rows[0];
if (yt["CName"].ToString() == CName && yt["Tell"].ToString() == Tell)
{
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = new SqlCommand("update Obverse set FName=@tfname,LName=@tlname,CName=@tcname,Tell=@Tt ell,Fax=@tfax,Address=@taddress,Kharidar=@tcode where Oid=@toid", con1);
da.UpdateCommand.Parameters.AddWithValue("@tfname", FName);
da.UpdateCommand.Parameters.AddWithValue("@tlname", LName);
da.UpdateCommand.Parameters.AddWithValue("@tcname", CName);
da.UpdateCommand.Parameters.AddWithValue("@Ttell", Tell);
da.UpdateCommand.Parameters.AddWithValue("@tfax", Fax);
da.UpdateCommand.Parameters.AddWithValue("@taddress", address);
da.UpdateCommand.Parameters.AddWithValue("@tcode", Kharidar);
da.UpdateCommand.Parameters.AddWithValue("@toid", Oid);
con1.Open();
da.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("ویرایش با موفقیت انجام شد");
return true;
}
else
{
if (CHCus(CName, Tell) == false)
{
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = new SqlCommand("update Obverse set FName=@tfname,LName=@tlname,CName=@tcname,Tell=@Tt ell,Fax=@tfax,Address=@taddress,Kharidar=@tcode where Oid=@toid", con1);
da.UpdateCommand.Parameters.AddWithValue("@tfname", FName);
da.UpdateCommand.Parameters.AddWithValue("@tlname", LName);
da.UpdateCommand.Parameters.AddWithValue("@tcname", CName);
da.UpdateCommand.Parameters.AddWithValue("@Ttell", Tell);
da.UpdateCommand.Parameters.AddWithValue("@tfax", Fax);
da.UpdateCommand.Parameters.AddWithValue("@taddress", address);
da.UpdateCommand.Parameters.AddWithValue("@tcode", Kharidar);
da.UpdateCommand.Parameters.AddWithValue("@toid", Oid);
con1.Open();
da.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("ویرایش با موفقیت انجام شد");
return true;
}
else
{
MessageBoxEx.Show("شرکتی قبلا با این مشخصات ثبت گردیده است");
return false;
}
}
}
catch (Exception)
{
MessageBoxEx.Show("مشکل در ویرایش ، مجدد تلاش کنید");
return false;
}
finally
{
con1.Close();
}

fool66
شنبه 14 اردیبهشت 1392, 14:07 عصر
اگه توضیحی نیاز داره بگین تا بنویسم:اشتباه:

csharpdoost
شنبه 14 اردیبهشت 1392, 14:26 عصر
به خاطر اینکه در yt نام ستونهای این جدول رو به رشته تبدیل و برابر نام خودشون قرار میدی خب مسلما این شرط همیشه درسته.

fool66
شنبه 14 اردیبهشت 1392, 14:33 عصر
به خاطر اینکه در yt نام ستونهای این جدول رو به رشته تبدیل و برابر نام خودشون قرار میدی خب مسلما این شرط همیشه درسته.

if (yt["CName"].ToString() == CName && yt["Tell"].ToString() == Tell)


CName, Tell نان تکست باکس ها هستن داداش

hamid_hr
شنبه 14 اردیبهشت 1392, 14:44 عصر
خب اگه تكس باكس هستن به اين صورت بنويس
if (yt["CName"].ToString() == CName.Text && yt["Tell"].ToString() == Tell.Text)

fool66
شنبه 14 اردیبهشت 1392, 14:50 عصر
خب اگه تكس باكس هستن به اين صورت بنويس
if (yt["CName"].ToString() == CName.Text && yt["Tell"].ToString() == Tell.Text)

مقادیر تکست باکس ها هست که میان توی تابع و توی این پارامتر ها قرار می گیرند
این کد رو ببین کامل شده الان شاید متوجه مشکل بشید
public bool EditCus(int Oid, string FName, string LName, string CName, string Tell, string Fax, string address, bool Kharidar)
{
try
{
SqlDataAdapter da1 = new SqlDataAdapter("SELECT CName,Tell FROM Obverse WHERE Oid=@P12", con1);
da1.SelectCommand.Parameters.Clear();
da1.SelectCommand.Parameters.AddWithValue("@p12", Oid);
DataTable dt = new DataTable();
dt.Clear();
da1.Fill(dt);
DataRow yt = dt.Rows[0];
if (yt["CName"].ToString() == CName && yt["Tell"].ToString() == Tell)
{
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = new SqlCommand("update Obverse set FName=@tfname,LName=@tlname,CName=@tcname,Tell=@Tt ell,Fax=@tfax,Address=@taddress,Kharidar=@tcode where Oid=@toid", con1);
da.UpdateCommand.Parameters.AddWithValue("@tfname", FName);
da.UpdateCommand.Parameters.AddWithValue("@tlname", LName);
da.UpdateCommand.Parameters.AddWithValue("@tcname", CName);
da.UpdateCommand.Parameters.AddWithValue("@Ttell", Tell);
da.UpdateCommand.Parameters.AddWithValue("@tfax", Fax);
da.UpdateCommand.Parameters.AddWithValue("@taddress", address);
da.UpdateCommand.Parameters.AddWithValue("@tcode", Kharidar);
da.UpdateCommand.Parameters.AddWithValue("@toid", Oid);
con1.Open();
da.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("ویرایش با موفقیت انجام شد");
return true;
}
else
{
if (CHCus(CName, Tell) == false)
{
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = new SqlCommand("update Obverse set FName=@tfname,LName=@tlname,CName=@tcname,Tell=@Tt ell,Fax=@tfax,Address=@taddress,Kharidar=@tcode where Oid=@toid", con1);
da.UpdateCommand.Parameters.AddWithValue("@tfname", FName);
da.UpdateCommand.Parameters.AddWithValue("@tlname", LName);
da.UpdateCommand.Parameters.AddWithValue("@tcname", CName);
da.UpdateCommand.Parameters.AddWithValue("@Ttell", Tell);
da.UpdateCommand.Parameters.AddWithValue("@tfax", Fax);
da.UpdateCommand.Parameters.AddWithValue("@taddress", address);
da.UpdateCommand.Parameters.AddWithValue("@tcode", Kharidar);
da.UpdateCommand.Parameters.AddWithValue("@toid", Oid);
con1.Open();
da.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("ویرایش با موفقیت انجام شد");
return true;
}
else
{
MessageBoxEx.Show("شرکتی قبلا با این مشخصات ثبت گردیده است");
return false;
}
}
}
catch (Exception)
{
MessageBoxEx.Show("مشکل در ویرایش ، مجدد تلاش کنید");
return false;
}
finally
{
con1.Close();
}
}

fool66
شنبه 14 اردیبهشت 1392, 16:04 عصر
اساتید بشتابید:افسرده:

csharpdoost
شنبه 14 اردیبهشت 1392, 16:23 عصر
ببین عزیزم شما ردیف اول yt رو با مقادیر تکس باکس چک میکنی درست؟ اول نام متغیر ها (همون که میگی اسم تکس باکسه) رو عوض کن. دوم هر بار که اجرا میکنی ببین ردیف اول yt چیه و مقادیر تکس باکسها چیه. بالاخره خارج از این دو نیست . مقادیر تکس باکس رو عوض کن و با مقادیر مختلف بررسی کن . مطمئنن هر دو شرط با هم درست هستند که if اولی اجرا میشه.

fool66
شنبه 14 اردیبهشت 1392, 16:36 عصر
ببین عزیزم شما ردیف اول yt رو با مقادیر تکس باکس چک میکنی درست؟ اول نام متغیر ها (همون که میگی اسم تکس باکسه) رو عوض کن. دوم هر بار که اجرا میکنی ببین ردیف اول yt چیه و مقادیر تکس باکسها چیه. بالاخره خارج از این دو نیست . مقادیر تکس باکس رو عوض کن و با مقادیر مختلف بررسی کن . مطمئنن هر دو شرط با هم درست هستند که if اولی اجرا میشه.

public bool EditCus(int Oid, string FName, string LName, string nam, string phon, string Fax, string address, bool Kharidar)
{
try
{
SqlDataAdapter da1 = new SqlDataAdapter("SELECT CName,Tell FROM Obverse WHERE Oid=@P12", con1);
da1.SelectCommand.Parameters.Clear();
da1.SelectCommand.Parameters.AddWithValue("@p12", Oid);
DataTable dt = new DataTable();
dt.Clear();
da1.Fill(dt);
DataRow yt = dt.Rows[0];
if (yt["CName"].ToString() == nam && yt["Tell"].ToString() == phon)
{
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = new SqlCommand("update Obverse set FName=@tfname,LName=@tlname,CName=@tcname,Tell=@Tt ell,Fax=@tfax,Address=@taddress,Kharidar=@tcode where Oid=@toid", con1);
da.UpdateCommand.Parameters.AddWithValue("@tfname", FName);
da.UpdateCommand.Parameters.AddWithValue("@tlname", LName);
da.UpdateCommand.Parameters.AddWithValue("@tcname", nam);
da.UpdateCommand.Parameters.AddWithValue("@Ttell", phon);
da.UpdateCommand.Parameters.AddWithValue("@tfax", Fax);
da.UpdateCommand.Parameters.AddWithValue("@taddress", address);
da.UpdateCommand.Parameters.AddWithValue("@tcode", Kharidar);
da.UpdateCommand.Parameters.AddWithValue("@toid", Oid);
con1.Open();
da.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("ویرایش با موفقیت انجام شد");
return true;
}
else
{
if (CHCus(nam, phon) == false)
{
SqlDataAdapter da = new SqlDataAdapter();
da.UpdateCommand = new SqlCommand("update Obverse set FName=@tfname,LName=@tlname,CName=@tcname,Tell=@Tt ell,Fax=@tfax,Address=@taddress,Kharidar=@tcode where Oid=@toid", con1);
da.UpdateCommand.Parameters.AddWithValue("@tfname", FName);
da.UpdateCommand.Parameters.AddWithValue("@tlname", LName);
da.UpdateCommand.Parameters.AddWithValue("@tcname", nam);
da.UpdateCommand.Parameters.AddWithValue("@Ttell", phon);
da.UpdateCommand.Parameters.AddWithValue("@tfax", Fax);
da.UpdateCommand.Parameters.AddWithValue("@taddress", address);
da.UpdateCommand.Parameters.AddWithValue("@tcode", Kharidar);
da.UpdateCommand.Parameters.AddWithValue("@toid", Oid);
con1.Open();
da.UpdateCommand.ExecuteNonQuery();
MessageBox.Show("ویرایش با موفقیت انجام شد");
return true;
}
else
{
MessageBoxEx.Show("شرکتی قبلا با این مشخصات ثبت گردیده است");
return false;
}
}
}
catch (Exception)
{
MessageBoxEx.Show("مشکل در ویرایش ، مجدد تلاش کنید");
return false;
}
finally
{
con1.Close();
}
}

بازم نشد

khokhan
شنبه 14 اردیبهشت 1392, 16:50 عصر
سلام

حالا چرا شرط ؟؟؟؟؟؟؟؟؟؟؟؟:متفکر: شرط برای چی گذاشتی :ناراحت: شرط برا زمانی اس که بخوای چیزی رو که وجود نداره اضافه کنی

fool66
شنبه 14 اردیبهشت 1392, 17:03 عصر
من می خوام اگه این دو مقدار رو تغییر نداده بود بدون چک اون ها رو ذخیره کنه ولی اگه اون دو تا رو تغییر داد اول چک کنه بعد ذخیره کنه ولی من هر نوع ورودی بهش میدم شرط دوم رو اجرا می کنه یعنی چک می کنه در هر صورت

fool66
شنبه 14 اردیبهشت 1392, 22:36 عصر
کسی نبود بدونه ایراد از کجاست؟؟؟؟؟

wolf_majid
شنبه 14 اردیبهشت 1392, 23:41 عصر
یک breakPoint بذار ببین مقدار داخل سطرهای دیتاتیبلت چیه
خط 12
if (yt["CName"].ToString() == nam && yt["Tell"].ToString() == phon)

fool66
شنبه 14 اردیبهشت 1392, 23:55 عصر
یک breakPoint بذار ببین مقدار داخل سطرهای دیتاتیبلت چیه
خط 12
if (yt["CName"].ToString() == nam && yt["Tell"].ToString() == phon)

یعنی چی /؟ میشه معادل زیر دیپلمش رو هم بگی

wolf_majid
یک شنبه 15 اردیبهشت 1392, 07:48 صبح
کد زیر رو در نظر بگیر :
string[] strings = new string[] {"hi", "bye"};
DataTable dataTable=new DataTable();
foreach (string s in strings)
{
dataTable.Columns.Add(s);
}
dataTable.LoadDataRow(strings, true);
DataRow yt = dataTable.Rows[0];
if (yt["hi"].ToString() == "hi" && yt["bye"].ToString() == "bye")
{
}
من می خوام مقدار داخل ستون hi رو ببینم چیه
خوب سمت چپ این خط کد توی ستون محیط ویژوال استادیو کلیک می کنم که یک نقطه قرمز ظاهر میشه (طبق فایل پیوست 1)
حالا دو راه دارم :
1- قبل از این که برنامه را اجرا کنم و قبل از این خط یک متغیر تعریف کنم و مقدار این ستون رو داخلش بریزم

string temp=yt["CName"].ToString();
if (yt["CName"].ToString() == nam && yt["Tell"].ToString() == phon)

یا بعد از اجرا زمانیکه یک خط زرد رنگ روی کدم کشید کلیدهای Alt+Control+i رو بزنم وکد زیر رو توش بنویسم
?yt["hi"].ToString();
enter که کنم نتیجه رو نشون میده و نیاز به تعریف متغیر کمکی برای دیدن داخل ستون دیتا نیست