PDA

View Full Version : حرفه ای: جستوجوی پیشرفته



alonmahdi
شنبه 05 مرداد 1392, 00:05 صبح
سلام دوستان امان از دست این اساتید فکر می کنند ما دانشجو ها ببیل گیتس هستیم والا بغران...!!!

البته ما دانشجو ها هم خوب بلدیم از زیر کار در بریم ..!!!:قهقهه::قهقهه::قهقهه::لبخن د::لبخند::لبخند:

واما سوال : استاد گرامی ما از من در پروژه پایانی یک سرچ خودکار می خواهند به این صورت که یک منو شبیه به منوی جعبه ابزار ویژوال استادیو که از توش بری هرچند دلت خواست تکتس باکس خواستی بذاری و یک query بر اساس اون چیز هایی که کار بر گذاشته بسازه و نتیجه رو بر گردونه ..!!!

یکم بیشتر توضیح می دم :
فرض کنید موضوع پروژه مربوط به یک ویدیئو کلوپ باشه بعد شما یک فرمی داشته باشی برای جستو جو که سمت چپش یک منو شبیه به ویژوال استادیو (ابزارهاش) داشته باشه و از توش به فرض نام هر چند تا کارگردان که خواستی اضافه کنی و نیز در همون منو چند تا لیبل که روش نوشته شده باشه "و" ،"یا" بگذاری بین اون ها به دلخواه کاربر گرامی و بعد هم سرچ کنه و تازه نتیجه هم بده..!!!

وقتی که به من اینو گفت قیافه من در اون لحظه :خجالت::خجالت::خجالت::خجالت:

وی خب منم خوب پیش رفتم با تلاش شبانه روزی تونستم صفحه اش رو بسازم که اون منو رو داشته باشه و همین طور از توش بشه هر چند که خواستی تکس باکس و اینا بگذاری ولی خب یک چیز کوچیکش موند...!!

اونم کد ناقابل توی دکه سرچش هست ...!!!
کسی می دونه که چه طوریه آیا؟؟؟
تذکر : به زبان سی شارپ لطفا.

مرسی

Mohammadm
شنبه 05 مرداد 1392, 00:16 صبح
هر یک از کنترلهاتو به موجودیتهای جدولت ربط بده و ویژگیهای اون کنترل رو به مجموعه صفات جدولت(موجودیت) ربطش بده
پیاده سازیشم به مهارتت توی کد نویسی داره
البته شاید روشهای بهتری هم باشه ولی در حال حاظر این روش به ذهنم رسید.
برای اینکه کنترلهای ویندوزیتو مثلا تکست باکس رو به جدولت ربط بدی به نظر من بهتر از خاصیت tag کنترلت استفاده کنی این خاصیت از نوع object بنابراین هر نوعی رو میپذیره
و جدول به همراه مجموعه صفاتش رو هم در غالب یک کلاس پیاده سازی کن.

alonmahdi
یک شنبه 06 مرداد 1392, 23:51 عصر
http://barnamenevis.org/showthread.php?343579
http://barnamenevis.org/showthread.php?340305
http://barnamenevis.org/showthread.php?&p=1565318&viewfull=1#post1565318

سلام دوست عزیز
این لینک ها که شما فرستادین رو قبلا استفاده کردم ولی همون طور که در شروط توضیح دادم اصلا کابر معلوم نیست چند با and و یا همین طور or به کار برده باشه .شایدم اصلا هیچ کدوم رو به کار نبرده باشه .این لینک هایی که دادین این طور نیست..!!!
ممنون از زحمتی که کشیدید و پاسخ دادین ولی پاسخ من نیست .

Mohammadm
چهارشنبه 09 مرداد 1392, 00:05 صبح
اقا کسی نبود دیگه؟
کسی چیزی نمی دونه ؟؟؟
متوجه توضیحاتم شدی؟

alonmahdi
چهارشنبه 09 مرداد 1392, 10:36 صبح
متوجه توضیحاتم شدی؟

نه والا خیلی سخت گفتید.:افسرده:

