PDA

View Full Version : سوال: اصلاح دستور SELECT



Smoke_1110
شنبه 27 فروردین 1390, 16:18 عصر
سلام
من برای جستجو در برنامه ام از این کد استفاده کردم :
SELECT name, famili, meli FROM dbo.morakasi where name=@name
حالا می خوام جوری سرچ کنه که من اگر مثلا حرف اول یک اسم رو وارد کردم بره تمام اون اسمهایی که با این حرف شروع میشه رو پیدا کنه در واقع طرز استفاده از دستور LIKE رو نمی دونم لطفا راهنمایی کنید

habib_namvar
شنبه 27 فروردین 1390, 16:50 عصر
SELECT name, famili, meli FROM dbo.morakasi where name like '%n%'

Smoke_1110
شنبه 27 فروردین 1390, 17:03 عصر
SELECT name, famili, meli FROM dbo.morakasi where name like '%n%'


حالا من وقتی این کوئری رو نوشتم و بعد در محیط کد نویسی این کد رو تعریف کردم ارور گرفت؟
table2TableAdapter.FillBynameandfamili(mashmolinDa taSet.Table2, textBox4.Text);

mehrdad.h
شنبه 27 فروردین 1390, 17:03 عصر
با سلام
1.فرض کنید میخواهیم در جدول personnel رکوردهایی را که فیلد FName آنها با Al شروع میشود را مشخص کنید':
SELECT * FROM personnel where FName LIKE 'A%'
2.فرض کنید میخواهیم در جدول personnel رکوردهایی را که فیلد FName آنها به Al ختم میشود را مشخص کنید':
SELECT * FROM personnel where FName LIKE '%Al'
3.فرض کنید میخواهیم در جدول personnel رکوردهایی را که فیلد FName آنها شامل Al است را مشخص کنید':
SELECT * FROM personnel where FName LIKE '%Al%'

Smoke_1110
شنبه 27 فروردین 1390, 17:14 عصر
من برنامه ام فارسی هست یعنی دیتا در رکوردها فارسی هستند و کد من هم اینه ولی باز کار نمی کنه
SqlConnection con1 = new SqlConnection("database=Mashmolin;integrated Security=true;");
con1.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.Table2 where name like '%n%'='" + textBox4.Text + "'", con1);
این ارور رو میده البته این ماله زمانی هست که از کوئری استفاده میکنم
table2TableAdapter.FillBynameandfamili(mashmolinDa taSet.Table2, textBox4.Text);
Error 1 No overload for method 'FillBynameandfamili' takes 2 arguments

Smoke_1110
شنبه 27 فروردین 1390, 19:44 عصر
کسی نبود جواب بده؟

ali.asady
شنبه 27 فروردین 1390, 20:14 عصر
دوست عزیز این رو ببین


SqlConnection con1 = new SqlConnection("database=Mashmolin;integrated Security=true;")



con1.Open();



SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.Table2 where
+string.format(" name like '%{0}%" , textBox4.Text ) , con1
;(

ma.rad
شنبه 27 فروردین 1390, 20:19 عصر
این ارور میگه شما نباید دو تا پارامتر پاس بدید

payman_xxp
شنبه 27 فروردین 1390, 20:43 عصر
من برنامه ام فارسی هست یعنی دیتا در رکوردها فارسی هستند و کد من هم اینه ولی باز کار نمی کنه
SqlConnection con1 = new SqlConnection("database=Mashmolin;integrated Security=true;");
con1.Open();
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.Table2 where name like '%n%'='" + textBox4.Text + "'", con1);
این ارور رو میده البته این ماله زمانی هست که از کوئری استفاده میکنم
table2TableAdapter.FillBynameandfamili(mashmolinDa taSet.Table2, textBox4.Text);
Error 1 No overload for method 'FillBynameandfamili' takes 2 arguments
سلام
با توجه به اینکه گفتید رکودهای فارسی دارید، سطری که کوئری جستجو رو نوشتید اینجوری تغییر بدید:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.Table2 where name like N'" + textBox4.Text + "%', con1);
لطفا متد FillBynameandfamili رو هم قرار بدید ببینیم ارور از کجاست.
موفق باشید.

Smoke_1110
شنبه 27 فروردین 1390, 22:43 عصر
سلام
با توجه به اینکه گفتید رکودهای فارسی دارید، سطری که کوئری جستجو رو نوشتید اینجوری تغییر بدید:

SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM dbo.Table2 where name like N'" + textBox4.Text + "%', con1);
لطفا متد FillBynameandfamili رو هم قرار بدید ببینیم ارور از کجاست.
موفق باشید.

اگه من بخوام بر حسب اسم و فامیل باشه چی ؟ کدش چی میشه ؟ این الان تنها بر حسب اسم هست

asd_moghadas
یک شنبه 28 فروردین 1390, 08:22 صبح
یک دیتا گرید وچند تا تکس باکس مشکلتوحل میکنه البته به شرطی که دیتاگرید بایند شده باشه میتونی سرچ onlin داشته باشی به همرا کدهای زیر براساس جستجو نام ونام خانوادگی ویا...

if (string.IsNullOrEmpty(textBox_Name.Text.Trim()))
{
viewBiografiBindingSource.Filter = "LastName LIKE '" + textBox_LastName.Text.Trim() + "%'";
}
else
{
viewBiografiBindingSource.Filter = "Name LIKE '" + textBox_Name.Text.Trim() + "%' and LastName LIKE '" + textBox_LastName.Text.Trim() + "%'";
}
counter = 0;
foreach (DataGridViewRow dr in dataGridView_Pezashkan.Rows)
{
dr.Cells[0].Value = ++counter;
}
ویا

