string txt = "select userno from v_users where DepartmentNo='" + this.ddlpart1.SelectedValue.ToString() + "' AND WorkState='1' AND UserNo NOT IN(select UserNo from Dinner where Week='" + weeks + "' AND Year='" + this.DropDownList2.SelectedValue.ToString() + "' AND DepartmentNo='" + this.ddlpart1.SelectedValue.ToString() + "')";
SqlCommand cmd0 = new SqlCommand(txt, con);
SqlDataReader dr0=cmd0.ExecuteReader();
while (dr0.Read())
{
string where = "where Week='" + weeks + "' AND address='" + this.ddlplace.SelectedValue.ToString() + "' and Year='" + year + "' AND DepartmentNo='" + this.ddlpart1.SelectedValue.ToString() + "' and UserNo IN('" + dr0["userno"].ToString() + "' )";
//判断订餐周次是否订下周的餐
if (dt.AddDays(7) < System.DateTime.Now)
{
Response.Write("<script>alert('請不要訂下周之前的餐!');</script>");
return;
}
else
{
//////////////////////////////////////////////////////////////////////////
string text = @"insert into Dinner(IDCardNo,UserNo,DepartmentNo,Region,DinnerDate,Year,Week,BookMorningCheck0,BookNoonCheck0,BookEveningCheck0,BookMorningCheck1,BookNoonCheck1,BookEveningCheck1,BookMorningCheck2,BookNoonCheck2,BookEveningCheck2,BookMorningCheck3,BookNoonCheck3,BookEveningCheck3,BookMorningCheck4,BookNoonCheck4,BookEveningCheck4,BookMorningCheck5,BookNoonCheck5,BookEveningCheck5,BookMorningCheck6,BookNoonCheck6,BookEveningCheck6,Address) Select CardNo,UserNo ,DepartmentNo, Region,'" + dt.ToShortDateString() + "'," + year.ToString() + "," + weeks.ToString() + ",0,0,0," +//周日
morning + "," + noon + "," + evening + "," +//周1
morning + "," + noon + "," + evening + "," +//周2
morning + "," + noon + "," + evening + "," +//周3
morning + "," + noon + "," + evening + "," +//周4
morning + "," + noon + "," + evening + "," +//周5
morning + "," + noon + "," + evening + ",'" +//周6
this.ddlplace.SelectedValue.ToString() + "' " + //就餐地點
"FROM V_Users WHERE DepartmentNo=@txtpartmentno AND WorkState='1' AND UserNo IN('"+dr0["userno"].ToString()+"')"; SqlCommand cmd = new SqlCommand(text, con);
cmd.Parameters.Add("@txtpartmentno", SqlDbType.NVarChar, 50);
cmd.Parameters["@txtpartmentno"].Value = this.ddlpart1.SelectedValue.ToString();
cmd.ExecuteNonQuery();
……(后面的不写了)
出现错误,最后的cmd.ExecuteNonQuery();提示有未关闭的dr.read
原因应该是insert语句中条件使用的dr0["userno"].ToString(),如果我关闭,再读下一笔记录的时候会出现错误
SqlCommand cmd0 = new SqlCommand(txt, con);
SqlDataReader dr0=cmd0.ExecuteReader();
while (dr0.Read())
{
string where = "where Week='" + weeks + "' AND address='" + this.ddlplace.SelectedValue.ToString() + "' and Year='" + year + "' AND DepartmentNo='" + this.ddlpart1.SelectedValue.ToString() + "' and UserNo IN('" + dr0["userno"].ToString() + "' )";
//判断订餐周次是否订下周的餐
if (dt.AddDays(7) < System.DateTime.Now)
{
Response.Write("<script>alert('請不要訂下周之前的餐!');</script>");
return;
}
else
{
//////////////////////////////////////////////////////////////////////////
string text = @"insert into Dinner(IDCardNo,UserNo,DepartmentNo,Region,DinnerDate,Year,Week,BookMorningCheck0,BookNoonCheck0,BookEveningCheck0,BookMorningCheck1,BookNoonCheck1,BookEveningCheck1,BookMorningCheck2,BookNoonCheck2,BookEveningCheck2,BookMorningCheck3,BookNoonCheck3,BookEveningCheck3,BookMorningCheck4,BookNoonCheck4,BookEveningCheck4,BookMorningCheck5,BookNoonCheck5,BookEveningCheck5,BookMorningCheck6,BookNoonCheck6,BookEveningCheck6,Address) Select CardNo,UserNo ,DepartmentNo, Region,'" + dt.ToShortDateString() + "'," + year.ToString() + "," + weeks.ToString() + ",0,0,0," +//周日
morning + "," + noon + "," + evening + "," +//周1
morning + "," + noon + "," + evening + "," +//周2
morning + "," + noon + "," + evening + "," +//周3
morning + "," + noon + "," + evening + "," +//周4
morning + "," + noon + "," + evening + "," +//周5
morning + "," + noon + "," + evening + ",'" +//周6
this.ddlplace.SelectedValue.ToString() + "' " + //就餐地點
"FROM V_Users WHERE DepartmentNo=@txtpartmentno AND WorkState='1' AND UserNo IN('"+dr0["userno"].ToString()+"')"; SqlCommand cmd = new SqlCommand(text, con);
cmd.Parameters.Add("@txtpartmentno", SqlDbType.NVarChar, 50);
cmd.Parameters["@txtpartmentno"].Value = this.ddlpart1.SelectedValue.ToString();
cmd.ExecuteNonQuery();
……(后面的不写了)
出现错误,最后的cmd.ExecuteNonQuery();提示有未关闭的dr.read
原因应该是insert语句中条件使用的dr0["userno"].ToString(),如果我关闭,再读下一笔记录的时候会出现错误
解决方案 »
- 谁干的?有蛋蛋说句话,没的算了。
- vb使用水晶报表XI时,当有参数字段时,出现"Invaild TLV "错误?
- 请问如何将内容写到剪切版?
- 关于数据库连接错误的捕获与处理
- ===VB+SQL问题:将数据类型转换为datetime出错?在线等===
- 为什么MDI窗体中打开MDIChild时看不到?
- 请教各位老师,如何在form窗体最小化时,最小化图标显示在右下角
- 急!!!!!!请大侠们帮忙(在线等!!!)
- VB中如何调用VC编写的dll?
- 为什么&hFF00表示的是-256,应该是65280才对啊?
- Set aa = vDoc.getElementsByTagName("div")(i)什么意思啊
- 求一图片压缩函数
楼主的这种情况是在读取数据的同时还要操作数据库,有两办法
1、再打开一个连接进行保存操作
2、将上面的数据读取到DataSet中另外,你这里的代码
Response.Write(" <script>alert('請不要訂下周之前的餐!'); </script>");
return;
没关闭SqlDataReader之前就reutrn是不对的,
应该在return上面加上一句dr0.Close();使用DataReader一定要注意,用完就样,一定要关闭。