PDA

View Full Version : سوال: جستجو در پایگاه



behruz1212
جمعه 11 مرداد 1392, 15:12 عصر
سلام دوستان من میخوام عمل جستجو بین دوتا جدولو انجام بدم که بر اساس شماره فرم جستجو رو انجام میده.... حالا میخوام یه شرطی بزارم که اگه شماره فرم دو جدول دومم موجود بود تکس باکس هایی که مربوط به جدول دومه رو هم پر کنه وگرنه خالی باشه ....
لطفا راهنماییم کنین

parvizwpf
جمعه 11 مرداد 1392, 15:27 عصر
خب مشکل چیه مگه؟ شرط؟ کدتون رو بزارید.

behruz1212
جمعه 11 مرداد 1392, 15:28 عصر
درسته دوسته عزیز من تو پروژم میخوام تو یک فرمم عمل جستجو رو انجام بدم ولی جستجو از داخل دوتا جدول از پایگام صورت میگیره...
حالا میخوام یک شرط بزارم که اگه شماره فرم تو جدول اول موجود بود جستجو براساس جدول اول صورت بگیره و تعدادی از تکس باکس ها که مربوط به جدول اوله بر اساس جستجو پر شود
اگه شماره فرم تو هر دو جدول موجود بود همه تکس باکسها که مربوط به دوتا جدول است پر شود و جستجو بر اساس هر دو جدول صورت بگیرد

parvizwpf
جمعه 11 مرداد 1392, 15:36 عصر
کدی نوشتید؟ اینجا قرار بدید. یعنی دو جدول که هر دو شماره فرم دارند؟ خب آیا ترتیبی بین این دو هست؟ یعنی مثلا از شماره 1 تا 1000 تو جدول اول بقیه تو دومی؟

veniz2008
جمعه 11 مرداد 1392, 15:39 عصر
درسته دوسته عزیز من تو پروژم میخوام تو یک فرمم عمل جستجو رو انجام بدم ولی جستجو از داخل دوتا جدول از پایگام صورت میگیره...
حالا میخوام یک شرط بزارم که اگه شماره فرم تو جدول اول موجود بود جستجو براساس جدول اول صورت بگیره و تعدادی از تکس باکس ها که مربوط به جدول اوله بر اساس جستجو پر شود
اگه شماره فرم تو هر دو جدول موجود بود همه تکس باکسها که مربوط به دوتا جدول است پر شود و جستجو بر اساس هر دو جدول صورت بگیرد
میتونید از INNER JOIN استفاده کنید تا متوجه بشید آیا در هر دو جدول وجود داره یا نه. اگر نبود برای چک کردن اینکه در یک جدول وجود داره یا نه از دستورات EXISTS یا IN استفاده کنید.

behruz1212
جمعه 11 مرداد 1392, 23:07 عصر
اره نمیتونم شرطشو درست بزارم

string sql = "select tbl_vijegiha.name_mal,tbl_vijegiha.keshvare_sazand e,tbl_vijegiha.name_vahede_sazande,tbl_vijegiha.va zn_abad,tbl_vijegiha.rang,tbl_vijegiha.model,tbl_v ijegiha.serial,tbl_vijegiha.amper,tbl_vijegiha.sho mare_form ,tbl_kala.shomare,tbl_kala.tarikh,tbl_kala.baha_kh arid,tbl_kala.baha_karshenasi,tbl_kala.saere_mosha khasat,tbl_kala.name_estefadekonande,tbl_vijegiha. barchasb,tbl_kala.noea_madrak,tbl_kala.tarikhsabt, tbl_ferestade.barchasb,tbl_ferestade.elat,tbl_fere stade.mojavez,tbl_ferestade.baha_forush,tbl_ferest ade.tahvilgirande,tbl_ferestade.noea_madrak,tbl_fe restade.shomare,tbl_ferestade.tarikhmadrak,tbl_fer estade.molahezat,tbl_ferestade.tarikhsabtf from (tbl_kala inner join tbl_vijegiha on tbl_vijegiha.barchasb= tbl_kala.barchasb )inner join tbl_ferestade on tbl_ferestade.shomare_form=tbl_kala.shomare_form where tbl_ferestade.barchasb="+txtshomarebarchasb.Text+" and ";


