PDA

View Full Version : مشکل در نوشتن کد جستجو



jafarpalideh
شنبه 17 تیر 1391, 16:25 عصر
سلام دوستان
مشکل کد زیر چیه؟

private void txtProNet1_TextChanged(object sender, EventArgs e)
{
cmd.Connection = conn;
cmd.CommandText = "Select * From nvarede where idname = '" + txtradifename.Text+ "'";
conn.Open();
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
txtradifename.Text = rdr[0].ToString();
txtferstande.Text = rdr[1].ToString();
tvorodename.Text = rdr[2].ToString();
shnamevarede.Text = rdr[3].ToString();
tersalazmabda.Text = rdr[4].ToString();
sharhname.Text = rdr[5].ToString();
}
rdr.Close();
conn.Close();
}
موقعی که اجراش میکنم ارور میده (Data type mismatch in criteria expression.)
به
rdr = cmd.ExecuteReader(); گیر میده

ahmadreza517
شنبه 17 تیر 1391, 18:32 عصر
به نام تنها برنامه نویس هستی
سلام ,

من کدو تست کردم خوب جواب می ده.

majidrezaei2007
یک شنبه 18 تیر 1391, 00:56 صبح
احتمالا نوع idname درون بانک شما از نوع عددی هست و شما فیلدتون رو میزارید بین ' ' و خطا میگره . اون خطو به این شکل تغییر بدید . احتمالا درست میشه

cmd.CommandText = "Select * From nvarede where idname = " + txtradifename.Text;

jafarpalideh
دوشنبه 19 تیر 1391, 09:43 صبح
دوستان هنوز ایراد میگیره از کدم
به نظرتون کجاش مورد داره؟
بازم همون خطا رو میگیره
البته بگم که پایگاه داده ی من اکسس هستش
من idname رو از نوع autonumber گذاشتم

ahmadreza517
دوشنبه 19 تیر 1391, 10:04 صبح
دوست من عکس جدولتو بزار . شاید از فیلد جدول

jafarpalideh
دوشنبه 19 تیر 1391, 10:12 صبح
http://www.pic1.iran-forum.ir/images/up7/82147180495696046660.jpg

وجالب تر اینکه کد حذف هم کار نمیکنه

