问题描述
红色字体部分报错,未将对象引用设置到对象的实例privatevoidtoolStripButton3_Click(objectsender,EventArgse){if(this.dataGridView1.Rows.Count<0){MessageBox.Show("没有数据!");return;}DataTabledata=(DataTable)dataGridView1.DataSource;stringtmp=DateTime.Now.ToString("yyyyMMdd");for(inti=0;i<data.Rows.Count;i++){data.Rows[i]["系统编号"]=user.Py+"-"+tmp+"-"+CheckMaxBH();}}方法:publicStringCheckMaxBH(){stringtmp=DateTime.Now.ToString("yyyyMMdd");stringsql=string.Format("selectmax(substring(系统编号,15,len(系统编号)))系统编号fromPurchasingListwhere系统编号like"+"'%{0}%'",tmp);DBHelperdbhelper=newDBHelper();SqlCommandcmd=newSqlCommand(sql,dbhelper.Connection);dbhelper.OpenConnection();varva=cmd.ExecuteScalar();if(va==null){return"001";}else{intva1=Convert.ToInt32(va)+1;stringva2=va1.ToString("000");returnva2;}
解决方案
解决方案二:
依次检查data.Rows[i]data.Rows[i]["系统编号"]是否为null值,可能值是null
解决方案三:
意思就是没有对象,空值啊老兄,设断点,一步一步看吧,看是哪一步出问题了
解决方案四:
user.Py或者方法CheckMaxBH返回值是否为null?
解决方案五:
data是否存在系统编号的列名?
解决方案六:
到底是data未实例化还是user未实例化啊..
解决方案七:
data.Rows[i]["系统编号"]=user.Py+"-"+tmp+"-"+CheckMaxBH();这里涉及到的变量太多了data不可能是null,那么data.Rows应该也不会是null错误只可能是由于右边字符串拼接,null值要隐式转换为字符串引起的依次检查user,user.Py,tmp,CheckMaxBH()到底是什么
解决方案八:
for(inti=0;i<data.Rows.Count;i++)如果data是null,这里早抛错误了,不会走进去
解决方案九:
我觉得很大可能是tmp这东西没赋值因为CheckMaxBH()这个函数里也用到了tmp你是否把全局变量和局部变量弄混了??
解决方案十:
调试看状态,好伐!或者等报异常看堆栈
解决方案十一:
tmp应该没错,前面定义的tmp已经赋值成功,全局变量局部变量都没关系了。DataTabledata=(DataTable)dataGridView1.DataSource;datagridview不会就没东西吧··?数据库那边应该也没问题~~个人意见~