PDA

View Full Version : سوال: مشکل در بررسی پر یا خالی بودن یک dataset



Jean Reno
شنبه 21 شهریور 1388, 17:28 عصر
با سلام
من قصد دارم وقتی فرمم لود می شه بررسی کنه ببینه آیا رکوردی با شرایط اعمال شده وجود داره یا نه اگه بود لود کنه رو آبجکت هام
کد زیر رو نوشتم و برای fill کردن dataset از کلاس استفاده کردم
اما در بخشی که پر یا خالی بودن dataset بررسی می شه ( بصورت پررنگ نمایش داده شده است ) خطایی که تصویر آن در ضمیمه آمده داده می شه
مشکل کار من کجاست ؟
با سپاس





string check_str = "select * from Radiography where Hospital_Patient_ID=@Hospital_Patient_ID";

SqlCommand Check_comm = new SqlCommand();
Check_comm.CommandText = check_str;
Check_comm.Parameters.AddWithValue("@Hospital_Patient_ID", My_DataBase.Hospital_Patient_ID);
Obj_class.connect();
DataSet Check_Dataset = Obj_class.Fill_Dataset_com(Check_comm, "Radiography");

if (Check_Dataset.Tables["Radiography"].Rows.Count != 0)
{
label5.DataBindings.Add("text", Check_Dataset, "radif");
comboBox1.DataBindings.Add("text", Check_Dataset, "Radio_Type");
comboBox2.DataBindings.Add("text", Check_Dataset, "Radio_Sub_type");
label4.DataBindings.Add("text", Check_Dataset, "Description");
}
Obj_class.disconnect();

saeeedft
شنبه 21 شهریور 1388, 17:33 عصر
شما یک کاری کن،اول چک کن دیتا ست چیزی رو بر میگردونه اگر بر نمیگردونه همون جا با return از تابع خارج شه ، بعدش یک else اضافه کن و در صورتی که چیزی رو برگردوند دستوراتی که شما میخواهید رو انجام بده

Jean Reno
شنبه 21 شهریور 1388, 17:44 عصر
شما یک کاری کن،اول چک کن دیتا ست چیزی رو بر میگردونه اگر بر نمیگردونه همون جا با return از تابع خارج شه ، بعدش یک else اضافه کن و در صورتی که چیزی رو برگردوند دستوراتی که شما میخواهید رو انجام بده

منظورتون چیه که دیتاست چیزی رو برمی گردونه یا نه ؟
من از یکی از توابع کلاسم برای پرکردن دیتاست استفاده می کنم همون طور که در کد زیر نشان داده شده مقدار بازگشتی از نوع دیتاسته که درون دیتاست من ذخیره می شه


DataSet Check_Dataset = Obj_class.Fill_Dataset_com(Check_comm, "Radiography");

بعد تست کردم که رکودی وجود داره یا نه ؟
پس یا رکوردی هست یا نیست دیگه چرا خطا می ده ؟

اصلا معنای خطای داده شده چیه ؟

saeeedft
شنبه 21 شهریور 1388, 17:52 عصر
منظورم اینه که توی شرط اون کدی که سطرها رو میشماری، بنویس اگر برابر صفر بود از اون تابع خارج بشه، و اگر نه که دستورات ادامه پیدا کنه

saeeedft
شنبه 21 شهریور 1388, 17:57 عصر
if (Check_Dataset.Tables["Radiography"].Rows.Count = 0)
return;
else
{
ادامه دستورات
}

Jean Reno
شنبه 21 شهریور 1388, 17:57 عصر
بازم خطا داد
کد بررسی رو بصورت زیر تغییر دادم که اگر صفر شد خارج بشه در غیر این صورت کارش رو انجام بده اما این دفعه روی کد اگر صفر شد همون خطا رو داد



if (Check_Dataset.Tables["Radiography"].Rows.Count == 0)

saeeedft
شنبه 21 شهریور 1388, 18:02 عصر
return رو هم گذاشتی و خطا داد؟

Jean Reno
شنبه 21 شهریور 1388, 18:04 عصر
return رو هم گذاشتی و خطا داد؟




if (Check_Dataset.Tables["Radiography"].Rows.Count == 0)
{
return;
}
else
{
.................. Statments;
}

saeeedft
شنبه 21 شهریور 1388, 18:10 عصر
باید برنامه تون رو ببینم، چون طبق چیزی که گفتم نباید error بده، خواستید این فرمتون رو برام بفرستید، الان باید برم، توی کافی نت هستم

debugger
شنبه 21 شهریور 1388, 18:41 عصر
دوست عزیز کد های این خط را به این صورت تغییر بدین



if (Check_Dataset.Tables["Radiography"].Rows.Count != null)

اگر مشکلتون حل نشد pm بزارین

Jean Reno
شنبه 21 شهریور 1388, 18:48 عصر
باید برنامه تون رو ببینم، چون طبق چیزی که گفتم نباید error بده، خواستید این فرمتون رو برام بفرستید، الان باید برم، توی کافی نت هستم

ممنون مشکل حل شد
نمی دونم چرا ولی وقتی از DataView استفاده کردم مشکلم حل شد
کد اصلاح شده رو در زیر وارد می کنم

از دوستان اگه کسی می دونه علت چیه که نمی تونم مستقیما از Dataset استفاده کنم مثل کد بالایی لطف کنه و علت این امر رو توضیح بده

با سپاس




string Check_str = "select * from Radiography";
Obj_class.connect();
DataTable My_Datatable = Obj_class.select(Check_str);
DataView My_dataview = new DataView(My_Datatable);
My_dataview.RowFilter = "Hospital_Patient_ID='" + My_DataBase.Hospital_Patient_ID + "'";
if (My_dataview.Count != 0)
{
label5.DataBindings.Add("text", My_dataview, "radif");
comboBox1.DataBindings.Add("text", My_dataview, "Radio_Type");
comboBox2.DataBindings.Add("text", My_dataview, "Radio_Sub_type");
label4.DataBindings.Add("text", My_dataview, "Description");

}
Obj_class.disconnect();