private void save()
{
try
{
int i = 0;
DataTable dt = (DataTable)this.dgvlist.DataSource;
this.dgvlist.DataSource = Dto.ToArray();
foreach (DataRow r in dt.Rows)
{
if (r.RowState == DataRowState.Modified)
{
int id = DataConverter.ToInt(r["id"]);
if (entity.inputdeptid > 0)
{
int userid = DataConverter.ToInt(r["userid"]);
Decimal moneys = DataConverter.ToDecimal(r["moneys"]);
String months = DataConverter.ToDateTime(r["months"]).ToString("yyyy-MM-dd");
String username = DataConverter.EyeNull(r["user_name"]);
if (entity.id > 0)
{
dal.UpdateData(entity.moneys, entity.months, entity.username);
}
}
else
{
//审核
dal.SaveApply2(id, 2);
}
i++;
}
}
if (i > 0)
{
throw new Exception("更新了" + i.ToString() + "行记录!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
在dt.Rows出现未将对象引用设置到对象的实例 (System.NullReferenceException),要怎么将它判断不为空啊
private void Querydgvlist()//
{
string months = DataConverter.EyeNull(cbotime.SelectedValue);
string sql, err;
int deptid = DataConverter.ToInt(cbodept.SelectedValue);
DataTable dt = new DataTable();
sql = string.Format(@"
SELECT a.months, b.dept_code ,b.dept_name ,
c.user_code , isnull(c.user_name,username) as user_name,a.moneys
,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime,a.iscw
FROM {0} a
inner join {1} b on a.deptid=b.deptid
left outer join {2} c on c.userid=a.userid
where a.months='{3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
if (entity.deptid > 0)
{
sql += " and a.inputdeptid=" + entity.deptid;
}
sql += " order by c.user_code ";
dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);
if (err.Length > 0)
{
MessageBox.Show(err);
return;
}
if (dt.Select("iscw=0").Length > 0 && deptid > 0)
{
btnsubmit.Show();
}
this.dgvlist.DataSource = dt;
dgvlist.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
lblist.Text = "上报明细:" + dt.Rows.Count.ToString() + "行, 人数:" + dt.Rows.Count.ToString() + ",科室总奖金:" + DataConverter.ToDecimal(dt.Compute("sum(moneys)", "")).ToString("") + "元";
if (entity.deptid > 0)
{
this.dgvlist.ReadOnly = false;
}
}
这个代码段会出现public_dept_list 是什么原因啊?
20 个解决方案
#1
dt对象为null吧,Debug模式调试下代码。简单的用if语句判断一下,不懂或者没用过去网上搜搜。
#2
dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err); 调试下这句看看dt对象。。。
#3
dt为null了吧
#4
查询失败了
#5
对啊,我找到错误了,就是不知道怎么改"\r\n SELECT a.months, b.dept_code ,b.dept_name ,\r\n c.user_code , isnull(c.user_name,a.username) as user_name,a.moneys\r\n ,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime\r\n FROM Records_Moneys a \r\n inner join public_dept_list b on a.deptid=b.deptid\r\n left outer join public_user_list c on c.userid=a.userid \r\n where a.months='' and a.iscw=2 \r\n order by c.user_code "
是不是把那个 inner join public_dept_list b on a.deptid=b.deptid\r\n 改为 inner join tbdeptlist b on a.deptid=b.deptid\r\n? tbdeptlist 是数据库表名,我不会join的使用
是不是把那个 inner join public_dept_list b on a.deptid=b.deptid\r\n 改为 inner join tbdeptlist b on a.deptid=b.deptid\r\n? tbdeptlist 是数据库表名,我不会join的使用
#6
查询什么表,是由业务需要决定的,岂可是你能随随便便就换一个的?
查看数据库的错误信息,他会告诉你哪儿写的不合适
查看数据库的错误信息,他会告诉你哪儿写的不合适
#7
在DataTable dt = (DataTable)this.dgvlist.DataSource; 后增加如下代码
if(dt==null)
return;
或if (dt!=null)
{
你的DataTable dt = (DataTable)this.dgvlist.DataSource;这句后面的代码。
}
if(dt==null)
return;
或if (dt!=null)
{
你的DataTable dt = (DataTable)this.dgvlist.DataSource;这句后面的代码。
}
#8
最好把DataTable dt=new DataTable();设置成全局的
我之前也遇到过类似的问题,很蛋疼
我之前也遇到过类似的问题,很蛋疼
#9
可是如果我把a,b,c的指示的数据表改了不就行了吗?
#10
a,b,c 不是什么指示的数据表
而是你给数据表取的别名(目的是少按几个键)
换了表,字段名也要换,如果所有的表都是一样的,那么要弄那些表做什么?
而是你给数据表取的别名(目的是少按几个键)
换了表,字段名也要换,如果所有的表都是一样的,那么要弄那些表做什么?
#11
好吧,最后把数据表的名字改了就有了, where =''这句话的意思是a.months为空,还是a.months是任意一个值?
#12
where a.months='{3}'
#13
string.Format(@" ....
where a.months=' {3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
where a.months=' {3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
#14
不对啊,那个是逗号, where a.months='{3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
这个的意思不是在表Tables.tbDeptList, Tables.tbuser,中匹配条件后返回months吗?
#15
噢,还真是逗号,眼花了
即:
{0} 替换成 TableName 的值
{1} 替换成 Tables.tbDeptList 的值
{2} 替换成 Tables.tbuser 的值
{3} 替换成 months 的值
并没有额外的功能
sql = string.Format(@"只是格式化一个字符串,将模板中的 {0},{1}...依次用后边的参数替换
SELECT a.months, b.dept_code ,b.dept_name ,
c.user_code , isnull(c.user_name,username) as user_name,a.moneys
,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime,a.iscw
FROM {0} a
inner join {1} b on a.deptid=b.deptid
left outer join {2} c on c.userid=a.userid
where a.months='{3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
即:
{0} 替换成 TableName 的值
{1} 替换成 Tables.tbDeptList 的值
{2} 替换成 Tables.tbuser 的值
{3} 替换成 months 的值
并没有额外的功能
#16
蟹蟹
#17
if(dt != null)在进入循环
#18
if(dt!=null && dt.rows.count>1)
{
}
{
}
#19
private void FrmRecords_Money_Load(object sender, EventArgs e)
{
try
{
string listname = Share1.deptid + Share1.dept_code + Share1.dept_name;
dal.Load(entity.deptid, listname);
if (inputdeptid > 0)//判断是否为财务科?
{
btnImport.Show();
btnsetuser2.Show();
btnsetuser.Show();
btndelete.Show();
btnsave.Show();
tabControl1.TabPages.Remove(tabPage3);//使tabControl1不显示
tabControl1.TabPages.Remove(tabPage5);
}
else
{
btnImport.Hide();
btnsetuser2.Hide();
btnsetuser.Hide();
btndelete.Hide();
btnsave.Hide();
DataRow r;
r = dt.NewRow();
r["deptid"] = 0;
r["listname"] = "所有";
dt.Rows.InsertAt(r, 0);
}
cbodept.DataSource = dt;
cbodept.DisplayMember = dt.Columns["listname"].ToString();//未将对象引用到实例
cbodept.ValueMember = dt.Columns["deptid"].ToString();
cbodept.SelectedValue = inputdeptid;
entity.RecordUser = Share1.user_code + Share1.user_name;
DataTable dttime = DataConverter.GetMonthsList(DataConverter.ToDateTime("2018-01-01"), DateTime.Now.Date);
cbotime.DataSource = dttime;
cbotime.DisplayMember = dttime.Columns["monthsname"].ToString();
cbotime.ValueMember = dttime.Columns["months"].ToString();
cbotime.SelectedValue = DateTime.Now.AddMonths(-2).ToString("yyyy-MM-01");//两个月之内的记录
bselect = true;
btnQuery_Click(sender, e);
}
catch (Exception ex)
{
ThisHQ.Base.Base.SuMsg(ex.Message);
}
}
public List<DataContract.ClinicInCharge.Records_Moneys> Load(int deptid,string listname)
{
string sql, err;
sql = string.Format(@"select deptid,dept_code + dept_name as listname
from {0} where isuse=1 and duty=1 ", Tables.tbDeptList);
sql += " order by dept_code";
DataTable dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);
SqlHelper.ExecuteSQL(ThisConn.sCono, sql, out err);
if (err.Length > 0)
{
throw new Exception(err);
}
return DataConverter.DataTableToIList<DataContract.ClinicInCharge.Records_Moneys>(dt).ToList();
}
我又出现这样子的问题了,这次是为什么啊,要求要将数据库语言保存到另外的类里面然后我又不可以了
#20
未将对象引用设置到实例
#21
#1
dt对象为null吧,Debug模式调试下代码。简单的用if语句判断一下,不懂或者没用过去网上搜搜。
#2
dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err); 调试下这句看看dt对象。。。
#3
dt为null了吧
#4
查询失败了
#5
对啊,我找到错误了,就是不知道怎么改"\r\n SELECT a.months, b.dept_code ,b.dept_name ,\r\n c.user_code , isnull(c.user_name,a.username) as user_name,a.moneys\r\n ,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime\r\n FROM Records_Moneys a \r\n inner join public_dept_list b on a.deptid=b.deptid\r\n left outer join public_user_list c on c.userid=a.userid \r\n where a.months='' and a.iscw=2 \r\n order by c.user_code "
是不是把那个 inner join public_dept_list b on a.deptid=b.deptid\r\n 改为 inner join tbdeptlist b on a.deptid=b.deptid\r\n? tbdeptlist 是数据库表名,我不会join的使用
是不是把那个 inner join public_dept_list b on a.deptid=b.deptid\r\n 改为 inner join tbdeptlist b on a.deptid=b.deptid\r\n? tbdeptlist 是数据库表名,我不会join的使用
#6
查询什么表,是由业务需要决定的,岂可是你能随随便便就换一个的?
查看数据库的错误信息,他会告诉你哪儿写的不合适
查看数据库的错误信息,他会告诉你哪儿写的不合适
#7
在DataTable dt = (DataTable)this.dgvlist.DataSource; 后增加如下代码
if(dt==null)
return;
或if (dt!=null)
{
你的DataTable dt = (DataTable)this.dgvlist.DataSource;这句后面的代码。
}
if(dt==null)
return;
或if (dt!=null)
{
你的DataTable dt = (DataTable)this.dgvlist.DataSource;这句后面的代码。
}
#8
最好把DataTable dt=new DataTable();设置成全局的
我之前也遇到过类似的问题,很蛋疼
我之前也遇到过类似的问题,很蛋疼
#9
可是如果我把a,b,c的指示的数据表改了不就行了吗?
#10
a,b,c 不是什么指示的数据表
而是你给数据表取的别名(目的是少按几个键)
换了表,字段名也要换,如果所有的表都是一样的,那么要弄那些表做什么?
而是你给数据表取的别名(目的是少按几个键)
换了表,字段名也要换,如果所有的表都是一样的,那么要弄那些表做什么?
#11
好吧,最后把数据表的名字改了就有了, where =''这句话的意思是a.months为空,还是a.months是任意一个值?
#12
where a.months='{3}'
#13
string.Format(@" ....
where a.months=' {3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
where a.months=' {3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
#14
不对啊,那个是逗号, where a.months='{3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
这个的意思不是在表Tables.tbDeptList, Tables.tbuser,中匹配条件后返回months吗?
#15
噢,还真是逗号,眼花了
即:
{0} 替换成 TableName 的值
{1} 替换成 Tables.tbDeptList 的值
{2} 替换成 Tables.tbuser 的值
{3} 替换成 months 的值
并没有额外的功能
sql = string.Format(@"只是格式化一个字符串,将模板中的 {0},{1}...依次用后边的参数替换
SELECT a.months, b.dept_code ,b.dept_name ,
c.user_code , isnull(c.user_name,username) as user_name,a.moneys
,a.userid,a.deptid,a.id,a.RecordUser,a.RecordTime,a.iscw
FROM {0} a
inner join {1} b on a.deptid=b.deptid
left outer join {2} c on c.userid=a.userid
where a.months='{3}'
", TableName, Tables.tbDeptList, Tables.tbuser, months);
即:
{0} 替换成 TableName 的值
{1} 替换成 Tables.tbDeptList 的值
{2} 替换成 Tables.tbuser 的值
{3} 替换成 months 的值
并没有额外的功能
#16
蟹蟹
#17
if(dt != null)在进入循环
#18
if(dt!=null && dt.rows.count>1)
{
}
{
}
#19
private void FrmRecords_Money_Load(object sender, EventArgs e)
{
try
{
string listname = Share1.deptid + Share1.dept_code + Share1.dept_name;
dal.Load(entity.deptid, listname);
if (inputdeptid > 0)//判断是否为财务科?
{
btnImport.Show();
btnsetuser2.Show();
btnsetuser.Show();
btndelete.Show();
btnsave.Show();
tabControl1.TabPages.Remove(tabPage3);//使tabControl1不显示
tabControl1.TabPages.Remove(tabPage5);
}
else
{
btnImport.Hide();
btnsetuser2.Hide();
btnsetuser.Hide();
btndelete.Hide();
btnsave.Hide();
DataRow r;
r = dt.NewRow();
r["deptid"] = 0;
r["listname"] = "所有";
dt.Rows.InsertAt(r, 0);
}
cbodept.DataSource = dt;
cbodept.DisplayMember = dt.Columns["listname"].ToString();//未将对象引用到实例
cbodept.ValueMember = dt.Columns["deptid"].ToString();
cbodept.SelectedValue = inputdeptid;
entity.RecordUser = Share1.user_code + Share1.user_name;
DataTable dttime = DataConverter.GetMonthsList(DataConverter.ToDateTime("2018-01-01"), DateTime.Now.Date);
cbotime.DataSource = dttime;
cbotime.DisplayMember = dttime.Columns["monthsname"].ToString();
cbotime.ValueMember = dttime.Columns["months"].ToString();
cbotime.SelectedValue = DateTime.Now.AddMonths(-2).ToString("yyyy-MM-01");//两个月之内的记录
bselect = true;
btnQuery_Click(sender, e);
}
catch (Exception ex)
{
ThisHQ.Base.Base.SuMsg(ex.Message);
}
}
public List<DataContract.ClinicInCharge.Records_Moneys> Load(int deptid,string listname)
{
string sql, err;
sql = string.Format(@"select deptid,dept_code + dept_name as listname
from {0} where isuse=1 and duty=1 ", Tables.tbDeptList);
sql += " order by dept_code";
DataTable dt = SqlHelper.QueryFromDatabase(ThisConn.sCono, sql, out err);
SqlHelper.ExecuteSQL(ThisConn.sCono, sql, out err);
if (err.Length > 0)
{
throw new Exception(err);
}
return DataConverter.DataTableToIList<DataContract.ClinicInCharge.Records_Moneys>(dt).ToList();
}
我又出现这样子的问题了,这次是为什么啊,要求要将数据库语言保存到另外的类里面然后我又不可以了
#20
未将对象引用设置到实例