Mohammadm
یک شنبه 13 مرداد 1392, 15:41 عصر
نه والا خیلی سخت گفتید.:افسرده:
ببخشید دیر جواب میدم
شما سورس برنامتونو تا جای که نوشتید رو اینجا قرار بدید

alonmahdi
چهارشنبه 16 مرداد 1392, 00:15 صبح
سورس برنامتونو تا جای که نوشتید رو اینجا قرار بدید

سلام این یک تصویر کوچیک از فورم جستوجو و در زیر هم تمام کد های این فورم رو براتون گذاشتم
108659108660



{
public frm_search()
{
InitializeComponent();
}
public static int wh = 0;
public bool b = false;

public static int i = 0;
public int x = 195;
public int y = 30;
public int fnmae = 1;
public int fyear = 1;
public int fcountry = 1;
public int subname = 1;
public int subfamily = 1;
public int dirname = 1;
public int dirfamily = 1;
public int customername = 1;
public int customerfamily = 1;
public int sellername = 1;
public int sellerfamily = 1;
public int or = 1;
public int and = 1;
private void frm_search_Load(object sender, EventArgs e)
{

}

private void button1_Click(object sender, EventArgs e)
{

}

private void textBox6_TextChanged(object sender, EventArgs e)
{

}

private void textBox6_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtfname = new TextBox();
txtfname.Location = new Point(x, y);

txtfname.Name = "txtfname" + fnmae.ToString();
txtfname.Text = "نام فیلم" + fnmae.ToString();
this.Controls.Add(txtfname);
x += 10;
y += 25;
fnmae++;
txtfname.MouseMove += new MouseEventHandler(txtfname_MouseDown);
}
private void txtfname_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtfyear_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtfcountry_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtdirname_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtdirfamily_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtsubname_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtsubfamily_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtcustomername_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtcustomerfamily_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtsellerfamily_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void txtsellername_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((TextBox)sender).Left += (e.X - ((TextBox)sender).Width / 2);
((TextBox)sender).Top += (e.Y - ((TextBox)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void lblor_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((Label)sender).Left += (e.X - ((Label)sender).Width / 2);
((Label)sender).Top += (e.Y - ((Label)sender).Height / 2);
}

}
//---------------------------------------------------------------------------
private void lbland_MouseDown(object sender, MouseEventArgs e)
{

if (e.Button == MouseButtons.Left)
{
((Label)sender).Left += (e.X - ((Label)sender).Width / 2);
((Label)sender).Top += (e.Y - ((Label)sender).Height / 2);
}

}

private void textBox5_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtfyear = new TextBox();
txtfyear.Location = new Point(x, y);

txtfyear.Name = "txtfyear" + fyear.ToString();
txtfyear.Text = "سال ساخت" + fyear.ToString();
this.Controls.Add(txtfyear);
x += 10;
y += 25;
fyear++;
txtfyear.MouseMove += new MouseEventHandler(txtfyear_MouseDown);
}

private void textBox7_TextChanged(object sender, EventArgs e)
{

}

private void textBox7_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtfcountry = new TextBox();
txtfcountry.Location = new Point(x, y);

txtfcountry.Name = "txtfyear" + fcountry.ToString();
txtfcountry.Text = "کشور" + fcountry.ToString();
this.Controls.Add(txtfcountry);
x += 10;
y += 25;
fcountry++;
txtfcountry.MouseMove += new MouseEventHandler(txtfcountry_MouseDown);
}

private void textBox4_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtdirname = new TextBox();
txtdirname.Location = new Point(x, y);

txtdirname.Name = "txtdirname" + dirname.ToString();
txtdirname.Text = "نام کارگردان" + dirname.ToString();
this.Controls.Add(txtdirname);
x += 10;
y += 25;
dirname++;
txtdirname.MouseMove += new MouseEventHandler(txtdirname_MouseDown);

}

private void textBox1_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtsubname = new TextBox();
txtsubname.Location = new Point(x, y);

txtsubname.Name = "txtsubname" + subname.ToString();
txtsubname.Text = "نام تهیه کننده" + subname.ToString();
this.Controls.Add(txtsubname);
x += 10;
y += 25;
subname++;
txtsubname.MouseMove += new MouseEventHandler(txtsubname_MouseDown);
}

