PDA

View Full Version : مبتدی: سرچ



ghomghol
چهارشنبه 23 دی 1388, 13:17 عصر
سلام دوستان
یه سوال دارم....
من توی برنامه م یه فرم برای سرچ در جدول مورد نظر گذاشتم . دکمه ی سرچم کاملادرست کارمیکنه و اگه داده موردنظرم توی جدول موجود نباشه ی تاپل خالی نشون میده. حالا سوال من اینه که اگه نتیجه جستجو منفی باشه یعنی داده در جدول موجود نباشه چی کار کنم که یه پیغام بده که مثلا داده ی شما موجود نیست؟ چه شرطی باید بذارم؟
ممنون میشم اگه جواب بدین.:لبخندساده:

Arash_janusV3
چهارشنبه 23 دی 1388, 13:20 عصر
سلام ghomghol :لبخند:

اطلاعات بعد از سرچ رو تو چی نشون می دی ؟
تو گرید؟

ghomghol
چهارشنبه 23 دی 1388, 13:26 عصر
علیک سلام
بلهتو گریدنشون میده . میخوام وقتی بعد از سرچ جدول نشون داده شد اگه ایتم مورد نظر توی جدول نبود یعنی جدول خالی بود یه پیغام بده.

ghomghol
چهارشنبه 23 دی 1388, 13:35 عصر
خیلی شرمنده...
من نگفتم شما چی کار میکنید!؟گفتم اگه راه حلی برای این چیزی که من گفتم دارید یاکدشو بلدید لطف کنید بگید...
در هرحال از راهنماییتون ممنون.

Yasersadegh
چهارشنبه 23 دی 1388, 13:44 عصر
سلام دوست عزیز
شما اگه اطلاعات سرچ شده رو تویه DataReader میزیزید می تونید از شرط زیر استفاده کنید!



if(DR.Read())
{
نمایش در گرید//
}
else
{
نمایش پیغام به کاربر//
}

امیدوارم که جواب گرفته باشید!
اگه مشکلی بود بازم در خدمتم!
موفق باشید:چشمک:

ghomghol
چهارشنبه 23 دی 1388, 13:54 عصر
ممنون ازکدی که نوشتین. ولی با عرض شرمندگی من متوجه نشدم چون من جدولمو توی دیتاگریدویو نشون میدم.اگه ممکنه یه کم واضحتر توضیح بدین چون واقعا متوجه نشدم.
در واقع منظور من این بود که مثلا اگه توی گرید یه جدول خالی نشون داده شد یعنی همون نتیجه جستجو منفی بود بعد از زدن دکمه جستجو یه مسیج باکس نمایش داده بشه و به کاربر اطلاع داده بشه که جستجوی شما نتیجه ای نداشت.یا مثلا اگه نتیجه جستجو یا تابع جستجو منفی بود فلان عمل انجام نشه.

saed2006
چهارشنبه 23 دی 1388, 14:03 عصر
بسته به روشی که استفاده کردین میشه فهمید که ایا نتیحه حستحو خالی هست یا خیر
کدتون رو بزارین راحت تر میشه کمک کرد

Yasersadegh
چهارشنبه 23 دی 1388, 14:05 عصر
ممنون ازکدی که نوشتین. ولی با عرض شرمندگی من متوجه نشدم چون من جدولمو توی دیتاگریدویو نشون میدم.اگه ممکنه یه کم واضحتر توضیح بدین چون واقعا متوجه نشدم.
در واقع منظور من این بود که مثلا اگه توی گرید یه جدول خالی نشون داده شد یعنی همون نتیجه جستجو منفی بود بعد از زدن دکمه جستجو یه مسیج باکس نمایش داده بشه و به کاربر اطلاع داده بشه که جستجوی شما نتیجه ای نداشت.یا مثلا اگه نتیجه جستجو یا تابع جستجو منفی بود فلان عمل انجام نشه.
خوب ببینید دوست عزیز وقتی شما میگید که قراره عمل جستجو انجام بشه یعنی اینکه یه دستور select مینویسید و نتیجه رو تویه یک datareader می ریزید و از datareader در گرید نمایش میدید!! درسته!!؟:متفکر:
اگه نه، از چه روشی برایه جستجو استفاده میکنید!!!؟

:متفکر:
راستی می تونید این کار رو هم بکنید که اگه بعد از جستجو تعداد سطرهای گریدتون برابر 0 بود یعنی جستجو نتیجه نداشته و پیغام رو چاپ کنید!!:چشمک:



if(Datagridname.Rows.Count==-1)
{
//جستجو جواب ندارد
}

فکر میکنم که این جواب کارتونو بده!!
موفق باشید:چشمک:

ghomghol
چهارشنبه 23 دی 1388, 19:36 عصر
سلام
یه سوال دیگه هم دارم.
اگر مثلا با استفاده از کوئری تابعی ساختیم که یه مقدار رو بر میگردونه. مثلا ای دی کالایی رو میگیره و قیمت مربوط به اون کالا رو به عنوان یه عدد صحیح از نوع اینتیجر بر میگردونه. اگر بخوام این مقدار صحیح رو به یک متغیر نسبت بدم باید چه دستوری بنویسم.یعنی در واقع این تابع که در دیتا ست ساختم رو چجوری باید فراخوانی کنم؟و اگر بخوام این مقدار صحیح رو در یک مسیج باکس نمایش بدم باید چیکار کنم؟
هر کی میدونه لطفا جواب بده. ممنون

FastCode
چهارشنبه 23 دی 1388, 20:44 عصر
if(Datagridname.Rows.Count==-1)
{
//جستجو جواب ندارد
}
==-1
یا
==0:متفکر:

Yasersadegh
پنج شنبه 24 دی 1388, 08:15 صبح
سلام
یه سوال دیگه هم دارم.
اگر مثلا با استفاده از کوئری تابعی ساختیم که یه مقدار رو بر میگردونه. مثلا ای دی کالایی رو میگیره و قیمت مربوط به اون کالا رو به عنوان یه عدد صحیح از نوع اینتیجر بر میگردونه. اگر بخوام این مقدار صحیح رو به یک متغیر نسبت بدم باید چه دستوری بنویسم.یعنی در واقع این تابع که در دیتا ست ساختم رو چجوری باید فراخوانی کنم؟و اگر بخوام این مقدار صحیح رو در یک مسیج باکس نمایش بدم باید چیکار کنم؟
هر کی میدونه لطفا جواب بده. ممنون
سلام دوست عزیز
من کامل متوجه منظورتون نشدم:گیج: ولی اگه می خواهید که با دادن کد کالا به یه کوئری ازش قیمت رو بگیرید با استفاده از یه تابع، خوب به روش زیر عمل کنید:



private int gheymat(int code)
{
int mablagh;
OleDbConnection con = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source='databaseName.mdb';");
OleDbCommand com = new OleDbCommand("select * from tablename where codekala='"+code+"'" , con);
con.Open();
OleDbDataReader dr;
dr = com.ExecuteReader();
if (dr.Read())
{
mablagh = Convert.toInt32(dr["MablaghKala"]);
}
con.Close();
return mablagh;
}


توجه داشته باش که قسمتهای قرمز رنگ به برنامه خوت بستگی داره!!
حالا اگه بخوای اینو تویه تکست باکس بریزی از دستور زیر هر جا که خواستی استفاده میکنی!



textbox1.Text=gheymat(codekala).toString();

دوست عزیز حتما دقت کن که این مثال برایه بانک اکسس نوشته شده!!

بازم اگه مشکلی بود در خدمتم!
موفق باشی:چشمک:

Yasersadegh
پنج شنبه 24 دی 1388, 08:18 صبح
==-1
یا
==0:متفکر:
سلام
فرمايش شما كاملا صحيحه!!:تشویق:
من با يه چيز ديگه اشتباه كردم!!:لبخند: ==0 درسته!!
ممنون دوست من:چشمک:

ghomghol
جمعه 25 دی 1388, 12:23 عصر
ممنون از راهنماییتون ولی من دستور اس کیو ال رو میخواستم و بانک اکسس استفاده نمیکنم.من با استفاده از دیتا ست این تابع رو ساختم یعنی از همون اد نیو کوئری از بخش سلکت تابعی ساختم که ای دی رو میگیره قیمت رو بر میگردونه . فقط نمیدونم چجوری از این تابع برای نمایش قیمت کالای مورد نظر استفاده کنم.!!؟؟

noroozifar
سه شنبه 22 شهریور 1390, 11:36 صبح
من هم مشکل شرط دارم اگر کسی میتونه کمک کنه این کد اولمه

da = new SqlDataAdapter("select max(Numbervam) as exp1 from T_Darkhast where Codemelli=" + txtmelli.Text, Conect);
ds = new DataSet();
da.Fill(ds, "T_Darkhast");

if (ds.Tables["T_Darkhast"].Rows[0]["exp1"].ToString() != "")

این هم کد دومه :

SqlDataAdapter da = new SqlDataAdapter("select * from T_Darkhast where codemelli=" + txtmelli.Text.Trim()+" and p=0", Conect);
DataSet ds = new DataSet();
da.Fill(ds, "T_Darkhast");
//chek kardane vam bedone pardakht nadashteh bashad
if (ds.Tables["T_Darkhast"].Rows.Count>0)

می خواهم یک شرط عمومی راحتری بگذارم که اگر رکورد پیدا نشد دستورات انجام نشه :
برای اولی وقتی این شرط را میگذارم خطا میدهد :
ds.Tables["T_Darkhast"].Rows.Count>0
با اینکه رکوردی یافت نکرده اما شرط را درست تشخیص داده و برنامه اجرا میشه
برای دومی هم اگر
ds.Tables["T_Darkhast"].Rows[0]["codemelli"].ToString() != ""
استفاده کنم چون مقادیر تهی بر میگرداند پیغام خطا میدهد

یک روش جستجو بهتر و بهینه تر برای بانک می خواهم ... شرط بهتر .. جستجو سریعتر ؟؟
یک نمونه اگر باشه بهتره ...

zare69
سه شنبه 22 شهریور 1390, 13:49 عصر
سلام دوست عزیز به جای کد اولی این کد قرار بده ببین درست میشه.
موفق باشی

da = new SqlDataAdapter("select max(Numbervam) as exp1 from T_Darkhast where Codemelli=" + txtmelli.Text, Conect);
DataSet ds = new DataSet();
da.Fill(ds);

if (ds.Tables[0].Rows.Count > 0)

noroozifar
چهارشنبه 23 شهریور 1390, 03:40 صبح
سلام دوست عزیز به جای کد اولی این کد قرار بده ببین درست میشه.
موفق باشی

da = new SqlDataAdapter("select max(Numbervam) as exp1 from T_Darkhast where Codemelli=" + txtmelli.Text, Conect);
DataSet ds = new DataSet();
da.Fill(ds);

if (ds.Tables[0].Rows.Count > 0)

نه دوست عزیز توضیح دادم که کار نمیکنه یعنی شرط را درست تشخیص میدهد و عبور میکند