奇怪的问题,同时执行时数据出错!求助~!附源码
protected void Page_Load(object sender, EventArgs e){
if (UserID == "" || Session["UserID"] == null || Session["UserID"].ToString() == "")
{
UserID = "";
Parent.Page.Response.Redirect("../index.aspx", true);
}
if (!IsPostBack)
{
Ck_Date = ""; Dep_ID = ""; user_id = ""; Dep_Class = "";
btn4_text = "init"; btnid = "";
Fill_Year();
Fill_Month();
Panel2.Visible = false; Panel3.Visible = false; Panel4.Visible = false;
Fill_dep();//填充部门列表
}
Dep_ID = drp_dep.SelectedValue; //部门ID
string str = Drp_year.SelectedValue + "-" + Drp_month.SelectedValue + "-1";
Ck_Date = Convert.ToDateTime(str).ToString(); //年月赋值
Fill_Table();//主统计表
}
protected void Fill_Table()//填充部门巡视统计表
{
//AjaxMessage.Show(UpdatePanel1, this, drp_dep.SelectedItem.Text.Trim()); return;
Table1.Rows.Clear();
TableRow tr;
TableHeaderCell th;
TableCell tc;
tr = new TableRow();
#region 表格头部
th = new TableHeaderCell();
th.Text = drp_dep.SelectedItem.Text + " 巡视统计表(" + Convert.ToDateTime(Ck_Date).Year.ToString() + "年" + Convert.ToDateTime(Ck_Date).Month.ToString() + "月份)";
th.ColumnSpan = 8;
tr.Cells.Add(th);
Table1.Rows.Add(tr);
tr = new TableRow();
th = new TableHeaderCell();
th.Text = "ID";//0
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "姓名";//1
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "职务";//3
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "岗点";//4
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "检查点";//5
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "夜班";//6
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "白班";//
tr.Cells.Add(th);
th = new TableHeaderCell();
th.Text = "作业数量";//8
tr.Cells.Add(th);
Table1.Rows.Add(tr);
#endregion
DataSet dst;
if (Dep_ID != "全部")
{
dst = DBCommand.ExecuteDataSet("select ID,UserName from tb_user where (Ex_List=2 or Ex_List=3) AND ID_ks = " + Dep_ID, "tab1");
}
else
{
dst = DBCommand.ExecuteDataSet("select ID,UserName from tb_user where (Ex_List=2 or Ex_List=3) AND ID>4", "tab1");
}
int nums = dst.Tables[0].Rows.Count;
SqlConnection conn = DBConnection.CreateConnection();
SqlCommand cmd1 = new SqlCommand("", conn);
LinkButton lkbtn; string lx_nums = "";
for (int i = 0; i < nums; i++)
{
user_id = dst.Tables[0].Rows[i]["ID"].ToString();
tr = new TableRow();
tr.HorizontalAlign = HorizontalAlign.Center;
#region 填充表格内容
tc = new TableCell(); tc.Text = user_id; tr.Cells.Add(tc); //ID
tc = new TableCell(); tc.Text = dst.Tables[0].Rows[i]["UserName"].ToString(); tr.Cells.Add(tc);//姓名
tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "B" + user_id;
lx_nums = Get_Date2(user_id, cmd1); //***********根据get_date2获取此人的作业次数,以下同
lkbtn.Text = lx_nums + "次";
if (Convert.ToInt32(lx_nums) < LX.Get_Num2(Dep_ID))//*************没有达到指标显示红色
{
lkbtn.ForeColor = System.Drawing.Color.Red;
tc.ForeColor = System.Drawing.Color.Red;
}
lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);
tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "C" + user_id;
lx_nums = Get_Date3(user_id, cmd1);
lkbtn.Text = lx_nums + "次";
if (Convert.ToInt32(lx_nums) < LX.Get_Num3(Dep_ID))
{
lkbtn.ForeColor = System.Drawing.Color.Red;
tc.ForeColor = System.Drawing.Color.Red;
}
lkbtn.Text = lx_nums + "次";
lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);
tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "D" + user_id;
lx_nums = Get_Date4(user_id, cmd1);
lkbtn.Text = lx_nums + "次";
if (Convert.ToInt32(lx_nums) < LX.Get_Num4(Dep_ID))
{
lkbtn.ForeColor = System.Drawing.Color.Red;
tc.ForeColor = System.Drawing.Color.Red;
}
lkbtn.Text = lx_nums + "次";
lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);
tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "E" + user_id;
lx_nums = Get_Date5(user_id, cmd1);
lkbtn.Text = lx_nums + "次";
if (Convert.ToInt32(lx_nums) < LX.Get_Num5(Dep_ID))
{
lkbtn.ForeColor = System.Drawing.Color.Red;
tc.ForeColor = System.Drawing.Color.Red;
}
lkbtn.Text = lx_nums + "次";
lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);
tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "G" + user_id;
lx_nums = Get_Date7(user_id, cmd1);
lkbtn.Text = lx_nums + "次";
lkbtn.Text = lx_nums + "次";
lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);
tc = new TableCell(); lkbtn = new LinkButton(); lkbtn.ID = "F" + user_id;
lx_nums = Get_Date6(user_id, cmd1);
lkbtn.Text = lx_nums + "次";
if (Convert.ToInt32(lx_nums) < LX.Get_Num6(Dep_ID))
{
lkbtn.ForeColor = System.Drawing.Color.Red;
tc.ForeColor = System.Drawing.Color.Red;
}
lkbtn.Text = lx_nums + "次";
lkbtn.Click += new EventHandler(btn_Click); lkbtn.Attributes.Add("runat", "server"); tc.Controls.Add(lkbtn); tr.Cells.Add(tc);
#endregion
Table1.Rows.Add(tr);
}
cmd1.Dispose(); conn.Close(); conn.Dispose(); dst.Dispose();
}
说明:在切换drp_dep(部门)时,单机切换得到的数据总是对的,但当有两台机器同时查询,并“同时”切换不同部门时,数据出现了交叉,比如说A机器查询AD部门,B机器查询BD部门,A的正确结果一部门到了B查询结果,B的正确结果一部门到了A,一行六个数据有四五个数据都交叉了,不知道为什么,就是只要同时切换部门,数据就交叉 --------------------编程问答-------------------- 累加读取重复数据了吧!你开俩个IE DEBUG一下就知道问题了! --------------------编程问答-------------------- 应该不是累加读取的问题,user_id这个数据也有交叉的,就是说得到的表格数据和实际是不一致的,A切换部门后得到了B机器的数据,B得到了A机器的数据 --------------------编程问答-------------------- 建议用ds和dt一次性读入数据后在内存中操作试试 --------------------编程问答-------------------- 请问楼上的,怎么样一次性读入啊,我现在有点懵 --------------------编程问答-------------------- 忘记说了有一点,得到结果的数据中(就是产生交叉的数据)基本上都是随机读取数据库汇总而来,不是直接读数据表中的数据,lx_nums是读取数据库中的记录汇总得到的,这个数据有交叉,还有就是user_id是数据库表中的数据奇怪也交叉了
补充:.NET技术 , C#