private void textBox3_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtdirfamily = new TextBox();
txtdirfamily.Location = new Point(x, y);

txtdirfamily.Name = "txtdirfamily" + dirfamily.ToString();
txtdirfamily.Text = "نام خانوادگی کارگردان" + dirfamily.ToString();
this.Controls.Add(txtdirfamily);
x += 10;
y += 25;
dirfamily++;
txtdirfamily.MouseMove += new MouseEventHandler(txtdirfamily_MouseDown);
}

private void textBox2_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtsubfamily = new TextBox();
txtsubfamily.Location = new Point(x, y);

txtsubfamily.Name = "txtsubfamily" + subfamily.ToString();
txtsubfamily.Text = "نام خانوادگی تهیه کننده" + subfamily.ToString();
this.Controls.Add(txtsubfamily);
x += 10;
y += 25;
subfamily++;
txtsubfamily.MouseMove += new MouseEventHandler(txtsubfamily_MouseDown);
}

private void textBox9_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtcustomername = new TextBox();
txtcustomername.Location = new Point(x, y);

txtcustomername.Name = "txtcustomername" + customername.ToString();
txtcustomername.Text = "نام مشتری" + customername.ToString();
this.Controls.Add(txtcustomername);
x += 10;
y += 25;
customername++;
txtcustomername.MouseMove += new MouseEventHandler(txtcustomername_MouseDown);
}



private void textBox8_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtcustomerfamily = new TextBox();
txtcustomerfamily.Location = new Point(x, y);

txtcustomerfamily.Name = "txtcustomerfamily" + customerfamily.ToString();
txtcustomerfamily.Text = "نام خانوادگی مشتری" + customerfamily.ToString();
this.Controls.Add(txtcustomerfamily);
x += 10;
y += 25;
customerfamily++;
txtcustomerfamily.MouseMove += new MouseEventHandler(txtcustomerfamily_MouseDown);
}

private void textBox11_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtsellername = new TextBox();
txtsellername.Location = new Point(x, y);

txtsellername.Name = "txtsellername" + sellername.ToString();
txtsellername.Text = "نام فروشنده" + sellername.ToString();
this.Controls.Add(txtsellername);
x += 10;
y += 25;
sellername++;
txtsellername.MouseMove += new MouseEventHandler(txtsellername_MouseDown);
}

private void textBox10_MouseDown(object sender, MouseEventArgs e)
{
TextBox txtsellerfamily = new TextBox();
txtsellerfamily.Location = new Point(x, y);

txtsellerfamily.Name = "txtsellerfamily" + sellerfamily.ToString();
txtsellerfamily.Text = "نام خانوادگی فروشنده" + sellerfamily.ToString();
this.Controls.Add(txtsellerfamily);
x += 10;
y += 25;
sellerfamily++;
txtsellerfamily.MouseMove += new MouseEventHandler(txtsellerfamily_MouseDown);
}
Label lblor = new Label();
private void label1_MouseDown(object sender, MouseEventArgs e)
{

lblor.Location = new Point(x, y);

lblor.Name = "lblor" + or.ToString();
lblor.Text = "یا :";
lblor.AutoSize = true;
this.Controls.Add(lblor);
x += 10;
y += 25;
or++;
lblor.MouseMove += new MouseEventHandler(lblor_MouseDown);
}
public string sqlend = " 1=1";
private void button1_Click_1(object sender, EventArgs e)
{
string sql = "select Customer.codemeli,Customer.cname,Customer.cfamily, Customer.fathername,Customer.cage,Customer.home_Ph one,Customer.Work_Phone,Customer.Mobile,Customer.c ity,Customer.caddress,films.fname,films.Supplierna me,films.Supplierfamily,films.Directorname,films.D irectorfamily,films.Production_Year,films.Style,fi lms.Subject,films.Audience,films.How_to_produce,fi lms.country,Sellers.codemeli,Sellers.sname,Sellers .sfamily,Sellers.sfamily,Sellers.sage,Sellers.home _phone,Sellers.city,Sellers.saddress from (((Customer inner join historys on Customer.c#=historys.c)inner join films on films.f#=historys.f)inner join Sellers on Sellers.s#=historys.s) where ";
string sqlwhere = "";
//MessageBox.Show(txtfname
}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}
}

