PDA

View Full Version : نحوه محاسبه یک ردیف در datagridview



juza66
چهارشنبه 23 مهر 1393, 09:41 صبح
سلام


من نحوه محاسبه در دیتاگرید رو اینجوری انجام می دم


try
{

da = new OleDbDataAdapter("Select * from tblbimar", con);
ds.Tables.Clear();
con.Open();
da.Fill(ds, "tblbimar");
dataGridView1.Rows.Clear();
double summ = default(double);
for (int i = 0; i <= ds.Tables["tblbimar"].Rows.Count - 1; i++)
{
dataGridView1.Rows.Add();
for (int j = 0; j <= 11; j++)
{
dataGridView1[j, i].Value = ds.Tables["tblbimar"].Rows[i][j].ToString();

}

summ += Convert.Todouble(dataGridView1["baghi", i].Value);
txtdaryafti.Text = summ.ToString("0,#");


}


this.txtdaryafti.ForeColor = System.Drawing.Color.Black;
con.Close();


}


catch
{


}


نتیجه جمع ستون آخر در TextBox



summ += Convert.Todouble(dataGridView1["baghi", i].Value);
txtdaryafti.Text = summ.ToString("0,#");


مشکل اینجاست که ستون خالی باشه محاسبه متوقف میشه؟!


آیا در اینجا نحوه کدنویسی درسته؟!



summ += Convert.Todouble(dataGridView1["baghi", i].Value);



عکسی از محیط برنامه موقعی که یکی از فیلدهای ستون خالی باشه ..
124538

تشکر

gerdioz
چهارشنبه 23 مهر 1393, 10:11 صبح
try
{

da = new OleDbDataAdapter("Select * from tblbimar", con);
ds.Tables.Clear();
con.Open();
da.Fill(ds, "tblbimar");
dataGridView1.Rows.Clear();
double summ = default(double);
for (int i = 0; i <= ds.Tables["tblbimar"].Rows.Count - 1; i++)
{
dataGridView1.Rows.Add();
for (int j = 0; j <= 11; j++)
{

dataGridView1[j, i].Value = ds.Tables["tblbimar"].Rows[i][j].ToString();

}
if(dataGridView1["baghi", i].Value!=null)
summ += Convert.Todouble(dataGridView1["baghi", i].Value);
txtdaryafti.Text = summ.ToString("0,#");


}


this.txtdaryafti.ForeColor = System.Drawing.Color.Black;
con.Close();


}


catch
{


}

juza66
چهارشنبه 23 مهر 1393, 10:17 صبح
تشکر، منم همچین راه حلی به کار بردم
ولی باز به خطی که مقادیر اون صفر هستن میرسه فراخوانی دیتاگرید متوقف میشه ..!!

gerdioz
چهارشنبه 23 مهر 1393, 10:28 صبح
خب ی کاری کن ابتدا دیتا گرید رو بار گذاری کن بعد با ی حلقه جمع رو محاسبه کن

juza66
چهارشنبه 23 مهر 1393, 10:37 صبح
منظورتون اینجوریه .. :)

لود دیتاگرید


try
{

da = new OleDbDataAdapter("Select * from tblbimar", con);
ds.Tables.Clear();
con.Open();
da.Fill(ds, "tblbimar");
dataGridView1.Rows.Clear();
double summ = default(double);
for (int i = 0; i <= ds.Tables["tblbimar"].Rows.Count - 1; i++)
{
dataGridView1.Rows.Add();
for (int j = 0; j <= 11; j++)
{

dataGridView1[j, i].Value = ds.Tables["tblbimar"].Rows[i][j].ToString();

}
con.Close();


}


catch
{


}

جمع ستون ها آخر


for (int i = 0; i < ds.Tables["tblbimar"].Rows.Count; i++)
{

if(dataGridView1["baghi", i].Value!=null)
summ += Convert.Todouble(dataGridView1["baghi", i].Value);
txtdaryafti.Text = summ.ToString("0,#");

}

بازهم نمیشه :(

بازم برای محاسبه گیر میزنه ..

hamid_hr
چهارشنبه 23 مهر 1393, 10:55 صبح
if رو اینطوری تغییر بده

if (dataGridView1["baghi", i].Value != null)
{
double dbl;
double.TryParse(dataGridView1["baghi", i].Value.toString(), out dbl);
summ += dbl;
}
txtdaryafti.Text = summ.ToString("0,#");

juza66
چهارشنبه 23 مهر 1393, 10:59 صبح
تشکر

ولی در این خط به string گیر میده


double.TryParse(dataGridView1["baghi", i].Value.toString(), out dbl);

juza66
چهارشنبه 23 مهر 1393, 11:02 صبح
تشکر دوستان

کدی که آقای hamid_hr (http://barnamenevis.org/member.php?25531-hamid_hr) گذاشتن درست بود من اشتباه نوشتم :))

juza66
چهارشنبه 23 مهر 1393, 11:07 صبح
از آقا gerdioz (http://barnamenevis.org/member.php?87770-gerdioz) هم تشکر ممنون که پاسخ دادین

مهرداد صفا
پنج شنبه 24 مهر 1393, 15:27 عصر
سلام دوست من.
نیاز نیست کار رو سخت کنید. به راحتی:


da.SelectCommand.CommandText="select sum(baghi) from tblBimar";
textbox.Text=da.SelectCommand.ExecuteScalar().ToSt ring();

RIG000
پنج شنبه 24 مهر 1393, 15:46 عصر
سلام دوست من.
نیاز نیست کار رو سخت کنید. به راحتی:


da.SelectCommand.CommandText="select sum(baghi) from tblBimar";
textbox.Text=da.SelectCommand.ExecuteScalar().ToSt ring();
این میاد کلا تعداد مقدار های یه ستون رو جمع میزنه .
اما http://www.w3schools.com/sql/trysql.asp?filename=trysql_func_sum
کلا" 518 رکورد داره ... فکر نکنم مقدارش به این 12743 برسه :( . دیگه دوست دارم برم دستی حساب کنم