if (string.IsNullOrEmpty(textBox_LastName.Text.Trim() ) || string.IsNullOrEmpty(textBox_Name.Text.Trim()))
{
viewBiografiBindingSource.Filter = "NezaPezeshki= " + textBox_NezamP.Text.Trim();

}
else
{
viewBiografiBindingSource.Filter = "NezaPezeshki=" + textBox_NezamP.Text.Trim() + "and LastName LIKE '" + textBox_LastName.Text.Trim() +
"%' and Name LIKE '" + textBox_Name.Text.Trim() + "%'";

}
counter = 0;
foreach (DataGridViewRow dr in dataGridView_Pezashkan.Rows)
{
dr.Cells[0].Value = ++counter;

}

payman_xxp
یک شنبه 28 فروردین 1390, 10:12 صبح
اگه من بخوام بر حسب اسم و فامیل باشه چی ؟ کدش چی میشه ؟ این الان تنها بر حسب اسم هست
سلام
اگه ميخواهيد دستور كاملي براتون نوشته بشه و صحيح راهنمايي بشه، مشخصات فيلدهاي جدولتون رو بذاريد، در غير اينصورت كليه جوابهاي دوستاني كه لطف ميكنن جواب ميدن بصورت شماتيك ميشه و شماهم جواب درستي نميگيريد.
به آخر دستور شرط and اضافه كنيد و از كلمه where به بعد رو تكرار كنيد، حالا نسبت به فيلد فاميلي و تكست باكسي كه فاميلي رو ميگيره ، اسامي رو تغيير بديد.
موفق باشيد.

Smoke_1110
یک شنبه 28 فروردین 1390, 17:03 عصر
سلام
اگه ميخواهيد دستور كاملي براتون نوشته بشه و صحيح راهنمايي بشه، مشخصات فيلدهاي جدولتون رو بذاريد، در غير اينصورت كليه جوابهاي دوستاني كه لطف ميكنن جواب ميدن بصورت شماتيك ميشه و شماهم جواب درستي نميگيريد.
به آخر دستور شرط and اضافه كنيد و از كلمه where به بعد رو تكرار كنيد، حالا نسبت به فيلد فاميلي و تكست باكسي كه فاميلي رو ميگيره ، اسامي رو تغيير بديد.
موفق باشيد.
من سه فیلد دارم کد ملی نام ونام خانوادگی که همه استرینگ هستند و به ترتیب تکس باکس 1 تا سه رو تعریف کردم meli , name,famili حالا می خوام بر اساس نام و نام خانوادگی سرچ کنه یعنی قسمتی از نام و نام خانوادگی بنویسه بره پیدا بکنه هر چی اسامی که شاما این حروف میشن

hashemi85sep
یک شنبه 28 فروردین 1390, 19:58 عصر
سلام دوست عزیز
select * from table_name where name like @a="+textbox1.text+" and family like @b="+textbox2.text+"

Smoke_1110
دوشنبه 29 فروردین 1390, 18:55 عصر
یک دیتا گرید وچند تا تکس باکس مشکلتوحل میکنه البته به شرطی که دیتاگرید بایند شده باشه میتونی سرچ onlin داشته باشی به همرا کدهای زیر براساس جستجو نام ونام خانوادگی ویا...

if (string.IsNullOrEmpty(textBox_Name.Text.Trim()))
{
viewBiografiBindingSource.Filter = "LastName LIKE '" + textBox_LastName.Text.Trim() + "%'";
}
else
{
viewBiografiBindingSource.Filter = "Name LIKE '" + textBox_Name.Text.Trim() + "%' and LastName LIKE '" + textBox_LastName.Text.Trim() + "%'";
}
counter = 0;
foreach (DataGridViewRow dr in dataGridView_Pezashkan.Rows)
{
dr.Cells[0].Value = ++counter;
}
ویا

if (string.IsNullOrEmpty(textBox_LastName.Text.Trim() ) || string.IsNullOrEmpty(textBox_Name.Text.Trim()))
{
viewBiografiBindingSource.Filter = "NezaPezeshki= " + textBox_NezamP.Text.Trim();

}
else
{
viewBiografiBindingSource.Filter = "NezaPezeshki=" + textBox_NezamP.Text.Trim() + "and LastName LIKE '" + textBox_LastName.Text.Trim() +
"%' and Name LIKE '" + textBox_Name.Text.Trim() + "%'";

}
counter = 0;
foreach (DataGridViewRow dr in dataGridView_Pezashkan.Rows)
{
dr.Cells[0].Value = ++counter;

}
این خوبه ولی باید خیلی دقیق باشی یعنی مثلا بعضی از اسامی رو نمی یاره در صورتی که در بانک هست و باید حتما تنها حرف اول از نام و فامیل رو بنویسم تا 500 تا اسم بیاره بعد اون توش پیدا بشه

Smoke_1110
دوشنبه 29 فروردین 1390, 18:56 عصر
سلام دوست عزیز
select * from table_name where name like @a="+textbox1.text+" and family like @b="+textbox2.text+"
اینم ارور میگیره

ali.asady
دوشنبه 29 فروردین 1390, 19:41 عصر
چرا از Linq استفاده نمی کنی

var q=from t in table1
where name=textbox1.Text.Contains()
select t;
.

hashemi85sep
سه شنبه 30 فروردین 1390, 14:35 عصر
اینم ارور میگیره

سلام
دوست عزیز
اروری رو که میده بزار اینجا ...