private void btndelet_Click(object sender, EventArgs e)
{
cmd.Connection = conn;
cmd.CommandText = "delete from nvarede where idname='" +txtsearch +"'";
conn.Close();
OleDbDataAdapter da = new OleDbDataAdapter("select * from nvarede ", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();
}

jafarpalideh
دوشنبه 19 تیر 1391, 11:28 صبح
دوستان مگه دستورات بانک اطلاعاتی واسه اکسس و اس کیو ال با هم فرق داره؟اگه داره میشه بگید کدوم دستوراتش توی update , delete , select , insert فرق میکنه؟
واینکه چرا این کدهای من جواب نمیده؟کجای کارم میلنگه؟
الان از ساعت 8 صبحه دارم ور میرم ولی جواب نگرفتم!!!!الان ساعت 12 هستش!!!!!!

tooraj_azizi_1035
دوشنبه 19 تیر 1391, 11:44 صبح
سلام
یه حرکتی کن:
یه کوری ایجاد کن نوعش رو select بذار ستون id رو یه مقدار بده بعد معادل SQL اش رو ببین همون کد رو Paste کن تو کدت.
برای Insert و Update و Delete هم همین کار رو بکن (یعنی کوئری از نوع مربوطه ایجاد کن).

veniz2008
دوشنبه 19 تیر 1391, 11:49 صبح
دوست عزیز،یه بار واسه همیشه اینو یاد بگیر: وقتی فیلد رو از نوع عددی میگیری نباید از کوتیشن استفاده کنی ( منظورم ' هست)، وقتی از کوتیشن استفاده میکنی به برنامه میگی که میخوای روی فیلد رشته ای کار کنی در صورتی که فیلد شما از نوع عددی هستش. متاسفانه شما یک کدی رو از یه جا گیر آوردید و بدون هیچ منطقی فقط paste کردید. dataadapter واسه چیه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟

cmd.Connection = conn;
OleDbCommand cmd = new OleDbCommand("delete from nvarede where idname=" + txtsearch.Text);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
MessageBox.Show("رکورد مورد نظر با موفقیت حذف شد");

tooraj_azizi_1035
دوشنبه 19 تیر 1391, 11:52 صبح
ولی دوستمون گفت که بدون کوتیشن هم جواب نگرفته؟

veniz2008
دوشنبه 19 تیر 1391, 11:57 صبح
ولی دوستمون گفت که بدون کوتیشن هم جواب نگرفته؟
شما خودت استادید و میدونید که قطعا یه جایی رو اشتباه میکنه، عکس جدولشو که گذاشته و مشخصه که نوع id بصورت عددی هست،مطمئنا جواب میده مگر اشکال از جای دیگه باشه وگرنه کوئری که در پست 3 هست بدون ایراد هستش. شما یه نگاه به دستور delete این دوستمون بنداز، بالای 7 خطا داره، اصلا دستور رو execute نکرده که بخواد عملی انجام بشه، ورودی تکست باکس رو یه نگاه بنداز.

jafarpalideh
دوشنبه 19 تیر 1391, 12:04 عصر
در جواب mohammaddou عزیز که لطف کردن و جواب من رو دادن
اگه تازه کارم من رو ببخشید
اون adp واسه آپدیت کردن گرید ویویه منه
قصد اذیت کردن یا سر کار گذاشتن کسی رو ندارم ولی واقعا داره من رو اذیت میکنه این قطعه کد

tooraj_azizi_1035
دوشنبه 19 تیر 1391, 12:06 عصر
کاری که گفتم رو انجام دادی؟

jafarpalideh
دوشنبه 19 تیر 1391, 12:53 عصر
دوستان کد جستجوم بالاخره درست شد
ولی الان باز کد حذفم کار نمیکنه
باور کنید خودم هم گیج شدم
من از این دو روش هم استفاده کردم جواب نداد و ارور میده

private void btndelet_Click(object sender, EventArgs e)
{

Adp.DeleteCommand.Connection = conn;
Adp.DeleteCommand.CommandText = "delete from nvarede where idname=@idname";
Adp.DeleteCommand.Parameters.AddWithValue("@idname", txtsearch.Text.Trim());
conn.Open();
Adp.DeleteCommand.ExecuteNonQuery();
conn.Close();

}


cmd.Connection = conn;
cmd.CommandText = "delete from nvarede where idname='" + txtsearch + "'";
cmd.ExecuteNonQuery();
conn.Close();
OleDbDataAdapter da = new OleDbDataAdapter("select * from nvarede ", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();

ارور Object reference not set to an instance of an object. رو میده روی
Adp.DeleteCommand.Connection = conn;

jafarpalideh
دوشنبه 19 تیر 1391, 13:04 عصر
الان ای کد رو نوشتم واسه حذف

private void btndelet_Click(object sender, EventArgs e)
{

cmd.Connection = conn;
conn.Open();
cmd.CommandText = "delete from nvarede where idname=" + txtsearch + "";
cmd.ExecuteNonQuery();
conn.Close();
OleDbDataAdapter da = new OleDbDataAdapter("select * from nvarede ", conn);
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();


}
ولی بازم ارور :Syntax error (comma) in query expression 'idname=TextBoxtest.TxtProNet, Text: 555'. رو واسه حذف رکورد 555 من میده

veniz2008
دوشنبه 19 تیر 1391, 13:15 عصر
معلومه به پست هایی که دوستان با زحمت مینویسن توجه نمیکنی، من کد حذف رو توی پست 9 واستون گذاشته بودم .موفق باشی.

jafarpalideh
دوشنبه 19 تیر 1391, 13:57 عصر
با تشکر از mohammaddou عزیز
کارم راه افتاد.
ممنون از همه

jafarpalideh
سه شنبه 20 تیر 1391, 06:39 صبح
خوب حالا یه سوال دیگه ؟؟؟
از چه کدی و در کجا باید استفاده کنم توی سرچم که با زدن هر حرفی دیتاگریدویووی من اطلاعات رو بیاره؟یعنی همزمان با زدن هر کلید دیتاگریدویووی من هم اطلاعاتش نشون داده بشه.چون الان وقتی سرچ میکنم اتفاق خاصی روی گریدم نمی افته

omid_csh
سه شنبه 20 تیر 1391, 09:07 صبح
خوب حالا یه سوال دیگه ؟؟؟
از چه کدی و در کجا باید استفاده کنم توی سرچم که با زدن هر حرفی دیتاگریدویووی من اطلاعات رو بیاره؟یعنی همزمان با زدن هر کلید دیتاگریدویووی من هم اطلاعاتش نشون داده بشه.چون الان وقتی سرچ میکنم اتفاق خاصی روی گریدم نمی افته
سلام
توی رویداد TextChanged مربوط به اون TextBox کد مربوط به جستجو رو بنویسید.

jafarpalideh
سه شنبه 20 تیر 1391, 15:28 عصر
من توی رویداد textchange ، تکست باکس خودم این کد رو نوشتم :

private void txtProNet1_TextChanged(object sender, EventArgs e)
{
if (txtsearch.Text.Length != 0)
{
cmd.Connection = conn;
cmd.CommandText = " Select * From nvarede where idname= " + txtsearch.Text + "";
conn.Open();
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
txtradifename.Text = rdr[0].ToString();
txtferstande.Text = rdr[1].ToString();
tvorodename.Text = rdr[2].ToString();
shnamevarede.Text = rdr[3].ToString();
tersalazmabda.Text = rdr[4].ToString();
sharhname.Text = rdr[5].ToString();
}
rdr.Close();
conn.Close();
}
}

veniz2008
سه شنبه 20 تیر 1391, 15:44 عصر
سلام مهندس، این کدها رو بزار(فقط تو خط اول نام دیتابیس خودتو بزار):

SqlConnection con = new SqlConnection("Data Source = (local); Initial Catalog =Book;Integrated Security = True");
SqlDataAdapter da = new SqlDataAdapter("Select * From nvarede where idname= " + txtsearch.Text, con);
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count != 0)
dataGridView1.DataSource = dt;
else
MessageBox.Show(" هیچ رکوردی یافت نشد");

omid_csh
سه شنبه 20 تیر 1391, 16:05 عصر
سلام
اگه DataGridView رو به DataTable مقید میکنی اینجوری هم میتونی بنویسی:

DataTable table = myDataGridView.DataSource as DataTable;
table.DefaultView.RowFilter = string.Format("Name LIKE '{0}%'", textBox1.Text);
موفق باشی.