خطای Object cannot be cast from DBNull to other types
سلام دوستان.
من این کد رو در برنامه استفاده کردم و روی خط 20، خطای Object cannot be cast from DBNull to other types میدده.نه مقدار null تو دیتابیس دارم و Boolean.
لطفا راهنمایی کنید.ممنون
private void BindGrid()
{
//پر کردن دیتاگرید
DataTable DT = new DataTable();
SqlDataAdapter DAL1 = new SqlDataAdapter("SELECT * from tbl1", scn);
SqlDataAdapter DAL2 = new SqlDataAdapter("SELECT * from tbl2", scn);
DAL2.Fill(DT);
DAL1.Fill(DT);
dataGridView1.DataSource = DT;
BindingSource1.DataSource = DT;
}
private void sumdvg()
{
// عملیات جمع برای دو ستون دیتاگرید
int sumb = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[4].Value) == false) //خطا در این خط اتفاق می افتد
{
sumb += Convert.ToInt32(row.Cells["cell4"].Value);
lblb.Text = sumb.ToString("n0");
}
}
int sumd = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[5].Value) == true)
{
sumd += Convert.ToInt32(row.Cells["cell5"].Value);
}
}
lbld.Text = sumd.ToString("n0");
}
private void txtb_SelectedValueChanged(object sender, EventArgs e)
{
BindGrid();
BindingSource1.Filter = string.Format("bnk LIKE '%{0}%'", txtb.Text);
sumdvg();
}
نقل قول: خطای Object cannot be cast from DBNull to other types
نقل قول:
نوشته شده توسط
Iman7228
سلام دوستان.
من این کد رو در برنامه استفاده کردم و روی خط 20، خطای Object cannot be cast from DBNull to other types میدده.نه مقدار null تو دیتابیس دارم و Boolean.
لطفا راهنمایی کنید.ممنون
private void BindGrid()
{
//پر کردن دیتاگرید
DataTable DT = new DataTable();
SqlDataAdapter DAL1 = new SqlDataAdapter("SELECT * from tbl1", scn);
SqlDataAdapter DAL2 = new SqlDataAdapter("SELECT * from tbl2", scn);
DAL2.Fill(DT);
DAL1.Fill(DT);
dataGridView1.DataSource = DT;
BindingSource1.DataSource = DT;
}
private void sumdvg()
{
// عملیات جمع برای دو ستون دیتاگرید
int sumb = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[4].Value) == false) //خطا در این خط اتفاق می افتد
{
sumb += Convert.ToInt32(row.Cells["cell4"].Value);
lblb.Text = sumb.ToString("n0");
}
}
int sumd = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[5].Value) == true)
{
sumd += Convert.ToInt32(row.Cells["cell5"].Value);
}
}
lbld.Text = sumd.ToString("n0");
}
private void txtb_SelectedValueChanged(object sender, EventArgs e)
{
BindGrid();
BindingSource1.Filter = string.Format("bnk LIKE '%{0}%'", txtb.Text);
sumdvg();
}
خوب داره میگه که اون رکورد دارای داده ی Null هست . و نمیتونه Null رو تبدیل کنه .
داده های که داری میخونی رو چک کن تویه دیتابیس . شما داری تو برنامه میگی Null رو تبدیل کن و برنامه نمیتونه
نقل قول: خطای Object cannot be cast from DBNull to other types
این رو چک کن
private void BindGrid()
{
//پر کردن دیتاگرید
DataTable DT = new DataTable();
SqlDataAdapter DAL1 = new SqlDataAdapter("SELECT * from tbl1", scn);
SqlDataAdapter DAL2 = new SqlDataAdapter("SELECT * from tbl2", scn);
DAL2.Fill(DT);
DAL1.Fill(DT);
dataGridView1.DataSource = DT;
BindingSource1.DataSource = DT;
}
private void sumdvg()
{
// عملیات جمع برای دو ستون دیتاگرید
int sumb = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if(this.dataGridView1.Rows[0].Cells[4].Value)!=DBNull.Value)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[4].Value) == false) //خطا در این خط اتفاق می افتد
{
sumb += Convert.ToInt32(row.Cells["cell4"].Value);
lblb.Text = sumb.ToString("n0");
}
}
}
int sumd = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if(this.dataGridView1.Rows[0].Cells[5].Value)!=DBNull.Value)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[5].Value) == true)
{
sumd += Convert.ToInt32(row.Cells["cell5"].Value);
}
}
}
lbld.Text = sumd.ToString("n0");
}
private void txtb_SelectedValueChanged(object sender, EventArgs e)
{
BindGrid();
BindingSource1.Filter = string.Format("bnk LIKE '%{0}%'", txtb.Text);
sumdvg();
}
نقل قول: خطای Object cannot be cast from DBNull to other types
نقل قول:
نوشته شده توسط
jafarpalideh
خوب داره میگه که اون رکورد دارای داده ی Null هست . و نمیتونه Null رو تبدیل کنه .
داده های که داری میخونی رو چک کن تویه دیتابیس . شما داری تو برنامه میگی Null رو تبدیل کن و برنامه نمیتونه
ممنون از شما.
نقل قول:
رامین مرادینقل قول: خطای Object cannot be cast from DBNull to other types
این رو چک کن
ممنون درست شد.
اما من تو کمبوباکسم سه تا آیتم دارم که یکسری اطلاعات با انتخاب هرکدام، تو دیتاگرید لود میشه و جمع دوتا ستون دیتاگرید هم در لیبلهای مخصوص نمایش داده میشه. الان اتفاقی که می افته اینه که برای آیتم های دوم و سوم، ستوها جمع گرفته میشه اما برای آیتم اول مقدار آیتم قبلی رو نشون میده.
یعنی اگه از آیتم سوم برم به آیتم اول، مقدار آیتم سوم رو برای آیتم اول نمایش میده. اگه از آیتم دوم برم، مقدار آیتم دوم رو برای آیتم اول نشون میده
نقل قول: خطای Object cannot be cast from DBNull to other types
نقل قول:
نوشته شده توسط
Iman7228
ممنون از شما.
ممنون درست شد.
اما من تو کمبوباکسم سه تا آیتم دارم که یکسری اطلاعات با انتخاب هرکدام، تو دیتاگرید لود میشه و جمع دوتا ستون دیتاگرید هم در لیبلهای مخصوص نمایش داده میشه. الان اتفاقی که می افته اینه که برای آیتم های دوم و سوم، ستوها جمع گرفته میشه اما برای آیتم اول مقدار آیتم قبلی رو نشون میده.
یعنی اگه از آیتم سوم برم به آیتم اول، مقدار آیتم سوم رو برای آیتم اول نمایش میده. اگه از آیتم دوم برم، مقدار آیتم دوم رو برای آیتم اول نشون میده
خواهش میکنم. منم اینو از همینجا توسط دوستان یاد گرفتم.
این کد رو هم بیزحمت چک کنید. در صورت null بودن مقدار صفر رو محاسبه میکنه(البته نمیدونم این مقداری که من میذارم مناسب کار شما هست یا نه )
private void BindGrid()
{
//پر کردن دیتاگرید
DataTable DT = new DataTable();
SqlDataAdapter DAL1 = new SqlDataAdapter("SELECT * from tbl1", scn);
SqlDataAdapter DAL2 = new SqlDataAdapter("SELECT * from tbl2", scn);
DAL2.Fill(DT);
DAL1.Fill(DT);
dataGridView1.DataSource = DT;
BindingSource1.DataSource = DT;
}
private void sumdvg()
{
// عملیات جمع برای دو ستون دیتاگرید
int sumb = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if(this.dataGridView1.Rows[0].Cells[4].Value)!=DBNull.Value)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[4].Value) == false) //خطا در این خط اتفاق می افتد
{
sumb += Convert.ToInt32(row.Cells["cell4"].Value);
lblb.Text = sumb.ToString("n0");
}
}
else
{
sumb += 0;
lblb.Text = sumb.ToString("n0");
}
}
int sumd = new int();
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if(this.dataGridView1.Rows[0].Cells[5].Value)!=DBNull.Value)
{
if (Convert.ToBoolean(this.dataGridView1.Rows[0].Cells[5].Value) == true)
{
sumd += Convert.ToInt32(row.Cells["cell5"].Value);
}
}
else
{
sumb += 0;
lblb.Text = sumb.ToString("n0");
}
}
lbld.Text = sumd.ToString("n0");
}
private void txtb_SelectedValueChanged(object sender, EventArgs e)
{
BindGrid();
BindingSource1.Filter = string.Format("bnk LIKE '%{0}%'", txtb.Text);
sumdvg();
}
نقل قول: خطای Object cannot be cast from DBNull to other types
متاسفانه جواب نمیده.
مشکل پابرجاست
نقل قول: خطای Object cannot be cast from DBNull to other types
BindGrid();
BindingSource1.Filter = string.Format("bnk LIKE '%{0}%'", txtb.Text);
sumdvg();
شما این کد رو باید درتمام کومبوها تکرار کنید. این کارو کردید؟ کاش پروژتون رو آپلود کنید
نقل قول: خطای Object cannot be cast from DBNull to other types
ببینین، من یه کمبو دارم که با دو تا آیتم هاش، اطلاعات از دوتا جدول فراخونی میشه.
الان دسترسی ندارم به پروژه.در اسرع وقت نمونشو میزارم.ممنون
1 ضمیمه
نقل قول: خطای Object cannot be cast from DBNull to other types
نقل قول:
نوشته شده توسط
Iman7228
ببینین، من یه کمبو دارم که از دو تا آیتم هاش از دوتا جدول فراخونی میشه.
الان دسترسی ندارم به پروژه.در اسرع وقت نمونشو میزارم.ممنون
اینم نمونه کاری که میخام انجام بدم
نقل قول: خطای Object cannot be cast from DBNull to other types
بایندینگ سورس را به دیتاتیبل متصل نکردید. به صورت زیر عمل کنید
private void BindGrid()
{
//پر کردن دیتاگرید
DataTable dt = new DataTable();
SqlDataAdapter dal1 = new SqlDataAdapter("SELECT * from TBL2 union SELECT * from TBL1", _con);
dal1.Fill(dt);
dataGridView1.AutoGenerateColumns = false;
_bindingSource1.DataSource = dt;
dataGridView1.DataSource = _bindingSource1;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Cells[0].Value = i + 1;
}
}
در رویداد تغییر کمبوباکس، اگر از Text استفاده کنید مقدار قبلی را به شما خواهد داد. برای بدست آوردن مقدار جدید از SelectedText یا پراپرتیهای مشابه استفاده کنید
private void CMBBank_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
_bindingSource1.Filter = string.Format("bank LIKE '%{0}%'", CMBBank.SelectedText);
Sumdvg();
}
نقل قول: خطای Object cannot be cast from DBNull to other types
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
بایندینگ سورس را به دیتاتیبل متصل نکردید. به صورت زیر عمل کنید
private void BindGrid()
{
//پر کردن دیتاگرید
DataTable dt = new DataTable();
SqlDataAdapter dal1 = new SqlDataAdapter("SELECT * from TBL2 union SELECT * from TBL1", _con);
dal1.Fill(dt);
dataGridView1.AutoGenerateColumns = false;
_bindingSource1.DataSource = dt;
dataGridView1.DataSource = _bindingSource1;
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
dataGridView1.Rows[i].Cells[0].Value = i + 1;
}
}
در رویداد تغییر کمبوباکس، اگر از Text استفاده کنید مقدار قبلی را به شما خواهد داد. برای بدست آوردن مقدار جدید از SelectedText یا پراپرتیهای مشابه استفاده کنید
private void CMBBank_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
_bindingSource1.Filter = string.Format("bank LIKE '%{0}%'", CMBBank.SelectedText);
Sumdvg();
}
ممنون ولی جواب نمیده
نقل قول: خطای Object cannot be cast from DBNull to other types
اسکریپت جدول ها را همراه پروژه باید قرار بدید تا بتوانیم تست کنیم.