string s1 = " tbl_vijegiha.barchasb=" + txtshomarebarchasb.Text + "";
string s2 = " tbl_vijegiha.name_mal='" + txtnamemal.Text + "'";
string s3 = s1 + s2;
if (txtshomarebarchasb.Text != "") sql += s1;
else if (txtnamemal.Text != "") sql += s2;
else sql += s3;

الان من برا جستجو در سه جدول ، سه تا جدولو با هم جوین کردم ولی الان مثلا اگه شماره برچسب 1 در جدولtbl_ferestade ها موجود نباشه ارور میده ... در صورتی که من میخوام اگه موجود نبود جستجو رو تو اون دوتا جدول دیگه انجام بده

behruz1212
شنبه 12 مرداد 1392, 12:14 عصر
دوستان یکی کمکم کنه من احتیاج دارم....
الان دوستان جستجو برا اساس سه جدول کالا و ویژگی ها و فرستاده است.....
جستجو تو کالا و ویزگی ها هیچ مشکلی ندارم باهاش
ولی وقتی شماره برچسب در جدول فرستاده ها وجود نداره ارور میده لطفا برای شرطش کمکم کنین

massoudghb
شنبه 12 مرداد 1392, 12:23 عصر
با سلام .
بهترین روش اینه که شما جستجوی مورد نظرتون رو در SQL توی یک SP با استفاده از InnerJoin بنویسید . و در برنامه اون SP رو صدا بزنید .

behruz1212
شنبه 12 مرداد 1392, 12:29 عصر
خب دوست خوب یه کدی چیزی بزار من که اینطوری متوجه نشدم

veniz2008
شنبه 12 مرداد 1392, 12:40 عصر
خب دوست خوب یه کدی چیزی بزار من که اینطوری متوجه نشدم
هیچوقت بصورت مستقیم درون کوئری مقدار وارد نکنید (براحتی میشه جدولتون رو هــــــــــــــــک کرد). بهتره که از sp ها استفاده کنید ولی اگر از همین روش استفاده میکنید مقادیر رو با پارامترها پاس بدید تا مشکل هـــک جدول پیدا نکنید :

SqlDataAdapter da = new SqlDataAdapter("select * from tbl_kala INNER JOIN tbl_vijegiha on tbl_vijegiha.barchasb= tbl_kala.barchasb INNER JOIN tbl_ferestade on tbl_ferestade.shomare_form=tbl_kala.shomare_form where tbl_ferestade.barchasb= @barchasb ", con);
da.SelectCommand.Parameters.AddWithValue("@barchasb", txtshomarebarchasb.Text);
DataTable dt = new DataTable();
da.Fill(dt);
if(dt.Rows.Count == 0)
{
// در سه جدول موجود نیست. دستور مروبط به یک یا دو جدول رو اینجا بنویس
}
موفق باشید.

massoudghb
شنبه 12 مرداد 1392, 12:45 عصر
SQL SP زیر رو در یک Stored PRocedure توی دیتابیس خودتون ذخیره کنید و به طور مثال اسمش رو بزارین BehroozSP :

CREATE PROCEDURE [dbo].[SelectProduct]
@Code INT
AS
BEGIN
SET NOCOUNT ON;
SELECT *
FROM table1 p1
INNER JOIN table2 p2
ON p1.Code = p2.code
AND p1.code= @Code
END
حالا باید اون SP رو از طریق C# فراخوانی کنید که توضیحاتش در لینک زیر هست :

http://stackoverflow.com/questions/1260952/how-to-execute-a-stored-procedure-within-c-sharp-program

مشکلی بود خبر کنید ..

Mahmoud.Afrad
شنبه 12 مرداد 1392, 14:32 عصر
فکر کنم با یک Left Outer Join نسبت به جدول اول مشکلت حل میشه. در هر صورت خروجی داری و به تکست باکس ها نسبت میدی. دیگه فرقی نمیکنه مقداری در جدول های دیگه وجود داره یا نه.