标题:请大伙看看这个鬼问题
只看楼主
chenhao19860
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:86
专家分:151
注 册:2010-3-15
结帖率:66.67%
已结贴  问题点数:20 回复次数:7 
请大伙看看这个鬼问题
con = new System.Data.OleDb.OleDbConnection(sqlconnectionstr);
            con.Open();
            cmd = new System.Data.OleDb.OleDbCommand("select * from accounts", con);
            dd = new System.Data.OleDb.OleDbDataAdapter(, con);
            ds = new DataSet();
            dd.Fill(ds, "accounts");
            dataGridView1.DataSource = ds.Tables[0].DefaultView;
            dataGridView1.Columns[0].HeaderCell.Value = "账务编码";
            dataGridView1.Columns[1].HeaderCell.Value = "银行编码";
            dataGridView1.Columns[2].HeaderCell.Value = "员工编码";
            dataGridView1.Columns[3].HeaderCell.Value = "账务大类编码";
            dataGridView1.Columns[4].HeaderCell.Value = "账务小类编码";
            dataGridView1.Columns[5].HeaderCell.Value = "账务类型";
            dataGridView1.Columns[6].HeaderCell.Value = "金额";
            dataGridView1.Columns[7].HeaderCell.Value = "账务日期";
            dataGridView1.Columns[8].HeaderCell.Value = "备注";
           // MessageBox.Show(this.dataGridView1["payments", 0].Value.ToString());
            for (int k = 0; k < ds.Tables[0].Rows.Count; k++)
            {
                if (this.dataGridView1.Rows[k]["payments"].ToString() == "收入")//运行时这个给了提示未将对象引用设置到对象的实例。
                    sumin += Convert.ToDouble(this.dataGridView1["price", k].Value.ToString());
                else
                    sumout += Convert.ToDouble(this.dataGridView1["price", k].Value.ToString());
            }
            this.label9.Text = Convert.ToString(sumin - sumout);
            this.label10.Text = Convert.ToString(sumin);
            this.label11.Text = Convert.ToString(sumout);
搜索更多相关主题的帖子: accounts 
2011-03-22 16:33
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
得分:5 
表accounts没有payments这一列?

站在春哥的肩膀上
2011-03-22 16:46
chenhao19860
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:86
专家分:151
注 册:2010-3-15
得分:0 
回复 2楼 xydddaxia
有这个字段payments,更晕的是加MessageBox.Show(this.dataGridView1["payments", 0].Value.ToString());他就不提示。

[ 本帖最后由 chenhao19860 于 2011-3-22 17:28 编辑 ]
2011-03-22 17:22
wangnannan
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:87
帖 子:2545
专家分:9359
注 册:2007-11-3
得分:5 
LZ可以仔细检查下dataGridView是否存在名为payments这一列

出来混,谁不都要拼命的嘛。 。拼不赢?那就看谁倒霉了。 。有机会也要看谁下手快,快的就能赢,慢。 。狗屎你都抢不到。 。还说什么拼命?
2011-03-22 19:52
chenhao19860
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:86
专家分:151
注 册:2010-3-15
得分:0 
回复 4楼 wangnannan
肯定有payments这个字段,show都有值
2011-03-23 11:03
qubo1982
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:367
专家分:1132
注 册:2009-3-18
得分:5 
楼主可以看一下,在表的设计里面,这一列是否允许出现空值
空值是不能与string比较的
2011-03-23 11:07
chenhao19860
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:86
专家分:151
注 册:2010-3-15
得分:0 
终于解决了,是因为越界的问题,列数是从0开始至datagridview。rows。count-1就对了,谢谢各位的关注!
2011-03-23 11:23
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
得分:0 
回复 7楼 chenhao19860
不是count-1的原因,是因为datagridview的AllowUserToAddRows被设为true而多了一个空行造成的,那行要特殊处理,DataRow为False

站在春哥的肩膀上
2011-03-23 16:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-334425-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053141 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved