PDA

View Full Version : سوال: شرط وجود یک داده در جدول



ali_crash
یک شنبه 21 مهر 1392, 16:07 عصر
با سلام خدمت همه اعضای فروم
دوستان من برنامه ی ساده ای نوشتم که تو یه قسمت از اون تابعی وجود داره که به دیتابیس اکسس من وصل میشه و بر اساس یه کلمه سرچ میکنه, وقتی پیداش کرد یه کلمه دیگه از همون سطر یا رکورد رو بر میگردونه
public string moadel(string a)
{
string b="0";
OleDbConnection C1 = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;" + "data source=TagTableDB.accdb");

DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter();
adp.SelectCommand = new OleDbCommand();
adp.SelectCommand.Connection = C1;
adp.SelectCommand.CommandText = "select tag from table1 where word=@a";
adp.SelectCommand.Parameters.AddWithValue("@a", a + "%");
adp.Fill(ds, b);

return b;

}
مشکل اینجاس که وقتی اون کلمه مورد نظر تو دیتابیس موجود نباشه, برنامه متوقف میشه و ارور میده. من نمیتونم شرطی بنویسم که در صورت نبود داده مورد نظر یه پیغام چاپ بکنه مثلا!
بارها و بارها هم دستورات sql رو مرور کردم هیچ دستوری نتونستم پیدا کنم که نشون بده یه داده آیا وجود داره در فیلد مورد نظر یا نه
ممنون میشم راهنمایی کنید.

mazoolagh
دوشنبه 22 مهر 1392, 09:42 صبح
این مشکل ارتباطی با اکسس نداره و بخش #c هم داریم البته

وقتی قرار هست بجای یک مجموعه رکورد فقط یک مقدار برگردونین چه نیازی به پر کردن دیتاست با دیتاآدپتر هست؟
بهتره از executescalar استفاده کنین و برای string مقدار null رو هم چک و با '' جایگزین کنین

ali_crash
دوشنبه 22 مهر 1392, 16:03 عصر
من مشکل رو خودم حل کردم
با استفاده از try و catch
public string moadel(string a)
{
string b = "0";
OleDbConnection C1 = new OleDbConnection("Provider=Microsoft.Ace.OLEDB.12.0;" + "data source=22.accdb");
OleDbCommand Command = C1.CreateCommand();
string cmd = "Select Tag From table1 Where " + "word=" + "'" + a + "'";
Command.CommandText = cmd;
try
{
C1.Open();
OleDbDataReader DR = Command.ExecuteReader();
DR.Read();

b = DR["Tag"].ToString();
DR.Close();
C1.Close();
return b;
}
catch (System.Exception e1)
{
//MessageBox.Show(e1.Message);
b = a;
}
return b;
}
از مدیران محترم خواهشمندم این تاپیک رو به بخش مربوطه انتقال بدن
خیلی جالبه کل اینترنت رو زیر و رو کردم هیچ جا همچین جوابی ندیدم
فکر کنم به درد خیلیا بخوره!
خیلی ساده بود ولی نمیدونم چرا کسی بهش اشاره نکرده.

mazoolagh
دوشنبه 29 مهر 1392, 13:00 عصر
این پست برای استارتر تاپیک نیست و ایشون میتونن به روش اشتباه خودشون ادامه بدن، برای کسانی هست که ممکنه با جستجو به این تاپیک برسن و فکر کنن راه مشکل واقعا همین هست که گفته شده.

هم روش اولیه نادرست هست (که در پاسخ دلیلش اومده) و هم رفع مشکل.