Mohammadm
چهارشنبه 16 مرداد 1392, 13:43 عصر
شما بجای استفاده از تکست باکس به ازای هر مجموعه صفات از موجودیتهای جدولتون بهتره از یک تکست باکس برای تمام موجودیتهای جدولتون استفاده کنید. به عنوان مثال شما برای تهیه کننده 3 تا کنترل تکست گزاشتید که میشه خلاسش کرد به یک تکست باکس.
برای اینکار هم میتونید خودتون یک کامپوننت طراحی کنید
من نمونشو واستون قرار دادم میتونید دانلود کنید.
http://www.fekre-bekr.com/uploads/books/SearchBox(www.fekre-bekr.com).rar
البته باید بگمکه کلاس persons در قسمت کامپوننتی که طراحی کردم قابل استفاده نیست و از enum استفاده کردم که میتونید گسترش بدید
وقتی کامپوننت رو توی فرمت درگ کنی یک خاصیت به نام personState برای کنتل مورد نظر ایجاد میشه و شما از مقدار موجود در این خاصیت میتونید برای جستجو استفاده کنید
نحوه طراحی حرفه ای ترش هم برای استفاده اون در برنامه به خودتون بستگی داره

Mohammadm
چهارشنبه 16 مرداد 1392, 17:05 عصر
برنامه فوق اصلاح شد
لینک دانلود http://www.fekre-bekr.com/uploads/books/SearchBox2(www.fekre-bekr.com).rar

