PDA

View Full Version : سوال: صفر نشان دادن مقادیر تهی در datagridview با بانک اطلاعاتی sqlite



mr.siahatgar
دوشنبه 28 مرداد 1398, 12:58 عصر
سلام
من یه بانک اطلاعاتی اس کیو لایت دارم
یه برنامه نوشتم که اطلاعات را از این بانک میخونه و در دیتاگریدویو نمایش میدهد
همه چیز خوب و عالی هست اما مشکل اینجاست که در دریتاگرید ویو رکود هایی که در بانک خالی هست را بجاش صفر میزاره . یعنی در دیتا گرید ویو سلول خالی را صفر قرار میده. کسی میدونه مشکل چی هست و یا از کجا هست.
این هم کدی هست که نوشتم


DataTable dt = new DataTable();
SQLiteConnection con = new SQLiteConnection("Data Source=amar.db;version=3");


SQLiteDataAdapter objectadapter = new SQLiteDataAdapter("select * from amarshamsi",con);

objectadapter.Fill(dt);

dataGridView1.DataSource=dt;

farhad_shiri_ex
دوشنبه 28 مرداد 1398, 16:50 عصر
سلام
من یه بانک اطلاعاتی اس کیو لایت دارم
یه برنامه نوشتم که اطلاعات را از این بانک میخونه و در دیتاگریدویو نمایش میدهد
همه چیز خوب و عالی هست اما مشکل اینجاست که در دریتاگرید ویو رکود هایی که در بانک خالی هست را بجاش صفر میزاره . یعنی در دیتا گرید ویو سلول خالی را صفر قرار میده. کسی میدونه مشکل چی هست و یا از کجا هست.
این هم کدی هست که نوشتم


DataTable dt = new DataTable();
SQLiteConnection con = new SQLiteConnection("Data Source=amar.db;version=3");


SQLiteDataAdapter objectadapter = new SQLiteDataAdapter("select * from amarshamsi",con);

objectadapter.Fill(dt);

dataGridView1.DataSource=dt;

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

mr.siahatgar
دوشنبه 28 مرداد 1398, 18:11 عصر
سلام دوست گرامی
شاید من سوالم بد نوشتم ببینید مثلا فرض کنید دمای شهر تهران در مدت یک ماه در جدول ثبت شده باشد . حالا ممکن است در یک روز دما اندازه گیری نشده باشد که بالطبع در ان روز دما خالی نشان میدهد در بانک اس کیو لایت . حالا من وقتی گزارشگیری میکنم و در دیتا گرییدویو نمایش میدهم دمای یک ماه شهر را ، متاسفانه هر جا که خالی هست به من صفر نمایش میدهد که معنی اش این هست که دما صفر است . در حالی که اصلا ان روز دما اندازگیری نشده است و اگر کسی نداند فکر میکند اندازه گیری شده و دما برابر با صفر است

Shadow_net
دوشنبه 28 مرداد 1398, 19:03 عصر
حتما نوع فیلد مورد نظر عدد هست که اگر خالی وارد شود بصورت پیش فرض صفر نمایش داده میشه
میتونید یک case بنویسید که اگر صفر بود متن مورد نظر شما نوشته شود
https://www.w3schools.com/sql/sql_case.asp

mr.siahatgar
دوشنبه 28 مرداد 1398, 19:10 عصر
حتما نوع فیلد مورد نظر عدد هست که اگر خالی وارد شود بصورت پیش فرض صفر نمایش داده میشه
میتونید یک case بنویسید که اگر صفر بود متن مورد نظر شما نوشته شود
https://www.w3schools.com/sql/sql_case.asp

نه در خود بانک اس کیو لایت جای خالی هست و عددی ننوشته . فقط در دیتاگریید ویو صفر نشان میدهد

Shadow_net
دوشنبه 28 مرداد 1398, 19:23 عصر
مشکلی نیست با case مشکل حل میشه نهایتش با null بررسیش میکنید

mr.siahatgar
دوشنبه 28 مرداد 1398, 19:36 عصر
ممنون دوست گرامی
من با کد زیر مشکل جدول ا فعلا حل کردم یعنی با دستور اپدیت یه بار فیلد هایی که برابر با تهی بود را برابر با null قرار دادم و در دیتا گرید ویو درست شد



string sql = "UPDATE amarshamsi SET dry = @dry where dry = @2dry ";
SQLiteCommand cmd = new SQLiteCommand(sql, con);
cmd.Parameters.AddWithValue("@dry", null);

cmd.Parameters.AddWithValue("@2dry", "");