PDA

View Full Version : سوال: عدم درج داده های تکراری



amir_T_2008
پنج شنبه 09 بهمن 1393, 13:58 عصر
من میخوام وقتیOptionID برابر یک عددی بود و ip هم برابر یک عددی بود در موقع insert اطلاعات ارور بده که با این شماره OptionID قبلا عدد وارد شده درج شده و از درج جلوگیری کنه کد insert هم قرار میدم که عمل insert انجام میده اما چک نمیکنه که قبلا وجود داره یا نه

ممنون میشم کمک کنید





try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString1"].ConnectionString);
string strHostName = System.Net.Dns.GetHostName();
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetVa lue(0).ToString();
SqlCommand cmd = new SqlCommand("INSERT INTO [Polls_Votes] ( [OptionID], [ip]) VALUES (@OptionID, @ip) ", con);

cmd.Parameters.AddWithValue("ip", clientIPAddress);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();


cmd.Parameters.Add("OptionID", SqlDbType.Int).Value = o;



cmd.ExecuteNonQuery();
con.Close();

lasteror = "رای شما ثبت شد";
}
catch
{
lasteror = "Eroor Post";
}
}

mrprestige
پنج شنبه 09 بهمن 1393, 16:51 عصر
من میخوام وقتیOptionID برابر یک عددی بود و ip هم برابر یک عددی بود در موقع insert اطلاعات ارور بده که با این شماره OptionID قبلا عدد وارد شده درج شده و از درج جلوگیری کنه کد insert هم قرار میدم که عمل insert انجام میده اما چک نمیکنه که قبلا وجود داره یا نه

ممنون میشم کمک کنید





try
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["ConnectionString1"].ConnectionString);
string strHostName = System.Net.Dns.GetHostName();
string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetVa lue(0).ToString();
SqlCommand cmd = new SqlCommand("INSERT INTO [Polls_Votes] ( [OptionID], [ip]) VALUES (@OptionID, @ip) ", con);

cmd.Parameters.AddWithValue("ip", clientIPAddress);
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();


cmd.Parameters.Add("OptionID", SqlDbType.Int).Value = o;



cmd.ExecuteNonQuery();
con.Close();

lasteror = "رای شما ثبت شد";
}
catch
{
lasteror = "Eroor Post";
}
}







سلام وقتتون بخیر . دوست گرامی شما میتونی یه textbox جدید اضافه کنی ( مثلا txt2 ) و توی خاصیت text change مربوط به Textbox که option id تون ( مثلا txt1 ) رو وارد میکنید این کد رو بنویسید

try{
int i=0;
sqldataadapter da=new sqldataadapter("select *from Polls_Votes where option id like ' %"+ txt1 +"% ' " ,cn);
dataset ds=new dataset();
da.fill(ds,Polls_Votes);
txt2.text=ds.table[0].rows[i]["ip"].tostring();
}
catch { }

بعد میتونی توی دکمه مربوط به ثبت اطلاعاتت شرط بزاری که :

int b;
if (txt1==txt2)
{
b=0;
messagebox.show("عدد مورد نظر تکراری است");
return;
}
else {
b=1;
عملیات مربوط به ثبت اطلاعات
}




و در آخر هم visible اون textbox جدیدت که ایجاد کردی ( txt2 ) رو برابر false قرار بده که موقع اجرا نمایش داده نشه . همین .

ان شاا... مشکل برطرف میشه . امیدوارم تونسته باشم کمکی کرده باشم .

موفق باشید.

amir_T_2008
پنج شنبه 09 بهمن 1393, 18:33 عصر
سلام وقتتون بخیر . دوست گرامی شما میتونی یه textbox جدید اضافه کنی ( مثلا txt2 ) و توی خاصیت text change مربوط به Textbox که option id تون ( مثلا txt1 ) رو وارد میکنید این کد رو بنویسید

try{
int i=0;
sqldataadapter da=new sqldataadapter("select *from Polls_Votes where option id like ' %"+ txt1 +"% ' " ,cn);
dataset ds=new dataset();
da.fill(ds,Polls_Votes);
txt2.text=ds.table[0].rows[i]["ip"].tostring();
}
catch { }

بعد میتونی توی دکمه مربوط به ثبت اطلاعاتت شرط بزاری که :

int b;
if (txt1==txt2)
{
b=0;
messagebox.show("عدد مورد نظر تکراری است");
return;
}
else {
b=1;
عملیات مربوط به ثبت اطلاعات
}




و در آخر هم visible اون textbox جدیدت که ایجاد کردی ( txt2 ) رو برابر false قرار بده که موقع اجرا نمایش داده نشه . همین .

ان شاا... مشکل برطرف میشه . امیدوارم تونسته باشم کمکی کرده باشم .

موفق باشید.

آخه دوست عزیز من این کد برای نظر سنجی دارم استفاده میکنم و از کامپوننت دارم استفاده میکنم برای همین textbox ندارم و مجبورم تو کد بالا یه جوری بنویسم که بیاد قبل ثبت نظر چک کنه

mrprestige
پنج شنبه 09 بهمن 1393, 20:17 عصر
آخه دوست عزیز من این کد برای نظر سنجی دارم استفاده میکنم و از کامپوننت دارم استفاده میکنم برای همین textbox ندارم و مجبورم تو کد بالا یه جوری بنویسم که بیاد قبل ثبت نظر چک کنه

بیشتر میشه توضیح بدی متوجه نشدم !! ، چه فرقی میکنه که از کامپوننت استفاده میکنید ببینید خب شما باید بلاخره داخل یه کنترلی عدد مورد نظرتون رو وارد کنی دیگه ؟! شما فرمودید "
من میخوام وقتیOptionID برابر یک عددی بود و ip هم برابر یک عددی بود در موقع insert اطلاعات ارور بده که با این شماره OptionID قبلا عدد وارد شده " که این کدی رو که نوشتم براتون در واقع عمل Binding انجام میده این میاد توی txt2 ( یا هر کنترل ثبتی دیگه به سلیقه خودتون) نسبت به اون sql که توی txt1 نوشتیم فیلد مورد نظرتون رو نشون میده یعنی بلافصله که شما مثلا Option id رو نوشتید درصورت وجود همچین مشخصه ای ip رو توی txt2 نشون میده بعدش دیگه میتونید شرط بزارید که اگه این دوتا برابر هم بود خطا صادر کنه . دیگه فرقی نمیکنه که شما بخواین از کامپوننت استفاده بکنین یا نه .