davidrobert
جمعه 18 مرداد 1392, 00:29 صبح
سلام به دوستان کسی کد جستجو پیشرفته رو به این صوت داه برای جستجو اطلاعات 108791 یعنی وقتی اطلاعات رو داخل تکس باکس واد میکنیم مثل این تکس باکس اطلاعاتی رو به صورت کامبوباکس در زیرش ظاهر بیشه و ما اسم رو انتخاب کنیم و اطلاعات مروبطه در نشون بده خیلی ممنون میشم اگه به این صورت تکس باکس رو قرار بدید که وقتی میزنیم س ورداری اسم های که با س شروع میشن رو بیاره اگه کسی کدی داشته باشه که اطلاعات از دیتابیس بخونه برای جستجو و نشون بده خیلی ممنون میشم یعنی ما یه کامبوباکس داریم برای انتخاب جستجو از قبیل نام ، نام خانوادگی و کد کاربری که میایم از کامبوباکس انتخاب میکینم و بر حسب همون مقدار از کامبوباکس بیام مقدار رو برای جستجو انتخاب کنیم و در تکس باکس تا میزنیم سع سری یه لیست کشوی باز بیشه برای انتخاب سعید و من سعید رو انتخاب کنیم و در دیتاگید اطلاعات رو نشان بده.درست مثل همین کد برای جستجو هستش که مقداری رو از کامبوباکس انتخاب و بر حسب همون مقدار جستجو میکنم. string query = null;
try
{
switch (CmbFind.Text)
{
case "شماره سند": { query = "select * from Tbl_AddFoctorKhedmat where convert(varchar,A_Doc) LIKE '%" + TxtSearch.Text + "%'"; break; }
case "شماره فاکتور": { query = "select * from Tbl_AddFoctorKhedmat where convert(varchar,A_Foc) LIKe '%" + TxtSearch.Text + "%'"; break; }
case "کد خدمات": { query = "select * from Tbl_AddFoctorKhedmat where convert (varchar,A_CodeKhedemat)LIKE'%" + TxtSearch.Text + "%'"; break; }
case "نام سرويس": { query = "select * from Tbl_AddFoctorKhedmat where A_NameServic LIKE N'%" + TxtSearch.Text + "%'"; break; }
case "شرح و حال سرويس": { query = "select * from Tbl_AddFoctorKhedmat where A_Distrebuite LIKE '%" + TxtSearch.Text + "%'"; break; }
//case "هزینه سرویس": { query = "select * from Tbl_AddFoctorKhedmat where convert(varchar,A_Pay) Like '%" + TxtSearch.Text + "%'"; break; }
default: { break; }
}
db.cmd.CommandText = query;
db.cmd.Connection = db.con;
db.con.Open();
db.cmd.ExecuteNonQuery();
db.con.Close();
db.da.SelectCommand = db.cmd;
db.ds.Clear();
db.da.Fill(db.ds, "t1"); و حالا برای احتی کار میخوام وقتی نام رو وارد کردم از دیتابیس اسم رو بخونه و بیاره و با زدن روی اسم اون اسم در همون تکس باکس قرار بگیری و اطلاعات مربوط به همون اسم رو نشون بده خیلی ممنون میشم اگه همچین چیزی قرار بدید و مقدار موجورد رو از دیتابیس بخونه و به صوت لیست کشوی در تکس باکس نشون بده برای انتخاب برای سری نوشتن اطلاعات. برای جستجو.

Mohammadm
جمعه 18 مرداد 1392, 18:27 عصر
سلام به دوستان کسی کد جستجو پیشرفته رو به این صوت داه برای جستجو اطلاعات 108791 یعنی وقتی اطلاعات رو داخل تکس باکس واد میکنیم مثل این تکس باکس اطلاعاتی رو به صورت کامبوباکس در زیرش ظاهر بیشه و ما اسم رو انتخاب کنیم و اطلاعات مروبطه در نشون بده خیلی ممنون میشم اگه به این صورت تکس باکس رو قرار بدید که وقتی میزنیم س ورداری اسم های که با س شروع میشن رو بیاره اگه کسی کدی داشته باشه که اطلاعات از دیتابیس بخونه برای جستجو و نشون بده خیلی ممنون میشم یعنی ما یه کامبوباکس داریم برای انتخاب جستجو از قبیل نام ، نام خانوادگی و کد کاربری که میایم از کامبوباکس انتخاب میکینم و بر حسب همون مقدار از کامبوباکس بیام مقدار رو برای جستجو انتخاب کنیم و در تکس باکس تا میزنیم سع سری یه لیست کشوی باز بیشه برای انتخاب سعید و من سعید رو انتخاب کنیم و در دیتاگید اطلاعات رو نشان بده.درست مثل همین کد برای جستجو هستش که مقداری رو از کامبوباکس انتخاب و بر حسب همون مقدار جستجو میکنم. string query = null;
try
{
switch (CmbFind.Text)
{
case "شماره سند": { query = "select * from Tbl_AddFoctorKhedmat where convert(varchar,A_Doc) LIKE '%" + TxtSearch.Text + "%'"; break; }
case "شماره فاکتور": { query = "select * from Tbl_AddFoctorKhedmat where convert(varchar,A_Foc) LIKe '%" + TxtSearch.Text + "%'"; break; }
case "کد خدمات": { query = "select * from Tbl_AddFoctorKhedmat where convert (varchar,A_CodeKhedemat)LIKE'%" + TxtSearch.Text + "%'"; break; }
case "نام سرويس": { query = "select * from Tbl_AddFoctorKhedmat where A_NameServic LIKE N'%" + TxtSearch.Text + "%'"; break; }
case "شرح و حال سرويس": { query = "select * from Tbl_AddFoctorKhedmat where A_Distrebuite LIKE '%" + TxtSearch.Text + "%'"; break; }
//case "هزینه سرویس": { query = "select * from Tbl_AddFoctorKhedmat where convert(varchar,A_Pay) Like '%" + TxtSearch.Text + "%'"; break; }
default: { break; }
}
db.cmd.CommandText = query;
db.cmd.Connection = db.con;
db.con.Open();
db.cmd.ExecuteNonQuery();
db.con.Close();
db.da.SelectCommand = db.cmd;
db.ds.Clear();
db.da.Fill(db.ds, "t1"); و حالا برای احتی کار میخوام وقتی نام رو وارد کردم از دیتابیس اسم رو بخونه و بیاره و با زدن روی اسم اون اسم در همون تکس باکس قرار بگیری و اطلاعات مربوط به همون اسم رو نشون بده خیلی ممنون میشم اگه همچین چیزی قرار بدید و مقدار موجورد رو از دیتابیس بخونه و به صوت لیست کشوی در تکس باکس نشون بده برای انتخاب برای سری نوشتن اطلاعات. برای جستجو.

بهترنبود این سوالو تو تاپیک دیگه مطرح میکردی؟

alonmahdi
یک شنبه 20 مرداد 1392, 18:01 عصر
شما بجای استفاده از تکست باکس به ازای هر مجموعه صفات از موجودیتهای جدولتون بهتره از یک تکست باکس برای تمام موجودیتهای جدولتون استفاده کنید. به عنوان مثال شما برای تهیه کننده 3 تا کنترل تکست گزاشتید که میشه خلاسش کرد به یک تکست باکس.
برای اینکار هم میتونید خودتون یک کامپوننت طراحی کنید
من نمونشو واستون قرار دادم میتونید دانلود کنید.
http://www.fekre-bekr.com/uploads/books/SearchBox(www.fekre-bekr.com).rar
البته باید بگمکه کلاس persons در قسمت کامپوننتی که طراحی کردم قابل استفاده نیست و از enum استفاده کردم که میتونید گسترش بدید
وقتی کامپوننت رو توی فرمت درگ کنی یک خاصیت به نام personState برای کنتل مورد نظر ایجاد میشه و شما از مقدار موجود در این خاصیت میتونید برای جستجو استفاده کنید
نحوه طراحی حرفه ای ترش هم برای استفاده اون در برنامه به خودتون بستگی داره

سلام قبل از هر چیز من تشکر می کنم از شما به خاطر وقتی که گذاشتید .
ولی دوست عزیز من مشکلم در نحوه لود شدن یا چیدن فرم که نیست من مشکلم در نوشتن کوئری هست که موقع ای که کاربر تعدادی از موارد را وارد می کنه ایجاد بشه درضمن این صورتی که شما نوشتید هم در یک لحظه تنها یک مورد رو میشه مورد جستو جو قرار داد.
اگه میشه کوئری رو برای من بگین چیکار کنم
مرسی

Mohammadm
سه شنبه 22 مرداد 1392, 15:47 عصر
سلام قبل از هر چیز من تشکر می کنم از شما به خاطر وقتی که گذاشتید .
ولی دوست عزیز من مشکلم در نحوه لود شدن یا چیدن فرم که نیست من مشکلم در نوشتن کوئری هست که موقع ای که کاربر تعدادی از موارد را وارد می کنه ایجاد بشه درضمن این صورتی که شما نوشتید هم در یک لحظه تنها یک مورد رو میشه مورد جستو جو قرار داد.
اگه میشه کوئری رو برای من بگین چیکار کنم
مرسی
این هم یک مثال کامل
در این مثال برای هر موجودیت یک کامپوننت طراحی کردم (3 کامپوننت برای 3 موجودیت در این مثال طراحی شده)
سپس در برنامه خودم با نام useComponent از آنها استفاده کردم
در صورتی که تمایل دارید گزارش شما از End with یا Equal یا start with یا contain و ... استفاده کند میتونید این بخش رو هم در قسمت کامپوننتها در داخل Form1 اضافه کنید
در این برنامه تمام شرطها با شرط تساوی بررسی میشوند همچنین دارای قابلیت And و or نیز میباشد.
فیلدهای(مجموعه صفات) جدول نیز در داخل enum تعریف شدند(در این مثال برای هر موجودیت 2 فیلد در نظر گرفته شد )
ارتباط با جدولهای دیگر در در هر کامپوننت توسط تابع GetRelation تعریف شد
در تابع GetRelation آخرین حرف در رشته ها برای کلید اصلی(p) یا خارجی(f) بودن در نظر گرفته شد
کامپوننت searchbox2 برای موجودیت person
کامپوننت SearchBox3 برای موجودیت sport
و کامپوننت searchbox4 برای موجودیت Role طراحی شد
اسکریپت دیتابیس روهم قرار دادم
اگر سوالی داشتید در خدمتم
لینک دانلود http://www.fekre-bekr.com/SearchBox(www.fekre-bekr.com).rar